赞
踩
通过谷歌语音接口的实现语音识别
最近在项目中有需要实现语音识别的功能。折腾了几天才搞好。刚开始做的时候没点头绪 ,网上找的资料都是乱七八糟的,要不就是非常古老的实现方法,一些简单的代码片段。所以我决定把我的经验分享给大家。
要在IOS中实现语音识别流程如下:
录音->pcm格式->转换wav->转换flac->向谷歌发送请求->等待返回的json数据->解析数据;
首先如果你要使用谷歌的接口实现语音识别必须知道下面着几点:
1.如何发送POST请求。(可以使用开源库ASIHttpRequest,AFNetWorking,这些库都封装了网络请求,使用起来非常简单);
3.了解AVAudioRecorder类如何使用,怎么配置.
在IOS中录音就要使用AVAudioRecorder这个类,这个类的实例方法如下:
- (id)initWithURL:(NSURL *)url settings:(NSDictionary *)settings error:(NSError **)outError;
url:录音完成后声音存放的位置,
设置完这个对象后就可以开始录音了.得到lpcm格式音频数据后就开始我们的第一次转换,转换成wav,什么是wav呢?点击,
文件转换成WAV之后还需要将WAV的转换成FLAC才能上传到谷歌接口进行语音识别,幸好在在github上有人封装好了一个FLAC的开源库:https://github.com/jhurt/FLACiOS
下载这个源码后要去掉OGG的支持,不然编译不过。直接点击文件 -,编译后进入,Products目录拿到.a和framework,把这个两个文件一起加入你的工程。
声音处理完毕后就要往谷歌语音接口发请求了。我是使用ASI发的请求,大家可以用其他库来发,毕竟ASI有点太老了,我只是用习惯了而已。这里的filePath就是转换后FLAC文件的地址;
#define GOOGLE_AUDIO_URL @"http://www.google.com/speech-api/v1/recognize?xjerr=1&client=chromium&lang=zh-CN"
NSURL *URL = [NSURL URLWithString:GOOGLE_AUDIO_URL];
if(dic ==nil || [dic count] == 0){
这里是我写的一个测试工程全部代码
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。