在这篇文章里主要解决两个问题,第一个是录音,第二个则是speech to text.
关于audio-recorder
目前我在linux里面录音有两个办法,第一个是用ALSA驱动,第二个则是linux平台的一些工具。
关于工具,我觉得audio-recorder不错,功能比较多
这是基本的界面,我们可以自己写配置控制。比如:
start at 08:20 pm指定什么时候开始录音
stop if silence | 300kb就是当没有声音或者录音文件大小超过300k就停止录音
start if sound 1s -24 当有声音来源持续一秒且超过24分贝,就开始录音
并且,你还可以设置声音的来源,是来自麦克风,还是来自电脑里面的音频文件
你也可以设置输出格式,wav还是mp3亦或是FLAC
是不是非常好用,美中不足的就是当你发声时,刚开始的1s可能无法录制
ALSA
去下面可以下载用ALSA写的代码,可以录制wav格式的音乐.http://blog.csdn.net/evilcode/article/details/7594328
这是编译的 makefile
objects = lrecord.o sndwav_common.o wav_parser.o edit : $(objects) gcc -o edit $(objects) -lasound lrecord.o : lrecord.c wav_parser.h sndwav_common.h gcc -c lrecord.c -lasound sndwav_common.o : sndwav_common.c sndwav_common.h gcc -c sndwav_common.c -lasound wav_parser.o : wav_parser.c wav_parser.h gcc -c wav_parser.c clean : rm edit $(objects)
比如,我这里生成了edit可执行文件,./edit a.wav就开始录音,并且ctrl-c之后录音就存在a.wav中。
下面,我们有了录音文件,就要开始利用谷歌API了。这个API美中不足的有2点:本地调用速度会比较慢,并且有次数限制(50次/天)
你可以体验一下 谷歌语音识别
首先你要去申请成为谷歌开发者,拿到API key 。 我要成为开发者拿到key
拿到key了之后就可以使用了,要注意使用FLAC格式的,我猜是因为无损识别率比较高么??
curl -X POST --data-binary @speech.flac --user-agent ‘Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_8) AppleWebKit/535.7 (KHTML, like Gecko) Chrome/16.0.912.77 Safari/535.7‘ --header ‘Content-Type: audio/x-flac; rate=8000;‘ ‘https://www.google.com/speech-api/v1/recognize?client=chromium&lang=zh-CN&maxresults=5&pfilter=0&key=***************************‘data-binary就是你的音频文件地址,然后key要换成你自己申请来的key
这一步很容易因为你音频文件格式不对导致500Error,你可以使用sox工具进行转换
sox ./speech.mp3 -b 8 speech.flac trim 1 2
这个命令的意思是截取speech.mp3的1-2s,频率设为8HZ,转为speech.flac
接下来,你应该就没有问题了,祝你成功~~