1. 什么是 SoX
在 Linux / VoIP / ASR(语音识别)领域,提到命令行音频工具,很多人第一反应就是:
-
ffmpeg
-
lame
-
audacity
但对于真正长期做语音系统、电话系统、ASR 测试的人来说,
SoX 才是那个最稳定、最轻量、最容易自动化的工具。
SoX 全称:
Sound eXchange
官方网站:
它是一个经典的跨平台命令行音频处理工具,支持:
-
WAV
-
MP3
-
GSM
-
FLAC
-
OGG
-
RAW
-
μ-law
-
A-law
等大量音频格式。
在:
-
FreeSWITCH
-
OpenSIPS
-
Asterisk
-
UniMRCP
-
ASR/TTS
-
SIP IVR
-
呼叫中心
等领域中极其常见。
2. 为什么 VoIP 工程师离不开 SoX
对于普通音频编辑,
图形界面软件已经够用了。
但在服务器环境中:
-
没有 GUI
-
需要批量处理
-
需要自动化
-
需要脚本化
这时:
SoX 的优势就非常明显。
它特别适合:
-
自动转换采样率
-
生成测试音频
-
批量转码
-
音量归一化
-
去噪
-
拼接音频
-
电话语音格式转换
3. 安装 SoX
3.1 Ubuntu / Debian
bash
sudo apt install sox
安装常见格式支持:
bash
sudo apt install sox libsox-fmt-all
3.2 CentOS / RHEL
bash
sudo yum install sox
4. 查看音频信息
这是最常用的命令之一:
bash
soxi test.wav
输出示例:
Input File : 'test.wav'
Channels : 1
Sample Rate : 8000
Precision : 16-bit
Duration : 00:00:05.00
File Size : 80.0k
Bit Rate : 128k
Sample Encoding: 16-bit Signed Integer PCM
在 VoIP 中非常重要:
因为很多 ASR 平台要求:
-
8000Hz
-
mono
-
PCM16
如果格式不对:
ASR 往往直接失败。
5. 音频格式转换
5.1 WAV 转 8k 电话语音
bash
sox input.wav -r 8000 -c 1 output.wav
参数说明:
-
-r 8000设置采样率为 8000Hz
-
-c 1设置单声道
这是:
SIP / PSTN / ASR 最经典格式。
5.2 转换为 μ-law
很多 SIP 系统使用:
-
PCMU
-
G.711 μ-law
转换命令:
bash
sox input.wav -r 8000 -c 1 -t ul output.ul
6. 调整音量
6.1 放大音频
bash
sox input.wav output.wav gain 5
表示:
- 增加 5dB
6.2 降低音量
bash
sox input.wav output.wav gain -5
7. 生成静音
在 IVR 测试中很常见:
bash
sox -n -r 8000 -c 1 silence.wav trim 0.0 3.0
生成:
- 3 秒静音文件
8. 拼接多个音频
例如:
bash
sox part1.wav part2.wav output.wav
可用于:
-
IVR 菜单拼接
-
自动化测试语音
-
TTS 合成后处理
9. 截取音频片段
9.1 从第 2 秒开始截取 5 秒
bash
sox input.wav output.wav trim 2 5
10. 生成测试音
10.1 生成 1kHz 测试音
bash
sox -n test.wav synth 5 sine 1000
作用:
-
SIP RTP 测试
-
音频链路测试
-
MRCP 调试
VoIP 工程师非常常用。
11. 查看音频波形统计
bash
sox input.wav -n stat
输出:
-
最大音量
-
RMS
-
clipping
-
平均功率
对于:
-
ASR 输入质量分析
-
电话录音质量分析
很有帮助。
12. 在 FreeSWITCH 中的典型用途
对于做 FreeSWITCH 的工程师来说:
SoX 经常用于:
12.1 转换 IVR 音频
bash
sox welcome.mp3 -r 8000 -c 1 welcome.wav
12.2 ASR 测试集准备
例如:
-
AWS Transcribe
-
Google STT
-
Verbio
-
Deepgram
都可能要求:
-
mono
-
PCM16
-
8k/16k
SoX 是最快的处理工具。
12.3 RTP 抓包后处理
配合:
-
tcpdump
-
Wireshark
-
sngrep
做音频恢复。
13. 一个非常实用的批量转换脚本
13.1 批量转换为 8k mono wav
bash
#!/bin/bash
for file in *.wav
do
sox "$file" -r 8000 -c 1 "converted_$file"
done
非常适合:
-
ASR 数据集处理
-
呼叫中心语音预处理
14. SoX 与 ffmpeg 的区别
很多人会问:
既然有 ffmpeg,为什么还需要 SoX?
我的实际经验:
| 场景 | 推荐 |
|---|---|
| 视频处理 | ffmpeg |
| 电话语音 | SoX |
| ASR测试 | SoX |
| RTP音频处理 | SoX |
| 批量音频脚本 | SoX |
| 多媒体转码 | ffmpeg |
SoX:
-
更轻
-
更纯粹
-
更适合语音
尤其:
在 8k 电话音频领域,
SoX 体验比 ffmpeg 更舒服。
15. 总结
SoX 是一个:
-
经典
-
稳定
-
高效
-
极其适合自动化
的命令行音频工具。
对于:
-
FreeSWITCH
-
OpenSIPS
-
UniMRCP
-
ASR/TTS
-
呼叫中心
工程师来说,
它几乎是必备技能。
如果你长期做:
-
SIP
-
RTP
-
电话语音
-
AI语音识别
建议一定要熟练掌握 SoX。