通过谷歌语音接口的实现语音识别
最近在项目中有需要实现语音识别的功能。折腾了几天才搞好。刚开始做的时候没点头绪 ,网上找的资料都是乱七八糟的,要不就是非常古老的实现方法,一些简单的代码片段。所以我决定把我的经验分享给大家。
要在IOS中实现语音识别流程如下:
录音->pcm格式->转换wav->转换flac->向谷歌发送请求->等待返回的json数据->解析数据;
首先如果你要使用谷歌的接口实现语音识别必须知道下面着几点:
1.如何发送POST请求。(可以使用开源库ASIHttpRequest,AFNetWorking,这些库都封装了网络请求,使用起来非常简单);
2.了解音频格式pcm,wav,flac,(着三个音频格式的关系是,因为谷歌接口只接受flac音频格式,其他格式无法识别,IOS中无法录制flac音频格式,也无法录制wav,只能录制pcm,所以要一步一步转换);
3.了解AVAudioRecorder类如何使用,怎么配置.
在IOS中录音就要使用AVAudioRecorder这个类,这个类的实例方法如下:
- (id)initWithURL:(NSURL *)url settings:(NSDictionary *)settings error:(NSError **)outError;
url:录音完成后声音存放的位置,
settings:设置录制声音的参数,只有一个关键的key跟大家讲下AVFormatIDKey,这个key决定你录制出来声音的格式,我们要录成lpcm格式,未压缩的原音数据,以便我们转换,所以使用kAudioFormatLinearPCM值.其他key可以在帮助文档看,