IFlySpeechRecognizer是不带界面的语音听写控件,IFlyRecognizerView是带界面的控件,此处仅介绍不带界面的语音听写控件。使用示例如下所示:

  1. //需要实现IFlyRecognizerViewDelegate识别协议
  2. @interface IATViewController : UIViewController<IFlySpeechRecognizerDelegate>
  3. //不带界面的识别对象
  4. @property (nonatomic, strong) IFlySpeechRecognizer *iFlySpeechRecognizer;
  5. @end
  6. //创建语音识别对象
  7. _iFlySpeechRecognizer = [IFlySpeechRecognizer sharedInstance];
  8. //设置识别参数
  9. //设置为听写模式
  10. [_iFlySpeechRecognizer setParameter: @"iat" forKey: [IFlySpeechConstant IFLY_DOMAIN]];
  11. //asr_audio_path 是录音文件名,设置value为nil或者为空取消保存,默认保存目录在Library/cache下。
  12. [_iFlySpeechRecognizer setParameter:@"iat.pcm" forKey:[IFlySpeechConstant ASR_AUDIO_PATH]];
  13. //启动识别服务
  14. [_iFlySpeechRecognizer start];
  15. //IFlySpeechRecognizerDelegate协议实现
  16. //识别结果返回代理
  17. - (void) onResults:(NSArray *) results isLast:(BOOL)isLast{}
  18. //识别会话结束返回代理
  19. - (void)onCompleted: (IFlySpeechError *) error{}
  20. //停止录音回调
  21. - (void) onEndOfSpeech{}
  22. //开始录音回调
  23. - (void) onBeginOfSpeech{}
  24. //音量回调函数
  25. - (void) onVolumeChanged: (int)volume{}
  26. //会话取消回调
  27. - (void) onCancel{}

1.1. 音频流识别

音频流识别功能可以让开发者将已录制好的音频数据写入听写控件,最后得到识别结果。

  1. //设置音频源为音频流(-1)
  2. [self.iFlySpeechRecognizer setParameter:@"-1" forKey:@"audio_source"];
  3. //启动识别服务
  4. [self.iFlySpeechRecognizer startListening];
  5. //写入音频数据
  6. NSData *data = [NSData dataWithContentsOfFile:_pcmFilePath]; //从文件中读取音频
  7. [self.iFlySpeechRecognizer writeAudio:data];//写入音频,让SDK识别。建议将音频数据分段写入。
  8. //音频写入结束或出错时,必须调用结束识别接口
  9. [self.iFlySpeechRecognizer stopListening];//音频数据写入完成,进入等待状态