一个面向实验语音学、声音分析与 Web 音频技术的个人开源项目。
起点:一个实时语谱图工具的重新思考

最初的项目灵感来自开源项目 Spectro。原项目主要解决的是在浏览器中实时生成音频语谱图的问题:通过麦克风或本地音频输入,利用 Web Audio API、FFT 与 GPU 渲染实现低延迟可视化。
然而,对于实验语音学研究而言,仅仅显示一张动态语谱图仍然是不够的。
语音研究者真正关心的是:
- 基频(F0)如何变化?
- 共振峰(Formants)如何反映元音质量?
- 音强曲线如何描述发声强弱?
- 宽带语谱与窄带语谱分别能观察什么?
- 数字音频信号如何对应真实的发声过程?
因此,Spectro Pro 逐渐从一个“语谱图播放器”发展为一个面向语音分析的 Web 实验平台。
从 Spectro 到 Spectro Pro

原始 Spectro 项目专注于实时性能:
- 音频分帧
- Window 函数处理
- FFT 频谱计算
- Web Worker 并行计算
- WebGL 高性能渲染
Spectro Pro 保留了 Web 实时音频处理的核心,同时增加了实验语音学方向的功能设计。
核心功能
1. 宽带与窄带语谱切换
语谱图并不是只有一种观察方式。
宽带语谱(Broadband Spectrogram)
适合观察:
- 元音共振峰结构
- 辅音过渡
- 发音动作时间关系
较短窗口带来更好的时间分辨率。
窄带语谱(Narrowband Spectrogram)
适合观察:
- 基频周期
- 谐波结构
- 声带振动模式
较长窗口提供更好的频率分辨率。
这一设计参考了 Praat 等专业语音分析软件的工作流程。
2. F0、共振峰和音强可视化
未来版本将加入更多分析层:
- F0 曲线
- 半音(Semitone)显示
- Formant F1/F2/F3 轨迹
- Intensity 曲线
目标不是替代专业工具,而是在浏览器环境中提供一个快速、直观的探索工具。
3. 数字音频与声学世界之间的桥梁
开发过程中最大的挑战并不是 FFT 或 Canvas,而是如何连接两个不同的世界:
数字信号处理中,声音是一组采样点;
实验语音学中,声音又代表:
- 声带振动
- 舌位变化
- 口腔共鸣空间
- 发音动作时间结构
例如,dBFS 是数字系统中的电平单位,而 SPL 是物理声压单位,两者并不能简单等同。一个好的可视化工具需要帮助使用者理解这种转换关系。
技术路线
目前项目主要基于 Web 技术:
- TypeScript / JavaScript
- Web Audio API
- FFT 频谱分析
- WebGL 可视化
- 浏览器端实时计算
未来可能探索:
- WebAssembly 加速专业声学算法
- 浏览器端 Praat 类分析能力
- 云端项目管理与 AI 辅助分析
为什么选择 Web?
传统实验语音工具非常强大,例如 Praat 已经成为实验语音学领域的重要基础设施。
但桌面软件也存在一些限制:
- 安装成本
- 平台差异
- 数据共享困难
- 在线教学和展示不方便
Web 平台的优势在于:
打开浏览器,即可开始声音实验。
未来的目标是探索一种更开放的“Phonetics on Web”。
项目思考
Spectro Pro 并不是简单复制一个桌面语音分析软件,而是在探索:
实验语音学工具是否可以像现代 Web 应用一样,更开放、更实时、更易分享?
但我从一开始就没有打算用一个浏览器工具替代 Praat,也不推荐把 Spectro Pro 直接用于 论文、临床或其他专业测量。专业工具之所以可靠,不只因为算法,还因为成熟的工作流、 可复现设置、设备校准和长期验证。Spectro Pro 更适合做另一件事:让这些平时有些抽象的 声学信息,随时可以被看见。
在课堂上演示宽带与窄带语谱的区别,打开麦克风观察自己说话时 F0 和共振峰的变化,或者 临时检查一台录音设备有没有削波、底噪是否异常,这些场景不需要先搭建复杂环境。只要有 现代浏览器,就能立即开始。我觉得这就是它的价值。
参考资料
- Spectro 原项目:https://github.com/calebj0seph/spectro
- 作者:蕊添
- 链接:https://www.timhut.qzz.io/article/3af33f23-e781-8050-91fc-d69a2fbf6e7c
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。