訊飛開發步驟
1.申請賬號
5.語音識別
[iflyspeechutility createutility:initstring];
3 建立有介面提示的語音識別物件建立乙個訊飛語音識別物件,可以對他進行一系列的呼叫
@property (nonatomic, strong) iflyrecognizerview *iflyrecognizerview;//帶介面的識別物件
4 初始化帶介面的識別物件前面宣告了乙個帶介面的語音識別物件,現在需要對這個識別物件進行初始化,同樣是在viewdidload()方法中進行就行.#pragma mark ------ 進行有介面的語音識別的初始化
_iflyrecognizerview = [[iflyrecognizerview alloc] initwithcenter:self.view.center];
_iflyrecognizerview.delegate = self;
[_iflyrecognizerview setparameter: @「iat」 forkey: [iflyspeechconstant ifly_domain]];
//asr_audio_path儲存錄音檔名,如不再需要,設定value為nil表示取消,預設目錄是documents
[_iflyrecognizerview setparameter:@"asrview.pcm " forkey:[iflyspeechconstant asr_audio_path]];
[_iflyrecognizerview start];
[iflyspeechutility createutility:initstring];
3 建立無介面提示的語音識別物件建立乙個訊飛語音識別物件,可以對他進行一系列的呼叫
@property (nonatomic, strong) iflyspeechrecognizer *iflyspeechrecognizer;//不帶介面的識別物件
4 物件初始化前面宣告了一些在語音合成的時候會用到的物件,現在需要對前面的物件進行初始化.還是在viewdidload()裡面進行就可以了.這裡的初始化內容比較多,是進行一些語音的設定,所以單獨做成了乙個方法,在viewdidload()中進行呼叫即可.
-(void)initrecognizer
_iflyspeechrecognizer.delegate = self;
if (_iflyspeechrecognizer != nil) else if ([instance.language isequaltostring:[iatconfig english]])
//設定是否返回標點符號
[_iflyspeechrecognizer setparameter:instance.dot forkey:[iflyspeechconstant asr_ptt]];
}}
if(_iflyspeechrecognizer == nil)
[_iflyspeechrecognizer cancel];
//設定音訊**為麥克風
[_iflyspeechrecognizer setparameter:ifly_audio_source_mic forkey:@"audio_source"];
//設定聽寫結果格式為json
[_iflyspeechrecognizer setparameter:@"json" forkey:[iflyspeechconstant result_type]];
//儲存錄音檔案,儲存在sdk工作路徑中,如未設定工作路徑,則預設儲存在library/cache下
[_iflyspeechrecognizer setparameter:@"asr.pcm" forkey:[iflyspeechconstant asr_audio_path]];
[_iflyspeechrecognizer setdelegate:self];
bool ret = [_iflyspeechrecognizer startlistening];
6.語音合成[iflyspeechutility createutility:initstring];
3 建立有介面提示的語音識別物件建立乙個訊飛語音識別物件,可以對他進行一系列的呼叫
typedef ns_options(nsinteger, synthesizetype) ;
@property (nonatomic, strong) iflyspeechsynthesizer * iflyspeechsynthesizer;//語音合成物件
@property (nonatomic, assign) synthesizetype syntype;//是何種合成方式
@property (nonatomic, assign) bool haserror;//解析過程中是否出現錯誤
4 物件初始化前面宣告了一些在語音合成的時候會用到的物件,現在需要對前面的物件進行初始化.還是在viewdidload()裡面進行就可以了.
*instance = [ttsconfig sharedinstance];
1 if (instance == nil)
//合成服務單例
if (_iflyspeechsynthesizer == nil)
_iflyspeechsynthesizer.delegate = self;
//設定語速1-100
[_iflyspeechsynthesizer setparameter:instance.speed forkey:[iflyspeechconstant speed]];
//設定音量1-100
[_iflyspeechsynthesizer setparameter:instance.volume forkey:[iflyspeechconstant volume]];
//設定音調1-100
[_iflyspeechsynthesizer setparameter:instance.pitch forkey:[iflyspeechconstant pitch]];
//設定取樣率
[_iflyspeechsynthesizer setparameter:instance.samplerate forkey:[iflyspeechconstant sample_rate]];
//設定發音人
[_iflyspeechsynthesizer setparameter:instance.vcnname forkey:[iflyspeechconstant voice_name]];
5 觸發語音合成新增乙個輸入框,乙個button,button的響應時間是將輸入框中的文字內容讀出來.
if ([self.voicetext.text isequaltostring:@""])
if (_audioplayer != nil && _audioplayer.isplaying == yes)
_syntype = nomaltype;
self.haserror = no;
[nsthread sleepfortimeinterval:0.05];
_iflyspeechsynthesizer.delegate = self;
[_iflyspeechsynthesizer startspeaking:self.voicetext.text];
demo位址 訊飛離線語音合成(語記 語音 )
訊飛的語音合成有三種方式 使用訊飛離線語音包 付費 這裡使用語記實現離線語音合成 android name android.permission.access network state 引擎型別 本地 mtts.setparameter speechconstant.engine type,spe...
科大訊飛語音合成 iOS
使用示例如下 c c code 標頭檔案定義 需要實現iflyspeechsynthesizerdelegate,為合成會話的服務 inte ce ttsviewcontroller uiviewcontroller 建立合成物件,為單例模式 iflyspeechsynthesizer iflysp...
整合科大訊飛TTS 離線語音合成服務
背景 最近機械人專案需要整合科大訊飛tts服務,遇到各種坑。本人開發過程中,個人理解,以上錯誤的根本原因就是找不到引擎,明明已經放置了離線demo中的所有msc引擎,為什麼找不到。根本原因還是因為給的離線語音合成中的sdk中的msc.so檔案是錯誤的,專案執行時候,找到了msc,但是發現msc不是自...