概述
iOS用戶習(xí)慣于使用Siri與應(yīng)用程序進行交互,而當(dāng)鍵盤出現(xiàn)時道偷,使用聽寫來捕捉他們的語音养篓。語音api可以讓你在不需要鍵盤的情況下擴展和增強你應(yīng)用程序中的語音識別體驗。
語音api通過與蘋果的服務(wù)器通信或使用on-device語音識別器來實現(xiàn)語音識別,如果可用的話设哗。發(fā)現(xiàn)如果一個語音識別器是用于一個特定的語言,你采用SFSpeechRecognizerDelegate協(xié)議唱捣。
因為您的應(yīng)用程序可能需要連接到服務(wù)器來執(zhí)行識別,所以您必須尊重用戶的隱私网梢,并將他們的言論視為敏感數(shù)據(jù)震缭。出于這個原因,在開始語音識別之前战虏,必須獲得用戶的顯式權(quán)限拣宰。
請注意 如果用戶授予權(quán)限,則不必再次請求烦感。這里需要在Info.plist文件里面添加相關(guān)描述文件:1. NSSpeechRecognitionUsageDescription : 語音識別使用描述巡社、 2.NSMicrophoneUsageDescription:麥克風(fēng)使用描述
語音識別分為:識別本地錄音、識別即時語音錄入兩種情況,下面的代碼是識別即時語音的錄入,具體的內(nèi)容看代碼:
首先導(dǎo)入Speech.framework【Build Phases->Link Binary With Libraries->+】
在app中開始使用語音識別:
例如手趣,如果你的待辦事項應(yīng)用程序改變了一個項目的狀態(tài)晌该,當(dāng)用戶說“完成”時,你可能會寫“讓你標(biāo)記一個完成的項目”绿渣。
NSSpeechRecognitionUsageDescription鍵添加到您的信息朝群。plist文件并提供您所寫的作為字符串值的語句。
使用請求授權(quán):通過顯示您在警報中所寫的語句請求用戶的權(quán)限中符。
如果用戶拒絕允許(或語音識別不可用)姜胖,請優(yōu)雅地處理它。例如淀散,您可能會禁用顯示語音識別可用性的用戶界面項右莱。
在用戶授予您的應(yīng)用程序許可來執(zhí)行語音識別之后,創(chuàng)建一個sfspeech識別器對象并創(chuàng)建一個語音識別請求档插。
使用SFSpeechURLRecognitionRequest類執(zhí)行預(yù)先錄制的識別,磁盤上的音頻文件,并使用SFSpeechAudioBufferRecognitionRequest類識別現(xiàn)場音頻或內(nèi)存中的內(nèi)容慢蜓。
將請求傳遞給您的sftalk識別器對象以開始識別。
語音是逐漸被識別的阀捅,因此您的識別器的處理程序可以被多次調(diào)用胀瞪。(檢查最終屬性的值,以確定何時完成識別饲鄙。)如果您正在使用音頻一起生活,你使用SFSpeechAudioBufferRecognitionRequest和附加音頻緩沖區(qū)在識別過程中請求凄诞。
當(dāng)錄音結(jié)束時,通知識別器不再需要音頻忍级,這樣識別就可以完成帆谍。注意,在前一個任務(wù)結(jié)束之前啟動一個新的識別任務(wù)會中斷正在進行的任務(wù)轴咱。
計劃在音頻持續(xù)時間限制一分鐘汛蝙。語音識別可以給電池壽命和網(wǎng)絡(luò)使用帶來相對較高的負(fù)擔(dān)烈涮。在ios10中,語音音頻持續(xù)時間限制在1分鐘左右窖剑,類似于鍵盤相關(guān)聽寫的限制坚洽。