IFlySpeechRecognizer是不帶界面的語音聽寫控件,IFlyRecognizerView是帶界面的控件,此處僅介紹不帶界面的語音聽寫控件。使用示例如下所示:
~~~
//需要實現IFlyRecognizerViewDelegate識別協議
@interface IATViewController : UIViewController<IFlySpeechRecognizerDelegate>
//不帶界面的識別對象
@property (nonatomic, strong) IFlySpeechRecognizer *iFlySpeechRecognizer;
@end
//創建語音識別對象
_iFlySpeechRecognizer = [IFlySpeechRecognizer sharedInstance];
//設置識別參數
//設置為聽寫模式
[_iFlySpeechRecognizer setParameter: @"iat" forKey: [IFlySpeechConstant IFLY_DOMAIN]];
//asr_audio_path 是錄音文件名,設置value為nil或者為空取消保存,默認保存目錄在Library/cache下。
[_iFlySpeechRecognizer setParameter:@"iat.pcm" forKey:[IFlySpeechConstant ASR_AUDIO_PATH]];
//啟動識別服務
[_iFlySpeechRecognizer start];
//IFlySpeechRecognizerDelegate協議實現
//識別結果返回代理
- (void) onResults:(NSArray *) results isLast:(BOOL)isLast{}
//識別會話結束返回代理
- (void)onError: (IFlySpeechError *) error{}
//停止錄音回調
- (void) onEndOfSpeech{}
//開始錄音回調
- (void) onBeginOfSpeech{}
//音量回調函數
- (void) onVolumeChanged: (int)volume{}
//會話取消回調
- (void) onCancel{}
~~~
## 音頻流識別
音頻流識別功能可以讓開發者將已錄制好的音頻數據寫入聽寫控件,最后得到識別結果。
~~~
//設置音頻源為音頻流(-1)
[self.iFlySpeechRecognizer setParameter:@"-1" forKey:@"audio_source"];
//啟動識別服務
[self.iFlySpeechRecognizer startListening];
//寫入音頻數據
NSData *data = [NSData dataWithContentsOfFile:_pcmFilePath]; //從文件中讀取音頻
[self.iFlySpeechRecognizer writeAudio:data];//寫入音頻,讓SDK識別。建議將音頻數據分段寫入。
//音頻寫入結束或出錯時,必須調用結束識別接口
[self.iFlySpeechRecognizer stopListening];//音頻數據寫入完成,進入等待狀態
~~~