1 说明
在做语音处理时,需要批量将pcm的裸数据转为wav格式,我们班的女孩子一开始是一个一个手动转换,大约有8万条吧,再一次证明了女人狠起来是真的狠。求助了我,我弄了一个批处理文件给她。
2 实现
新建txt文件,命名为twk_PcmToWav.txt,将以下内容复制进去后,修改后缀为bat。
echo off & color 0A
::指定起始文件夹
set DIR="C:\Users\fylal\OneDrive\FangYan\FangYanDate\changsha\changsha\train"
echo DIR=%DIR%
:: 参数 /R 表示需要遍历子文件夹,去掉表示不遍历子文件夹
:: %%f 是一个变量,类似于迭代器,但是这个变量只能由一个字母组成,前面带上%%
:: 括号中是通配符,可以指定后缀名,*.*表示所有文件
for /R %DIR% %%f in (*.pcm) do (
echo %%f
wtcsox.exe -t raw -c 1 -e signed-integer -b 16 -r 16000 %%f %%f.wav
::ffmpeg -i %%f -f s16le -y -ar 16000 -ac 1 %%f.wav
del %%f
)
pause
其中路径可以随意修改。
还需要用到的工具是wtcsox.exe,由于原始的sox工具在Windows下的一些链接库问题,我们团队自己加入了链接库,最终生成wtcsox.exe,将其添加在windows的环境变量中。
wtcsox.exe在这里:
链接:https://pan.baidu.com/s/1KgguI7qJE-Jz1Hkow-Ybcw
提取码:3qyz
复制这段内容后打开百度网盘手机App,操作更方便哦
以上工作做好以后直接点击twk_PcmToWav.bat,但生成的文件是含fileName.pcm.wav,这时需要用到下面这条命令
ren *.wav *.& ren *.pcm *. &ren *. *.wav
切换到音频所在目录下的cmd,将命令复制回车就可以。注意这条命令不能识别子目录,只能在语音文件所在目录下运行。