linux下录音并使用google API变文本

在这篇文章里主要解决两个问题,第一个是录音,第二个则是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

接下来,你应该就没有问题了,祝你成功~~


参考:

  1. http://www.cnblogs.com/jhzhu/p/3632186.html
  2. http://blog.csdn.net/evilcode/article/details/7594328



你可能感兴趣的:(语音识别,谷歌API,audio-recorder,linux录音)