
还可以用这个静态库将silk转化成pcm,@hangcom 亲测可用。
根据刚才那篇博文,用博主的脚本就可以把pcm文件转换成wav文件,而他的解决方案正是ffmpeg:
file pcm wav, file adpcm wav (wav, wave)。pcm wav 文件、adpcm wav 文件(wav、wave)。2, sc)ss-s16(le-16。
播放此wav文件,听到的就是我在微信里发出的语音消息——
“定期整理用户昵称中含有的手机号、用户名、公司。”21.wav (267.3 KB)
从这里下载讯飞的官方iOS demo(注意勾选“语音听写”),在下载的工程中打开“MSCDemo -> MSCDemo -> business -> isr -> IATViewController.h”,其中的pcmFilePath即是音频文件的路径。
在IATViewController.m中的第42行,将pcmFilePath改为wav文件的地址,然后点击下图的“音频流识别”:


Simulator Screen Shot Mar 26, 2016, 7.06.24 PM.png375×667 23.3 KB
即可快速测试解析功能(注:讯飞iOS SDK仅支持pcm和wav格式的音频文件):

Simulator Screen Shot Mar 26, 2016, 7.44.29 PM.png375×667 25.6 KB
对比上面的wav文件,可以看到解析的偏差很大。因为讯飞的中文语音识别技术已经是全球领先的了,所以不大可能会出现这么大的识别错误。问了下讯飞的技术人员,得知问题可能在这些方面:

Screen Shot 2016-03-26 at 7.51.11 PM.png851×480 48.2 KB
好了,继续研究,看看怎么处理。

经张总@NavilleZhang

和爱拍的CTO指点:

得知讯飞哥们提到的“单通道,16位,16000/8000”各指的是channels、bit rate/sample size和sample rate。它们在ffmpeg里对应的设置方式分别是-ac channels、-b:a bitrate、-ar rate。我们来试试看:
file pcm wav, file adpcm wav (wav, wave)。pcm wav 文件、adpcm wav 文件(wav、wave)。16-bit linear pcm(*.wav后缀):等于 320 kbps。
识别效果如图:


Pasted image375×667 26.9 KB
识别得几乎没有问题了。
因为在上面的识别中,“昵称”被听成了“旅程”,还是有些不爽,于是我又擅自改变ffmpeg的参数,想看看能不能做到100%识别准确。ifly文件最后发现,按照如下的参数配置,识别率是最高的:
ffmpeg -f s16le -ar 12k -ac 2 -i /path/to/pcm -f wav -ar 16k -ac 1 /path/to/wav
但是,对于这个事实,我只知其然,不知其所以然,还请懂行的高手赐教
本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/bofangqi/article-98357-1.html
感谢@SMTOWN让宋茜身高魔术般地变成了最矮的
不过再怎么作死