譯者:王悅
會上,蘋果介紹了一個很好的語音識別API,那就是。事實上,這個 Kit 就是 Siri 用于語音識別的框架。今天有一些語音識別框架可用,但它們要么太貴要么不好。在今天的教程中,我將向您展示如何創(chuàng)建一個類似 Siri 的應用程序,該應用程序使用 Kit 進行語音轉文本。
設計應用程序用戶界面
先決條件:您需要 Xcode 8 beta 和運行 iOS 10 beta 的 iOS 設備。
首先創(chuàng)建一個名為 . 接下來,將 a、a 和 a 添加到 Main。你的應該是這樣的:
接下來為 .swift 文件定義變量。在這個demo中,我設置的名字是“”,名字是“”。然后創(chuàng)建一個空按鈕執(zhí)行方法,該方法在單擊按鈕時觸發(fā)。
@(:){
}
如果您不想從創(chuàng)建最原始的項目開始,您可以在此處下載原始項目并繼續(xù)下面的指導說明。
采用
為了使用它,您必須先導入它,然后遵循協(xié)議。因此,讓我們導入框架并將其協(xié)議添加到文件中。您的 .swift 文件現(xiàn)在應該如下所示:
:,{
@iew:!
@:!
加載(){
極好的。()
}
@(:){
}
}
用戶授權
在使用它進行語音識別之前,你必須先獲得用戶的許可,因為不僅本地 ios 設備會識別它,蘋果的服務器也會識別它。所有的語音數(shù)據(jù)都會傳到蘋果的后臺進行處理。因此,必須獲得用戶授權。
讓我們在方法中授權語音識別。用戶必須允許應用使用麥克風和語音識別。首先語音識別轉換文字軟件mac,聲明一個變量:
=(:.init(:'en-US'))//1
然后更新方法如下:
加載(){
極好的。()
.=假//2
.=自我//3
.{()in//4
=假
{//5
案子。:
=真
案子。:
=假
打?。?')
案子。:
=假
打印('')
案子。:
=假
打印('')
}
。主要的。(){
自我..=
}
}
}
首先,我們創(chuàng)建一個標識符為 en-US 的實例,以便語音識別 API 可以知道用戶說哪種語言。這個實例是處理語音識別的對象。
默認情況下,我們禁用該按鈕,直到激活語音識別。
接下來,將語音識別代理設置為 self ,這是我們的 .
之后,我們必須通過調(diào)用 . 方法。
最后,檢查驗證的狀態(tài)。如果授權,使按鈕處于活動狀態(tài)。如果沒有,打印一條錯誤消息并禁用該按鈕。
現(xiàn)在,如果您認為在應用程序啟動并運行后會看到授權彈出窗口,那您就錯了。如果運行,應用程序將崩潰。好吧,既然你知道了結果,為什么還要問呢?(不要打我),請參閱下面的解決方案。
提供授權消息
Apple 要求應用程序中的所有授權都具有自定義消息。例如語音授權語音識別轉換文字軟件mac,我們必須請求2個授權:
麥克風使用權。
語音識別。
對于自定義消息,您必須在 info.plist 配置文件中提供這些自定義消息。
讓我們打開 info.plist 配置文件的源代碼。首先,右鍵單擊 info.plist。然后選擇打開方式 > 代碼。最后,復制以下 XML 代碼,然后在
在標記前插入此代碼。
現(xiàn)在您已向 info.plist 文件添加了兩個鍵:
您可以自己更改這些消息的內(nèi)容?,F(xiàn)在點擊運行按鈕,您應該能夠成功編譯和運行應用程序而不會出現(xiàn)任何錯誤。
注意:如果后面工程運行完沒有看到語音輸入授權框,那是因為你是在模擬器上運行程序。iOS 模擬器無權訪問您的 mac 計算機的麥克風。
處理語音識別
現(xiàn)在我們已經(jīng)實現(xiàn)了用戶授權,我們現(xiàn)在去實現(xiàn)語音識別功能。首先在里面定義以下對象:
:?
n任務:問?
e=()
該對象處理語音識別請求。它為語音識別提供語音輸入。
任務對象告訴您語音識別對象的結果。擁有這個對象很方便,因為您可以使用它來刪除或中斷任務。
是您的語音引擎。它負責提供您的語音輸入。
接下來,創(chuàng)建一個名為 () 的新方法。
(){
!=無{
?.()
=無
}
=.()
做{
.()
.()
.(真的,有:.)
}抓住{
打?。?'。')
}
=()
=.{
('tnode')
}
=se{
('')
}
.=真
=.(with:,:{(,error)in
=假
!=無{
自我..文本=?..
=(?。)!
}
!=無||{
自我..停止()
.(onBus:0)
自我。=無
自我。=無
自我..=真
}
})
=.(:0)
.(onBus:0,:1024,:){(,when)in
自己。?。()
}
.()
做{
。開始()
}抓住{
打?。?'或。')
}
.text=',我'!'
}
單擊“開始”按鈕時將調(diào)用此方法。它的主要功能是打開語音識別并收聽您的麥克風。我們逐行分析上面的代碼:
觸發(fā)語音識別
我們需要確保在創(chuàng)建語音識別任務時語音識別是可用的,所以我們必須給它添加一個委托方法。如果語音輸入不可用或其狀態(tài)已更改,則 . 將設置屬性。對于這種情況,我們實現(xiàn)了協(xié)議的 e 方法。實施見下文:
(:,:布爾){
{
.=真
}別的{
.=假
}
}
當可用性狀態(tài)發(fā)生變化時,將調(diào)用此方法。如果語音識別可用,錄制按鈕將設置為啟用。
最后一件事是我們必須更新響應方法 (:):
@(:){
.{
。停止()
?.()
.=假
。('',為了:。)
}別的{
()
。('',為了:。)
}
}
在這種方法中,我們必須檢查它是否有效。如果是這樣,應用程序應該停止,中止按鈕的音頻輸入,使按鈕不可用,并將按鈕的標題設置為“開始”
如果它正在工作,應用程序應該調(diào)用 () 并將按鈕的標題設置為“停止”。
很好!現(xiàn)在您已準備好測試應用程序。將應用程序部署到 iOS10 設備,然后單擊“開始”按鈕。去說點什么吧!
注意:
Apple 對每臺設備的識別能力都有限制。確切的限制尚不清楚,但您可以聯(lián)系 Apple 以獲取更多信息。
蘋果還對每個應用程序的識別能力有限制。
如果您經(jīng)常遇到限制,請務必聯(lián)系 Apple,他們應該能夠解決問題。
語音識別非常耗電并且使用大量數(shù)據(jù)。
語音識別一次只持續(xù)大約一分鐘。
總結
在本教程中,您學習了如何利用 Apple 向開發(fā)人員開放的令人驚嘆的新語言 API 來進行語音識別和文本轉換。使用與 Siri 相同的語音識別框架。這是一個相對較小的 API。但是,它非常強大,允許開發(fā)人員創(chuàng)建非凡的應用程序,例如將語音文件轉換為文本。
我建議您觀看 WWDC 2016 509 以獲取更多有用信息。希望您喜歡這篇文章,并在探索這個新 API 時玩得開心。
作為參考,您可以在此處查看完整的項目