專利名稱:用于使用上下文信息的語音識別修復的方法和系統的制作方法
技術領域:
本發明涉及語音識別系統,且在一個實施例中,涉及用以控制數據處理系統的語首識別系統。
背景技術:
許多語音識別系統所具有的常見問題是準確性。用戶可對著語音識別器說話,且系統可用識別文本做出響應,但所述識別文本通常可能含有許多錯誤,因為語音識別器未能恰當地識別人類用戶的話語。語音識別可用以在電話上調用話音撥號,例如當用戶在電話上口述命令“callmom(呼叫媽媽)”時。使用語音來控制數據處理系統可在來自語音識別器系統的轉錄錯誤決定用戶口述“call Tom(呼叫湯姆)”而非“call mom(呼叫媽媽)”時導致異常系統行為。轉錄錯誤可由硬件缺點(例如不能夠經由藍牙頭戴式耳機俘獲高質量音頻記錄)或用戶錯誤(例如不正確或不完全的發音或背景噪聲)造成。一些語音識別系統可采用使用上下文來改善語音識別系統;美國專利7,478,037提供可采用上下文來輔助語音識別過程的語音識別系統的實例。
發明內容
本發明的實施例提供一種語音控制系統,其可識別口述命令和相關聯字詞(例如“呼叫在家里的媽媽”)且可致使選定應用程序(例如電話撥號器)執行所述命令以致使系統(其可為智能電話)執行基于所述命令和相關聯字詞的操作(例如,向在家里的媽媽發出電話呼叫)。在一個實施例中,所述語音控制系統可使用包括常規聲學模型和常規語言模型的語言識別器來根據從人類用戶的語音獲得的數字化輸入產生文本輸出。在一個實施例中,所述語音控制系統可由用戶可調用的語音輔助應用程序來啟動,且此語音輔助應用程序可解釋并修復來自所述語音識別器的所述文本輸出且將經修復的文本輸出提供到一組應用程序中的選定應用程序;所述組應用程序可包括(例如)一個或一個以上應用程序,例如電話應用程序(用以撥號并建立話音電話呼叫連接)和媒體播放器應用程序(例如,iTunes)和SMS (短消息服務)“文本消息”應用程序和視頻會議(例如,“面對面時間(FaceTime) ”)或聊天應用程序和用以找到或定位例如朋友等個人的應用程序和其它應用程序。在一個實施例中,語音輔助應用程序使用一組解釋器來解釋所述文本輸出,所述解釋器中的每一者經設計以解釋所述組應用程序所使用的特定類型的文本。舉例來說,名字解釋器經設計以解釋地址簿或通訊錄數據庫中的名字(在名字字段中),姓氏解釋器經設計以解釋地址簿或通訊錄數據庫中的姓氏(在姓氏字段中),全名解釋器經設計以解釋地址簿或通訊錄數據庫中的全名,且公司名稱解釋器經設計以解釋地址簿或通訊錄數據庫中的公司名稱。在一個實施例中,這些解釋器可經配置以使用不同算法或過程來解釋文本輸出中的每一字詞;舉例來說,全名解釋器可使用模擬匹配(使用編輯距離相似性測量)算法來將文本輸出中的字詞與地址簿或通訊錄數據庫中的字詞進行比較,但在一個實施例中,不使用η碼組(n-gram)算法來將文本輸出中的字詞與地址簿或通訊錄數據庫中的字詞進行比較,而名字解釋器使用η碼組算法來將文本輸出中的字詞與地址簿或通訊錄數據庫中的字詞進行比較。此外,在一個實施例中,這些解釋器可在搜索地址簿或通訊錄數據庫以查找匹配時使用不同搜索算法。在一個實施例中,每一解釋器還可在解釋字詞時使用上下文(例如,所述上下文可包括媒體播放器正在播放歌曲的指示)。在一個實施例中,所述上下文可包括用戶輸入歷史(例如會話歷史(例如,先前識別語音))或所述組應用程序中的應用程序的狀態等。在一個實施例中,所述組中的每一解釋器可處理文本輸出中的每一字詞以試圖確定其是否能修復所述字詞,且在一個實施例中,每一解釋器自行決定其是否能修復每一字詞;所述解釋器產生指示其是否能修復所述字詞的得分或置信度。在一個實施例中,所述組解釋器的控制器可通過排列所得的經修復解釋(使用每一解釋器的得分或置信度來執行所述排列)且接著合并所述經排列的解釋來處理所述組解釋器的結果。在一個實施例中,所述合并設法避免解釋的重疊,使得僅使用來自一個解釋器的輸出來修復特定字詞。在一個實施例中,所述語音輔助應用程序可基于字詞在字詞串中的位置來確定來自語音識別器系統的文本輸出中的命令或通過使用語法剖析器來確定所述命令,且所述命令連同經修復的語音轉錄可由語音輔助應用程序傳遞到一組應用程序中的特定應用程序以供所述特定應用程序使用經修復的語音轉錄執行所述命令。在此實施例中,語音輔助應用程序可基于所述命令來選擇所述特定應用程序;舉例來說,識別文本中的“呼叫”命令致使語音輔助應用程序通過API將所述“呼叫”命令連同經修復的語音轉錄傳遞到電話撥號器或電話應用程序,而識別文本中的“停止”命令致使語音輔助應用程序通過API將“停止”命令傳遞到媒體播放器(例如iTunes)以停止播放當前正在播放的歌曲。在此實例中,提供到所述組解釋器中的媒體播放器解釋器的上下文可包括媒體的狀態(例如,上下文包括在語音識別器系統接收到含有識別字詞“停止”的語音輸入時披頭士歌曲 “Come Together(-起來)”當前正在播放的狀態)。在此實例中,用戶不需要在口述命令之前選擇特定的所要應用程序;而是,用戶在將語音輔助應用程序作為最前端應用程序(且具有語音輸入焦點)的情況下進行口述且語音輔助應用程序接著自動地(不需要用戶直接指定應用程序)基于所述命令來在所述組應用程序中選擇恰當的應用程序,且接著通過API將所述命令傳遞到選定應用程序。在一個方面中,一種機器實施方法包括從數據處理系統的用戶接收語音輸入;在所述數據處理系統中確定所述語音輸入的上下文;通過語音識別系統在所述語音輸入中識別文本,所述文本識別產生文本輸出;將所述文本輸出存儲為具有多個標記的剖析數據結構,所述多個標記各自表示所述文本輸出中的字詞;用一組解釋器處理所述標記中的每一者,其中每一解釋器經設計以修復所述文本輸出中的特定類型的錯誤,搜索一個或一個以上數據庫以識別所述數據庫中的一個或一個以上項目與所述標記中的每一者之間的匹配,且根據所述所識別的匹配和所述上下文確定所述解釋器是否能修復所述文本輸出中的標記;合并由所述組解釋器產生的選定結果以產生經修復的語音轉錄,所述經修復的語音轉錄表示所述文本輸出的經修復版本;以及基于所述經修復的語音轉錄中的命令而將所述經修復的語音轉錄提供到一組應用程序中的選定應用程序,其中所述選定應用程序經配置以執行所述命令。在一些實施例中,所述上下文包括先前用戶輸入歷史,且其中所述一個或一個以上數據庫包括通訊錄數據庫,所述通訊錄數據庫存儲姓名、地址和電話號碼中的至少一者。在一些實施例中,所述上下文包括會話歷史,其中所述一個或一個以上數據庫包括媒體數據庫,所述媒體數據庫存儲歌曲、題目和藝術家中的至少一者,且其中所述組解釋器中的解釋器在評估可能的匹配時使用至少兩個字詞的字符串。在一些實施例中,所述組解釋器中的第一解釋器使用第一算法來確定是否修復字詞,且所述組解釋器中的第二解釋器使用第二算法來確定是否修復字詞,所述第一算法不同于所述第二算法。在一些實施例中,所述組解釋器中的第三解釋器使用第三算法來搜索所述一個或一個以上數據庫,且所述組解釋器中的第四解釋器使用第四算法來搜索所述一個或一個以上數據庫,所述第三算法不同于所述第四算法。在一些實施例中,所述組解釋器中的所述解釋器不試圖修復所述命令。在一些實施例中,所述合并僅合并來自所述組解釋器的不重疊結果,并且將來自所述組解釋器的重疊結果排列在分級組中,且選擇所述分級組中的一個結果并將其合并到所述經修復的語音轉錄中。在一些實施例中,每一解釋器經設計以修復的所述特定錯誤類型是基于由所述解釋器搜索的所述一個或一個以上數據庫中的一個或一個以上字段來確定的。在一些實施例中,所述組解釋器在確定是否修復所述文本輸出中的一個或一個以上字詞時搜索所述一個或一個以上數據庫以將所述文本輸出中的字詞與所述一個或一個以上數據庫中的一個或一個以上項目進行比較。在一些實施例中,語法剖析器根據所述文本輸出確定所述命令。在一些實施例中,所述組應用程序包括以下各項中的至少兩者(a)電話撥號器,其使用所述經修復的語音轉錄來撥打電話號碼;(b)媒體播放器,其用于播放歌曲或其它內容;(C)文本消息接發應用程序;⑷電子郵件應用程序;(e)日歷應用程序;(f)本地搜索應用程序;(g)視頻會議應用程序;或(h)人員或物體定位應用程序。在一些實施例中,所述方法包括上文所陳述的特征的任何組合。在一個方面中,一種數據處理系統包括語音識別器,其可操作以在語音輸入中識別文本且產生文本輸出;上下文確定模塊,其可操作以確定所述語音輸入的上下文;麥克風,其耦合到所述語音識別器以將所述語音輸入提供到所述語音識別器;存儲裝置,其用于將所述文本輸出存儲為具有多個標記的剖析數據結構,所述多個標記各自表示所述文本輸出中的字詞;一組解釋器,其耦合到所述語音識別器和所述上下文確定模塊,其中每一解釋器經設計以修復所述文本輸出中的特定類型的錯誤,搜索一個或一個以上數據庫以識別所述數據庫中的一個或一個以上項目與所述標記中的每一者之間的匹配,且根據所述所識別的匹配和所述上下文確定所述解釋器是否能修復所述文本輸出中的標記;以及控制器,其用于合并由所述組解釋器產生的選定結果以產生經修復的語音轉錄且用于基于所述經修復的語音轉錄中的命令來將所述經修復的語音轉錄提供到一組應用程序中的選定應用程序,其中所述經修復的語音轉錄表示所述文本輸出的經修復版本,且所述選定應用程序經配置以執行所述命令。
在一些實施例中,所述上下文包括先前用戶輸入歷史,且所述一個或一個以上數據庫包括通訊錄數據庫,所述通訊錄數據庫存儲姓名、地址和電話號碼中的至少一者。在一些實施例中,所述上下文包括會話歷史,其中所述一個或一個以上數據庫包括媒體數據庫,所述媒體數據庫存儲歌曲、題目和藝術家中的至少一者,且其中所述組解釋器中的解釋器在評估可能的匹配時使用至少兩個字詞的字符串。在一些實施例中,所述組解釋器中的第一解釋器使用第一算法來確定是否修復字詞,且所述組解釋器中的第二解釋器使用第二算法來確定是否修復字詞,所述第一算法不同于所述第二算法。在一些實施例中,所述組解釋器中的第三解釋器使用第三算法來搜索所述一個或一個以上數據庫,且所述組解釋器中的第四解釋器使用第四算法來搜索所述一個或一個以上數據庫,所述第三算法不同于所述第四算法。在一些實施例中,所述組解釋器中的所述解釋器不試圖修復所述命令。在一些實施例中,所述合并僅合并來自所述組解釋器的不重疊結果,并且來自所述組解釋器的重疊結果被排列在分級組中,且所述分級組中的一個結果被選擇且合并到所述經修復的語音轉錄中。在一些實施例中,每一解釋器經設計以修復的所述特定錯誤類型是基于由所述解釋器搜索的所述一個或一個以上數據庫中的一個或一個以上字段來確定的。在一些實施例中,所述系統進一步包含語法剖析器,所述語法剖析器用于根據所述文本輸出確定所述命令。在一些實施例中,所述系統包括上文所陳述的特征的任何組合。本文中所描述的實施例可實施為機器可讀非暫時存儲媒體或方法或數據處理系統。以上概述并不包括本發明的所有方面的詳盡列舉。期望本發明包括可根據上文所概述的各種方面以及下文具體實施方案中所揭示的那些方面的所有合適組合實踐的所有系統和方法。
在附圖的圖式中借助于實例而非限制來說明本發明,在附圖中相同參考標號指示相似元件。圖1展示說明根據本發明的一個實施例的方法的流程圖。圖2展示根據本發明的一個實施例的可包括軟件模塊和數據結構的架構的實例。圖3為展示根據本發明的一個實施例的方法的流程圖。圖4展示根據本發明的一個實施例的架構的實例,其中控制器模塊用以排列且合并來自根據本發明的一個實施例的一組解釋器的經修復結果。圖5A展示描繪根據本發明的一個實施例的方法的流程圖。圖5B展示可在本文中所描述的一個或一個以上實施例中采用的包括一個或一個以上API的軟件架構。圖6展示根據一個實施例的架構,其中在語音識別系統中確定并使用當前上下文。
圖7展示可在本文中所描述的一個或一個以上實施例中的修復過程中使用的數據結構的實例。圖8展示可在解釋器確定是否修復已由語音識別系統識別的特定字詞時由本文中所描述的解釋器中的一者或一者以上使用的特定算法的實例。圖9展示根據本發明的一個實施例的數據處理系統的實例。圖10為可在本發明的一些實施例中使用的軟件堆疊的實例。圖11為說明可在本發明的一些實施例中使用的示范性API架構的框圖。
具體實施例方式將參考下文所論述的細節來描述本發明的各種實施例和方面,且附圖將說明各種實施例。以下描述和
本發明且不應解釋為限制本發明。描述眾多具體細節以提供對本發明的各種實施例的透徹理解。然而,在某些例子中,未描述眾所周知或常規的細節以便提供對本發明的實施例的簡明論述。說明書中對“一個實施例”或“一實施例”的參考意味著在本發明的至少一個實施例中可包括結合所述實施例描述的特定特征、結構或特性。在說明書的各種地方中出現短語“在一個實施例中”未必全部指代同一實施例。由包含硬件(例如,電路、專用邏輯等)、軟件或兩者的組合的處理邏輯來執行在以下圖式中所描繪的過程。雖然下文中根據一些順序操作來描述所述過程,但應了解,所描述的一些操作可按不同次序來執行。此外,一些操作可并行地而非順序地來執行。本發明的一個實施例提供一組解釋器,其每一者經設計或配置以修復由語音識別器系統提供的識別文本中的特定類型的錯誤。語音識別器系統可為常規的基于軟件的語音識別系統,其包括聲學模型和語言模型,且語音識別器系統中的這些模型的組合產生文本輸出,所述文本輸出接著由所述組解釋器修復。解釋器可經配置以與特定數據庫和所述數據庫中的內容以及可使用那些數據庫的特定應用程序一起操作。在一個實施例中,所述組解釋器與語音識別系統的分離(使得所述組解釋器在語音識別系統提供輸出之后進行操作)允許在設計語音控制系統方面具有較大靈活性。特定應用程序和/或那些數據庫的任何改變可反映在恰當且對應的解釋器的改變中,而不必改變基礎的語音識別系統。舉例來說,數據處理系統可使用現有的常規語音識別系統,且接著提供定制解釋器,所述定制解釋器針對特定應用程序和含有將針對數據處理系統上的每一應用程序或一組應用程序在口述命令中出現的內容的特定數據庫進行定制。舉例來說,例如“call John Smith on mobile(呼叫約翰 史密斯的移動電話)”等命令使用估計可能應當在用戶的通訊錄或地址簿數據庫中出現的字詞。名字“John (約翰)”應當在數據庫中出現且姓氏“Smith (史密斯)”應當在數據庫中出現;此外,數據庫應包括指示一個電話號碼是John Smith(約翰 史密斯)的移動電話號碼的字段識別符。可能需要命令“Call (呼叫)”位于口述命令的開始處,或數據處理系統可使用語法剖析器來確定來自口述命令的命令的位置。如果通訊錄數據庫改變或電話應用程序改變(例如,添加或刪除或修改命令),那么可改變用于所述數據庫和應用程序的解釋器而不必修改語音識別系統(例如,不必修改語音識別系統的語言模型)。可通過(例如)改變解釋器與之交互的(數據庫中的)字段或改變用以將(來自語音識別系統的)文本輸出中的字詞與數據庫中的字段進行匹配的算法或通過改變用以搜索數據庫的搜索算法來改變解釋器。圖1展示根據本發明的一個實施例的方法的實例,其可使用一組解釋器來修復已由語音識別器系統(例如使用聲學模型和語言模型的系統)提供的文本輸出。所述方法可在操作10中開始,在操作10中激活語音控制系統。舉例來說,在一個實施例中,用戶可按壓按鈕或按壓并固持按鈕或選擇或啟動語音輔助應用程序或僅僅開啟調用語音輔助應用程序作為始終運行的后臺守護程序的數據處理系統。在已經激活語音控制系統(例如,語音輔助應用程序為最前端的且具有語音輸入焦點)之后,語音控制系統接收語音輸入(12)。在一個實施例中,用戶可口述例如“call John Smith on mobile (呼叫約翰 史密斯的移動電話)”或“tell John Smith that I am in traffic and will be late forthe meeting(告訴約翰 史密斯我在途中且將見面遲到)”或“play all songs by theBeatles (播放披頭士的所有歌曲)”或 “tell my son to pick up milk if he goes toSafeway after school (讓我兒子去取牛奶,如果他放學后去西夫韋的話)”等命令。接著,在操作14中,常規的語音識別系統或語音識別器可識別在口述輸入中所接收的字詞,所述口述輸入已經使用可采用聲學模型和語言模型兩者的常規語音識別系統來數字化并處理以產生可呈單一代碼(Unicode)或ASCII格式或編碼或其它字符編碼的文本輸出。常規的語音控制或語音識別系統此時使用所得輸出而不進行進一步處理。在本發明的至少一些實施例中,進一步處理所述輸出以便確定是否修復由操作14所提供的來自語音識別器系統的識別文本輸出中的一個或一個以上字詞。舉例來說,在本發明的一個實施例中,通過處理識別文本(其可呈單一代碼編碼形式)以確定是否可修復識別文本中的一個或一個以上字詞來執行操作16。在一個實施例中,由一組解釋器執行所述修復,其中每一解釋器經設計或配置以修復特定類型的錯誤,例如數據庫的數據結構的特定字段中的錯誤。舉例來說,一個解釋器可經配置且設計以修復通訊錄數據庫的名字中的錯誤,而另一解釋器可經設計以修復通訊錄數據庫中的公司名稱中的錯誤。下文中通過使用不同算法(包括不同處理算法或搜索算法)來進一步描述每一解釋器經配置以修復特定字段中的特定類型的錯誤的方式。作為操作16中的處理的結果,在操作18中提供經修復文本,且接著所述經修復文本可作為實際命令提供到特定應用程序,所述特定應用程序可為一組應用程序內的一個應用程序。 在一個實施例中,數據處理系統可在所述組中包括兩個應用程序,例如由語音輸入控制的電話撥號器和由語音輸入控制的媒體播放器(例如iTunes)。在另一實施例中,所述組應用程序可包括那些應用程序以及文本消息接發(SMS-短消息接發服務)應用程序,和電子郵件應用程序,和日歷應用程序,和備忘錄應用程序,和本地搜索應用程序和視頻會議應用程序和人員或物體定位應用程序。本地搜索應用程序是其中用戶指令數據處理系統提供關于在地理上靠近用戶當前位置的本地公司或本地實體的信息的應用程序。舉例來說,本地搜索口述命令可為“find a Chinese restaurant (尋找中式餐廳)”,其可調用通過網絡瀏覽器進行搜索以基于用戶當前位置來查找本地中式餐廳。或者,在本地搜索應用程序的情況下,口述命令可為“call DNJ Auto Repair (呼叫DNJ汽車修理廠)”。如果用戶系統中的通訊錄數據庫未包括DNJ汽車修理廠的條目,那么系統可作為響應來調用網絡搜索以在用戶當前位置(例如,由GPS接收器確定的位置)本地的區域中查找稱為DNJ汽車修理廠的公司。圖2展示數據處理系統的架構的實例,其可包括多個軟件模塊或硬件子系統來實施圖2中所展示的每一塊,所述塊還包括數據結構,例如數據庫和來自所述模塊的輸出。在一個實施例中,元件201、205、207、211、215和219中的每一者可實施為軟件模塊或軟件應用程序,其通過一個或一個以上API進行交互以便執行圖3中所展示的方法或圖5A中所展示的方法或圖3和5A中所展示的方法的組合。圖2中所展示的架構還可包括語音輔助應用程序,其將經數字化的語音輸入提供到語音識別器系統201 ;在一個實施例中,語音輔助應用程序可包括經展示為元件207的所述組解釋器和經展示為元件215的控制器,且語音輔助應用程序可作為經展示為元件205的預處理器進行操作。另外,語音輔助應用程序還可包括經展示為元件211的上下文確定模塊。
圖2中的元件201可包括常規的語音識別器系統,其采用聲學模型和語言模型兩者來識別來自人類用戶的經數字化口述命令或輸入中的字詞。在一個實施例中,麥克風收集來自人類用戶的口述聲音,且那些聲音經數字化并提供到經展示為元件201的語音識別器系統,所述語音識別器系統又產生經展示為元件203的呈例如單一代碼等字符編碼格式的識別文本輸出。此文本輸出203接著被提供到元件205,所述元件205可為創建修復數據結構的預處理器,所述修復數據結構可在一個實施例中為使用標記的剖析數據結構,下文中結合圖7進一步描述所述剖析數據結構,圖7提供在(例如)圖3中所展示的方法或圖5A中所展示的方法的修復過程中所使用的此剖析數據結構的實例。在一個實施例中,標記可在數據結構中用以表示文本輸出203中的每一字詞,且元件207中的所述組解釋器可對那些標記或字詞進行操作以便確定是否修復文本輸出203中的每一字詞。在一個實施例中,可在元件207中包括任選的語法剖析器以便確定短語中的哪個字詞是可用以從所述組應用程序中選出特定應用程序的命令,如下文中將結合圖5A進一步描述。在圖4中展示可在元件207中使用的一組解釋器的實例,其包括可使用不同算法來搜索其對應數據庫或處理字詞以確定文本輸出中的字詞與對應數據庫中的字詞之間是否存在匹配的一組解釋器。圖8展示可由所述組解釋器中的一個或一個以上解釋器使用以便確定在文本輸出203中的字詞與一個或一個以上數據庫(例如圖4中所展示的通訊錄數據庫415)中的字詞之間是否存在匹配的算法的實例。下文中將結合圖4和8進一步描述這些各種算法。元件211可為上下文確定模塊,例如圖6中所展示的上下文確定模塊601。來自元件211中的此上下文確定模塊的輸出被提供到元件207中所展示的所述組解釋器中的一個或一個以上解釋器,以便供這些解釋器在確定文本輸出203中的字詞是否可由每一解釋器修復時使用上下文。所述解釋器中的每一者可經配置或設計以與一個或一個以上數據庫(例如元件209中的數據庫)交互。這些數據庫可包括通訊錄或地址簿數據庫、電子郵件數據庫、文本消息接發數據庫、媒體數據庫(例如iTunes數據庫或者歌曲或電影或歌曲與電影的組合的數據庫)等。在本發明的一個實施例中還可包括其它數據庫和用以在那些數據庫中交互的對應解釋器。在典型操作中,經設計以與特定數據庫交互(而不與其它數據庫交互)的解釋器將處理除了命令字詞以外的每一字詞以確定所述字詞是否匹配其對應數據庫中的現有字詞以及其匹配程度。舉例來說,名字解釋器可使用如圖8中所展示的η碼組算法通過搜索通訊錄數據庫以查找可能是名字的字詞且接著經由使用一個或一個以上算法確定是否應執行修復來在通訊錄數據庫中搜索此字詞的匹配,所述一個或一個以上算法經設計以確定所述數據庫中的字詞與當前正由解釋器處理的字詞之間的匹配程度。在一個實施例中,每一解釋器處理文本輸出203中的除了命令字詞以外的每個字詞以確定所述解釋器是否能修復所述字詞。此外,每一解釋器可提供指示匹配程度或是否應當用在數據庫中找到的替代字詞來修復字詞的得分或置信度。元件207中所展示的所述組解釋器可在一個實施例中提供一組替代解釋213,且在一個實施例中,這些替代解釋由元件215中所示的控制器來處理,所述元件215可排列且合并解釋器的結果以便提供經合并的解釋217,所述經合并的解釋217可接著被提供到作為語音輸入中的命令的目標的應用程序。在一個實施例中,元件215中的控制器可為圖4中所展示的控制器模塊411,其與圖4中所展示的一組解釋器交互,所述組解釋器又通過在一個或一個以上數據庫中執行搜索并使用一個或一個以上算法處理那些數據庫中的匹配來與所述一個或一個以上數據庫交互,如下文中進一步描述。例如圖5B中所展示的語音輔助應用程序511等語音輔助應用程序可向API調用經展示為元件219的目標應用程序且可提供所述命令和經修復的轉錄(其在一個實施例中為經合并的解釋217)作為那些調用的參數。圖3中展示用于修復識別文本輸出(例如識別文本輸出203)中的字詞的方法。圖3的方法可用圖2中所展示的架構和用圖4中所展示的架構來執行,且使用圖5B中所展示的一個或一個以上API。此外,圖3的方法可使用語音輔助應用程序,其可基于在識別文本輸出203中所檢測到的命令來從一組應用程序中選出應用程序。圖3的方法可在操作301中開始,在操作301中語音識別系統產生初始轉錄。此可為圖2中所展示的識別文本輸出203。操作301中所使用的語音識別系統可為用以在經數字化的語音輸入中識別字詞的語音識別器系統201,其包括常規的聲學模型和語言模型。在操作303中,正在執行圖3的方法的數據處理系統可創建用于初始轉錄的剖析數據結構。此剖析數據結構可在圖3的修復過程中使用,且此數據結構的實例在圖7中展示,下文中將進一步描述圖7。在操作305中,系統確定轉錄中的命令,且還確定用戶和/或系統上下文。所述命令可通過要求用戶首先口述命令或通過使用剖析文本輸出(例如文本輸出203)的語法剖析器確定命令且因此命令字詞本身在文本輸出(例如文本輸出203)中的位置來確定。另外,在圖3中所展示的實施例中,操作305還包括確定用戶和/或系統上下文。上下文信息可包括哪些應用程序被啟動且正在運行以及哪些應用程序未被啟動且不在運行的列表、媒體播放器是否正在播放媒體(例如歌曲或電影),且還可包括基于傳感器(例如接近傳感器、定向傳感器、加速計和其它傳感器)的用戶狀態。另外,上下文信息還可包括先前會話歷史,其可包括(對于所述組應用程序中的每一應用程序)先前所識別的文本,例如播放披頭士專輯“阿比大街(Abbey Road) ”等。在一個實施例中,上下文可包括先前會話中提及的應用程序領域,且還可包括當前應用程序狀態是否期望來自用戶的確認(例如是或否或取消等)。(用于確認的)選擇值可由系統基于當前會話上下文來指定。舉例來說,用戶要求系統向朋友發送電子郵件。在撰寫消息之后,系統請求用戶進行確認。此時,確認選擇值由“是”、“取消”和“對其進行改變”填充。在一個實施例中,上下文信息還可包括用戶的當前位置,例如可在如本文中所描述用戶請求本地搜索的情況下使用的當前GPS位置。上下文信息還可包括場所上下文和/或語言上下文;舉例來說,輸入語言上下文可由所述組解釋器用來輔助語音修復。在一個實施例中,當語言上下文(在一個實施例中,其是根據用戶的偏好設置來確定的)為英語時,那么解釋器可將文本輸出(來自語音識別系統的初始轉錄)中的“yet (仍)”修復為“yes (是)”。
在操作307中,在一個實施例中,系統執行所述組解釋器中的每一解釋器以便確定是否需要修復所述轉錄(例如,識別文本輸出203)且其是否能被修復。在一個實施例中, 在操作307中執行所述組解釋器中的所有解釋器。在另一實施例中,僅執行用于當前正在執行的應用程序的那些解釋器來確定是否需要針對僅那些當前正在執行的應用程序修復所述轉錄。在一個實施例中,每一解釋器基于其算法來自行決定其是否能修復由語音識別器系統(例如圖2的元件201中的語音識別器系統)所提供的識別文本輸出中的一個或一個以上字詞。此操作經展示為元件309。如果沒有解釋器能修復或決定不需要修復,那么在操作311中,使用由語音識別器系統所提供的初始轉錄(例如識別文本輸出203)且將其提供到選定應用程序。另一方面,如果已經確定一個或一個以上字詞為可修復的,那么提供一組替代解釋313,其包括初始轉錄(例如,識別文本輸出203)以及經修復的解釋。舉例來說,如果確定用戶在其通訊錄數據庫中沒有“John (約翰)”而是在其通訊錄數據庫中具有 “Jon (喬恩)”,那么字詞“Jon (喬恩)”將為字詞“John (約翰)”的替代解釋。每一解釋器維持指示一個或一個以上替代解釋的匹配程度的得分或置信度,所述解釋器可將所述得分或置信度提供到(例如)控制器,例如圖4中所展示的控制器模塊411。所述得分或置信度可在排列各種解釋時使用以便選擇最高匹配解釋。所述得分或置信度可基于每個字詞或基于每個短語(例如,兩個或三個字詞)來確定。接著,在操作315中,控制器模塊或其它模塊可執行合并操作,其在一個實施例中試圖基于由每一解釋器所提供的置信得分或匹配或排列得分來合并不重疊的解釋。可接著在操作317中將作為已被修復的最終轉錄的經合并解釋提供到選定應用程序。在一個實施例中,所述選定應用程序是基于在操作305中識別或確定的命令來選擇的。
圖4展示使用一組解釋器和控制器模塊來修復初始轉錄(例如識別文本輸出203) 中的字詞的架構的實例。在一個實施例中,每一解釋器經配置或設計以通過其恰當使用算法來處理一個或一個以上數據庫的某些字段中的字詞。舉例來說,在圖4中所展示的實施例中,解釋器401經配置以使用算法A修復通訊錄數據庫415的名字字段中的字詞,所述算法A可在一個實施例中為η碼組算法,例如圖8中所展示的算法。在一個實施例中,解釋器可采用若干個算法或僅一個算法。除了 η碼組算法之外,算法還可包括模糊匹配算法,其可使用測量兩個文本之間的相似性的編輯距離或可使用語音學匹配算法,例如雙變音位算法或探測算法。另外,可使用前綴、后綴部分標記算法,且還可使用此項技術中已知的用于確定兩個文本之間的匹配或相似性程度的其它算法。在一個實施例中,不同解釋器使用不同算法,使得一個解釋器可使用算法Α,而另一解釋器使用算法B而非算法Α。在一個實施例中,所述算 法經定制以在對應數據庫中找出匹配且搜索數據庫,且明確地說,針對每一解釋器經設計以校正的特定字段而定制。解釋器403可為使用算法A的姓氏解釋器,且解釋器 405可為使用算法B的全名解釋器。另外,圖4中所展示的所述組解釋器可包括公司名稱解釋器407,其使用與算法B和算法A不同的算法C。解釋器401、403、405和407中的每一者能夠存取通訊錄數據庫415而非數據庫414以便搜索以查找其對應字段中的每一者中的匹配。除了針對不同字段使用不同算法之外,每一解釋器可在搜索其對應數據庫時采用不同搜索算法。圖4中所展示的所述組解釋器還包括媒體播放器解釋器409,其經設計以搜索媒體數據庫414(例如歌曲和/或電影以及其它媒體的iTunes數據庫等)中的一個或一個以上字段。
圖4中所展示的架構中的每一解釋器可將一個或一個以上替代解釋(例如所述組替代解釋213)提供到控制器模塊411。舉例來說,名字解釋器401可提供在口述命令中似乎是名字的內容的兩個不同替代解釋,且那兩個不同解釋將各自包括指示所述解釋正確的置信度或概率的打分或等級。在一個實施例中,得分或等級是基于匹配或相似性的級別。圖 8展示具有不同得分的兩個解釋的實例。
圖8展示可如何使用η碼組算法來提供用于排列匹配的得分的實例。在此實例中, 來自語音識別器系統的文本(例如識別文本輸出203)包括字詞“cream(奶酪)”801。接著將來自語音識別器系統的此字詞與在用戶的地址簿中找到的至少兩個不同字詞803和805 進行比較,且明確地說,將字詞801與字詞803和805進行比較,如圖8中所展示。算法通過將字符對與文本801進行比較來提供得分。如從圖8中可以看到,名字“Kream(克林姆)” 是比在地址簿中找到的另一名字(具有得分O的名字805)接近的匹配(因為其具有得分 3)。
所述組解釋器中的每一解釋器可使用由上下文確定模塊(例如元件211中所展示的上下文確定模塊或圖6中的上下文確定模塊601)所提供的上下文信息。上下文可包括指示是否針對所述組應用程序中的一個或一個以上應用程序口述命令的先前會話歷史以及任選地,命令本身和字詞本身。先前會話歷史603提供此信息,其還可包括例如觸摸屏或鍵盤上的用戶輸入等先前用戶輸入等。上下文確定模塊可根據先前會話歷史而且還根據應用程序的狀態605確定上下文,所述應用程序的狀態605可包括指示哪些應用程序被啟動且正在執行、哪些應用程序未被啟動且因此不在執行以及媒體是否正在播放等的指示符。舉例來說,媒體播放器解釋器409可使用媒體正在播放時的上下文指示符來將字詞 “stock(股票)”的初始轉錄修復為“stop (停止)”,因為用戶先前已經致使媒體開始播放且在媒體正在播放時的那個上下文中,由媒體播放器解釋器409將字詞“stock(股票)”解釋為“stop (停止)”。上下文確 定模塊可確定語言或場所上下文,如本文中所描述。上下文確定模塊601還可包括來自傳感器(例如定向傳感器或接近傳感器或光傳感器等)的輸入作為上下文確定過程的一部分。另外,上下文確定模塊601可包括先前用戶輸入歷史。上下文確定模塊601收集此各種關于上下文的信息,且將其提供到解釋器,所述解釋器使用所述上下文來幫助決定是否能在口述命令輸入中修復字詞。
現將結合圖7提供根據本發明的實施例的具體實施方案。數據結構701用標記 703表示識別文本輸出中的字詞。
語音識別過程獲取語音音頻記錄且將其轉錄為一個或一個以上文本解釋。初始轉錄被展示為文本字符串705。這些轉錄文本存儲在表狀數據結構中,所述表狀數據結構在一個實施例中被稱為識別且展示在圖7中。
識別的基本構造是標記。標記是表示轉錄的原子單位的不可變字符串。如果轉錄由一序列標記703組成,那么每一標記被包封在稱為短語707的第二級數據結構中。短語是支柱-主要數據結構。短語對象的有序列表形成識別。短語數據結構的存在將允許替代轉錄。
舉例來說,當用戶說“Call John Smith on mobile (呼叫約翰 史密斯的移動電話)”時,語音輔助應用程序可產生圖7中所展示的識別
語音修復過程獲取識別對象(圖7中所展示)作為輸入且在原始識別的任何部分需要且能修復的情況下產生經修改的識別對象。
可創建稱為元修復的內部數據結構以輔助語音修復過程。此數據結構可由以下各項組成原始識別對象(圖7中所展示)、修復對象和相對于原始轉錄的標記位置。
此處是用于圖7中所展示的數據結構的標記位置查找表的實例
Pair<Start, End〉特定標記字符串相對于原始識別文本的開始和結束位置
“Call John Smith on Mobile (呼叫約翰·史密斯的移動電話)”
元修復的標記位置列表
[O] :Pair<0, 3>
[I] :Pair<5,8>
[2]:Pair<10, 14>
[3]:Pair<16, 17>
[4] :Pair<19, 24>
元修復的修復對象由語音修復程序所產生的替代解釋列表組成。用以表示替代解釋的數據結構稱為修復解釋。
修復解釋由作為用于原始識別中的子字符串的看似可能的替換的文本以及所述子字符串的開始和結束位置組成。舉例來說,如果“Jon (喬恩)”應為用于“John (約翰)” 的替代,那么用于圖7中所展示的數據結構的修復解釋可被描述為如下
修復解釋
文本“Jon”
開始5
結束8
元修復對象含有用以執行解釋合并的信息。合并邏輯在將原始轉錄在一個實施例中傳遞通過所有解釋器之后且在產生一個或一個以上修復解釋的情況下發生。以下偽碼提供可用以合并來自所述組解釋器的不重疊的解釋的合并函數的實例。在圖7中展示 “INPUT:original:Recognition (輸入:原始:識別)”。
FUNCTION merge
INPUT: original: !Recognitionrepair: :RepairOUTPUT: original:!Recognition
BEGIN
IF repair.getRepairInterpretationO is EMPTYRETURN original;
ELSE
String originalText = repair.getOriginalTexti);
List interpretations = repair.getRepairInterpretationsi);·List ranked = rank(origina!Text, interpretations);
List nonOverlap = findNonOverlap[nterpretations(ranked);
FOR each Rep air I n terpre tat i ο n i in nonOverlapLisr<Phrasc> phrases = findRcpairPhrases(original, i)
LiToken'· tokens makeRepairTokens(i);addTokensToPhraseHeadfphrase, tokens);
END FOR
Rh i URN original;
L\D
FUNCTION rank
INP UT: originalText:: String
interpretations: :List<RepairhH.erpretation>
OUTPUT: ranked::LJst<Repairinterpretation-'"
RH I L RN a sorted interpretation list using a custom Java Compaiator thatimposes a totai ordering on a collection of objects.
Collections.sort(sorted, new Comparator<Repair.1nterpretation>() {@Overricie
public int compare(Repair.1nterpretation ol,
Repair.1nterpretation o2) {
if (scoreinterpretation(ol) > scoreinterpretation(o2)) {return -1;
} else if (scoreInterpretation(ol) <scoreTnterpretariorj(o2)) {return I;
} else [return 0;
private float scorcintcrprctation(Rcpair.1nterpretation itp) {float score 0;
if (itp.1sPerfectMatcli(getOrigmalText())) { score = getOriginalT ext().1 ength();
}
score += (float) itp.getLerigth() / getOriginatText().lengtli();return score;
}
});
END圖5A說明本發明的一個實施例,其可使用允許系統基于在口述命令中檢測到的命令來選擇確定為口述命令的目標的恰當應用程序的語音輔助應用程序。在一個實施例中,語音輔助應用程序可使用語法剖析器來在口述命令中檢測命令且進而選擇恰當的應用程序或者可要求用戶在每個口述命令中將命令口述為第一個字詞,使得系統可確定哪個字詞相對于口述輸入中的其它字詞來說是命令。在此實施例中,系統可基于口述命令來選擇特定應用程序且進而不要求用戶在口述命令之前選擇應用程序以便使得所述應用程序成為系統的具有語音輸入焦點的最前端應用程序。換句話說,在此實施例中,語音輔助應用程序可基于對于一個應用程序為恰當的命令來從一組應用程序中選出所述一個應用程序。在操作501中,系統可接收可指向一組應用程序中的一個應用程序的語音輸入。所述應用程序可正在執行或不在執行。在一個實施例中,所述方法可經配置以使得僅正在執行的應用程序將在所述組應用程序中,而在另一實施例中,所有應用程序不管是否正在執行均可在所述組應用程序中使得每一應用程序可接收語音輸入。在操作503中,語音輔助應用程序可接著確定語音輸入中的命令,且可接著基于所確定的命令來選擇恰當的應用程序。舉例來說,如果命令是“call (呼叫)”,那么在一個實施例中恰當的應用程序是用以與語音輸入(例如,call mom at home (呼叫在家里的媽媽))中所指定的人員建立電話呼叫的電話撥號器。所述命令可通過使用語法剖析器定位命令來確定,其中可通過指令用戶使用動詞來要求所述命令為動詞,或系統可要求用戶將命令放置在口述字詞序列中的固定位置中。在一個實施例中,如果命令為字詞“tell (告訴)”,那么選定應用程序是文本消息接發(SMS)應用程序;如果命令是字詞“播放”或字詞“停止”,那么選定應用程序是媒體播放器應用程序7等等。接著,在操作505中,執行解釋器以修復識別語音輸入中的一個或一個以上字詞。如果在執行解釋器之前在操作503中選擇應用程序,那么可僅執行經設計以與所述特定應用程序一起工作的那些解釋器而非執行所述系統中對于能夠通過語音輸入接收口述命令的所有應用程序可用的所有解釋器。操作505類似于操作307,且可結合圖6中所展示的上下文確定模塊來使用圖4中所展示的架構。在一個實施例中,不修復在操作503中確定或檢測到的命令。在此情況下,解釋器在對解釋器與之交互的一個或一個以上數據庫執行搜索時將文本輸入中的命令分析為結束字詞。接著,在操作507中,語音輔助應用程序可將命令傳遞到在操作503中確定的選定應用程序且可將經修復的轉錄(其通過執行解釋器和合并替代解釋來產生)傳遞到選定應用程序。在一個實施例中,語音輔助應用程序可執行將命令連同經修復的轉錄傳遞通過API,例如如圖5B中所展示的一個或一個API。圖5B中所展示的語音輔助應用程序511可與執行圖5A的一個或一個以上方法的語音輔助應用程序相同。語音輔助應用程序511可通過經由API 514對操作系統516進行上下文調用來確定上下文,所述操作系統516又返回上下文信息,例如上文描述和/或圖6中展示的上下文信息。上下文信息還可包括哪些應用程序正在執行以及哪些應用程序先前接收到用戶輸入或先前接收到口述命令的列表。語音輔助應用程序511還可對語音識別器系統進行調用,所述語音識別器系統可為在圖5B中所展示的系統上執行的軟件應用程序,其表示包括操作系統516以及語音輔助應用程序511和一組應用程序中的一個或一個以上應用程序(例如應用程序518和520)的軟件堆疊。應用程序518和520可接收從語音輔助應用程序傳遞通過API 512的命令。下文是在一個實施例中由語音輔助應用程序所進行的語音修復的三個使用實例。(I) “對齊網格”話音撥號。語音輔助應用程序允許用戶使用語音呼叫地址簿數據庫中的聯系人。用戶在地址簿中具有名為“Marc Dickinson(瑪克 迪金森)”的聯系人,而沒有名為“馬克(Mark) ”或“迪克(Dick) ”的聯系人。當用戶說“Call Marc Dickinson(呼叫瑪克·迪金森)”時,語音識別不正確地將輸入轉錄為“Call Mark Dick son (呼叫馬克 迪克兒子)”。代替告訴用戶所述輔助程序因為其無法在數據庫中找到“Mark Dick son (馬克 迪克兒子)”而無法完成所述操作,語音修復可利用聯系人姓名拼寫且使用模糊匹配算法來產生較為看似可能的替代轉錄“Call Marc Dickinson(呼叫瑪克·迪金森)”。(2)消除用戶意圖的歧義。輔助語音應用程序允許用戶發送SMS消息且做出話音撥號請求。當用戶說“Tell my wife to pick up milk and fruits if she goes to Safeway after work(讓我妻子去取牛奶和水果,如果她在下班后去西夫韋的話)”時,輔助程序自動地向用戶的妻子編寫文本消息。歸因于識別錯誤,語音系統可不正確地將動作字詞“tell (讓)”轉錄為“call (呼叫)”或“tall (高)”。因為請求“Call my wife to pick up milk and fruitsif she goes toSafeway after work (呼叫我妻子去取牛奶和水果,如果她在下班后去西夫韋的話),,或 “tall my wife to pick up milk and fruits if she goes to Safewayafter work(高我妻子去取牛奶和水果,如果她在下班后去西夫韋的話)”在一個實施例中不會映射到輔助程序中的任何可起作用的任務,所以默認響應通常是“Sorry!〗 don’ tknow what you meant (對不起!我不知道你的意思)”。語音修復可通過使用上下文消除語音意圖的歧義來解決此問題。舉例來說,在已知字詞“tell (讓)”和“tall (高)”之間的編輯距離較短且話音撥號命令通常在目標人員標記之后沒有長連續字符串的情況下,解釋器可將原始轉錄重寫為“Tell my wife to pick up milk and fruits if she plan to visitSafeway after work(讓我妻子去取牛奶和水果,如果她打算在下班后去西夫韋的話)”。
(3)消除命令/系統關鍵字詞的歧義。 語音系統可不正確地轉錄短關鍵字詞發音。舉例來說,用戶說“Stop (停止)”而初始轉錄為“Stock (股票)”;用戶說“Yes (是)”而初始轉錄為“Yet (仍)”。語音修復可通過基于一個或一個以上上下文線索而在原始轉錄文本為較不看似可能的解釋時提供替代轉錄來解決這些問題。舉例來說,當輔助程序正提示用戶以獲得是/否確認時,用戶將不可能說“Yet (仍)”作為跟隨響應。代替返回“Yet (仍)”作為最終轉錄,語音修復可用“Yes (是)”來將其蓋寫作為較看似可能的語音輸入。類似的修復邏輯適用于媒體播放器領域。如果用戶剛剛請求播放歌曲而緊接的語音轉錄為“Stock(股票)”,那么語音修復可用“Stop (停止)”來將其蓋寫作為較看似可能的命令轉錄。圖9展示可與本發明的一個實施例一起使用的數據處理系統900的實例。舉例來說且在一個實施例中,系統900可實施為便攜式數據處理裝置,例如智能電話或輸入板(例如,iPad)裝置或膝上型計算機或娛樂系統。圖9中所展示的數據處理系統900包括處理系統911,其可為一個或一個以上微處理器或其可為單芯片系統(集成電路),且所述系統還包括用于存儲數據和程序以供處理系統執行的存儲器901。存儲器901可存儲(例如)結合圖2所描述的軟件組件,且存儲器901可為任何已知形式的機器可讀非暫時存儲媒體,例如半導體存儲器(例如,快閃;DRAM ;SRAM ;等等)。系統900還包括音頻輸入/輸出子系統905,其可包括麥克風和揚聲器,以用于例如重放音樂或通過揚聲器和麥克風提供電話功能性。麥克風可接收本文中所描述的語音輸入,且所述輸入可經數字化并提供到如本文中所描述的語音識別器系統。顯示器控制器和顯示裝置909可為用戶提供視覺用戶接口 ;此接口可包括圖形用戶接口,其類似于當在iPhone或iPad上運行OS X操作系統軟件或iOS軟件時在麥金托什計算機上所展示的圖形用戶接口。系統900還包括一個或一個以上無線收發器903來與另一數據處理系統通信。無線收發器可為WLAN收發器(例如,WiFi)、紅外線收發器、藍牙收發器和/或無線蜂窩式電話收發器。將了解,額外組件(未圖示)在某些實施例中也可為系統900的一部分,且在某些實施例中,比圖9中所展示的組件少的組件也可在數據處理系統中使用。系統900進一步可包括一個或一個以上通信端口 917以與另一數據處理系統通信。通信端口可為USB短路、火線端口、藍牙接口、對接端口等。數據處理系統900還包括一個或一個以上輸入裝置913,其經提供以允許用戶向系統提供輸入。這些輸入裝置可為小鍵盤或鍵盤或觸摸板或多點觸摸板,其與例如顯示裝置909等顯示裝置重疊并集成。數據處理系統900還可包括任選的輸入/輸出裝置,其可為用于對接口的連接器。將了解,一個或一個以上總線(未圖示)可用以互連各種組件,如此項技術中眾所周知的。圖9中所展示的數據處理系統可為手持式計算機或個人數字助理(PDA),或具有PDA類功能性的蜂窩式電話,或包括蜂窩式電話的手持式計算機,或媒體播放器(例如iPod),或游戲或娛樂裝置,或組合這些裝置的多個方面或功能的裝置(例如在一個裝置中與PDA和蜂窩式電話組合的媒體播放器或嵌入式裝置或其它消費型電子裝置)。在其它實施例中,數據處理系統900可為網絡計算機或位于另一裝置內的嵌入式處理裝置,或具有比圖9中所展示的組件少的組件或可能多的組件的其它類型的數據處理系統。數據處理系統900可任選地包括一個或一個以上硬件裝置,其經設計以數字化并存儲由音頻I/O 905中的麥克風所接收的人類語音。本發明的至少某些實施例可為數字媒體播放器(例如便攜式音樂和/或視頻媒體播放器)的一部分,所述數字媒體播放器可包括用以呈現媒體的媒體處理系統、用以存儲媒體的存儲裝置,且可進一步包括與天線系統和媒體處理系統耦合的射頻(RF)收發器(例如,用于蜂窩式電話的RF收發器)。在某些實施例中,存儲在遠程存儲裝置上的媒體可通過RF收發器發射到媒體播放器。媒體可為(例如)一個或一個以上音樂或其它音頻、靜止圖片或運動圖片。便攜式媒體播放器的實例在第7,345,671號公開美國專利和第2004/0224638號美國公開專利申請案中描述,所述兩者均以引用的方式并入本文中。可在一些實施例中使用一個或一個以上應用程序編程接口(API)。API是由程序代碼組件或硬件組件(下文中稱為“API實施組件”)實施的接口,其允許不同的程序代碼組件或硬件組件(下文中稱為“API調用組件”)接入并使用由API實施組件所提供的一個或一個以上函數、方法、程序、數據結構、類別和/或其它服務。API可界定在API調用組件與API實施組件之間傳遞的一個或一個以上參數。API允許API調用組件的開發者(其可為第三方開發者)利用由API實施組件所提供的指定特征。可存在一個API調用組件或可存在一個以上此類組件。API可為計算機系統或程序庫提供以便支持請求來自應用程序的服務的源代碼接口。操作系統(OS)可具有多個API來允許在OS上運行的應用程序調用那些API中的一者或一者以上,且服務(例如程序庫)可具有多個API來允許使用所述服務的應用程序調用那些API中的一者或一者以上。API可依據可在構建應用程序時解釋或編譯的編程語言來指定。在一些實施例中,API實施組件可提供一個以上API,其各自提供由API實施組件實施的功能性的不同視圖或具有接入由API實施組件實施的功能性的不同方面的不同方面。舉例來說,API實施組件的一個API可提供第一組功能且可暴露到第三方開發者,且API實施組件的另一 API可被隱蔽(不暴露)且提供第一組功能的子組并還提供另一組功能,例如測試或調試不在第一組功能中的功能。在其它實施例中,API實施組件可自身經由基礎API調用一個或一個以上其它組件且因此為API調用組件和API實施組件兩者。API界定API調用組件在接入并使用API實施組件的指定特征時使用的語言和參數。舉例來說,API調用組件通過由API暴露的一個或一個以上API調用或引用(例如由函數或方法調用來體現)接入API實施組件的指定特征且經由API調用或引用使用參數傳遞數據和控制信息。API實施組件可響應于來自API調用組件的API調用而通過API返回值。盡管API界定API調用的語法和結果(例如,如何調用API調用以及API調用進行什么),但API可不展現API調用如何完成所述API調用所指定的函數。經由調用(API調用組件)與API實施組件之間的一個或一個以上應用程序編程接口來傳送各種API調用。傳送API調用可包括發布、起始、引用、調用、接收、返回或響應于所述函數調用或消息;換句話說,傳送可描述API調用組件或API實施組件中的任一者所進行的動作。API的函數調用或其它引用可通過參數列表或其它結構發送或接收一個或一個以上參數。參數可為常數、關鍵字、數據結構、對象、對象類別、變量、數據類型、指針、陣列、列表或指向函數或方法的指針或者用以提及將經由API傳遞的數據或其它項目的另一方式。此外,數據類型或類別可由API提供且由API實施組件實施。因此,API調用組件可聲明變量、使用指針、通過使用在API中所提供的定義來使用或例示所述類型或類別的
常數值。一般來說,API可用以接入由API實施組件提供的服務或數據,或起始由API實施組件所提供的操作或計算的執行。借助于實例,API實施組件和API調用組件可各自為操作系統、庫、裝置驅動器、AP1、應用程序或其它模塊中的任一者(應理解,API實施組件和API調用組件可為彼此相同或不同類型的模塊)。API實施組件可在一些情況下至少部分地以固件、微碼或其它硬件邏輯來體現。在一些實施例中,API可允許客戶端程序使用由軟件開發套件(SDK)庫所提供的服務。在其它實施例中,應用程序或其它客戶端程序可使用由應用程序框架所提供的API。在這些實施例中,應用程序或客戶端程序可并入對由SDK提供和由API提供的函數或方法的調用,或使用在SDK中界定和由API提供的數據類型或對象。應用程序框架可在這些實施例中為對所述框架所界定的各種事件做出響應的程序提供主要事件環路。API允許應用程序使用應用程序框架指定所述事件以及對事件的響應。在一些實施方案中,API調用可向應用程序報告硬件裝置的能力或狀態,包括與例如輸入能力和狀態、輸出能力和狀態、處理能力、功率狀態、存儲容量和狀態、通信能力等方面相關的那些,且API可部分地通過固件、微碼或部分地在硬件組件上執行的其它低級邏輯來實施。API調用組件可為本地組件(B卩,在與API實施組件相同的數據處理系統上)或遠程組件(即,在與API實施組件不同的數據處理系統上),其經由網絡通過API而與API實施組件進行通信。應理解,API實施組件也可充當API調用組件(即,其可對由不同API實施組件暴露的API做出API調用),且API調用組件也可通過實施暴露到不同API調用組件的API來充當API實施組件。API可允許以不同編程語言編寫的多個API調用組件與API實施組件通信(因此,API可包括用于翻譯API實施組件與API調用組件之間的調用和返回的特征);然而,API可依據特定編程語言來實施。API調用組件可在一個實施例中調用來自不同提供者的API,例如來自OS提供者的一組API和來自插件提供者的另一組API和來自另一提供者(例如,軟件庫的提供者)或另一組API的創建者的另一組API。圖11為說明可在本發明的一些實施例中使用的示范性API架構的框圖。如圖11中所展示,API架構1100包括實施API 1120的API實施組件1110 (例如,操作系統、庫、裝置驅動器、AP1、應用程序、軟件或其它模塊)。API 1120指定可由API調用組件1130使用的API實施組件的一個或一個以上函數、方法、類別、對象、協議、數據結構、格式和/或其它特征。API 1120可指定至少一個調用協定,其指定API實施組件中的函數如何從API調用組件接收參數且所述函數如何將結果返回到API調用組件。API調用組件1130(例如,操作系統、庫、裝置驅動器 、AP1、應用程序、軟件或其它模塊)通過API1120做出API調用以接入并使用API實施組件1110的由API 1120指定的特征。API實施組件1110可響應于API調用而通過API 1120將值返回到API調用組件1130。將了解,API實施組件1110可包括未通過API 1120指定且不可由API調用組件1130獲得的額外函數、方法、類別、數據結構和/或其它特征。應理解,API調用組件1130可位于與API實施組件1110相同的系統上或可遠程地定位且經由網絡使用API 1120接入API實施組件1110。盡管圖11說明單個API調用組件1130與API 1120交互,但其理解,可以與API調用組件1130不同的語言(或相同的語言)編寫的其它API調用組件也可使用 API 1120。API實施組件1110、API 1120和API調用組件1130可存儲在機器可讀非暫時存儲媒體中,所述機器可讀非暫時存儲媒體包括可由機器(例如,計算機或其它數據處理系統)讀取的呈有形形式的用于存儲信息的任何機制。舉例來說,機器可讀媒體包括磁盤、光盤、隨機存取存儲器、只讀存儲器、快閃存儲器裝置等,且可為本地存儲媒體或位于通過一個或一個以上網絡耦合到客戶端裝置的遠程裝置上的存儲媒體。在圖10 (“軟件堆疊(示范性實施例)中,應用程序可使用若干服務API對服務I或2且使用若干OS API對操作系統(OS)做出調用。服務I和2可使用若干OS API對OS做出調用。請注意,服務2具有兩個API,其中一者(服務2 API I)從應用程序I接收調用且將值返回到應用程序1,且另一者(服務2 API 2)從應用程序2接收調用且將值返回到應用程序2。服務I (其可例如為軟件庫)對OS API I做出調用且從OS API I接收返回值,且服務2 (其可例如為軟件庫)對OS API I和OS API 2兩者做出調用且從OS API I和OSAPI 2兩者接收返回值。應用程序2對OS API 2做出調用且從OS API 2接收返回值。說明書中對“一個實施例”或“一實施例”的參考意味著結合所述實施例描述的特定特征、結構或特性包括在本發明的至少一個實施例中。在說明書的各種地方出現短語“在一個實施例中”不必全部指代同一實施例。在前述說明書中,已經參考本發明的特定示范性實施例來描述了本發明。將明顯的是,可在不脫離如所附權利要求書中所陳述的本發明的較廣精神和范圍的情況下對本發明做出各種修改。因此,應在說明性意義而非限制性意義上看待說明書和圖式。
權利要求
1.一種機器實施的方法,其包括 從數據處理系統的用戶接收語音輸入; 在所述數據處理系統中確定所述語音輸入的上下文; 通過語音識別系統在所述語音輸入中識別文本,所述文本識別產生文本輸出; 將所述文本輸出存儲為具有多個標記的經剖析數據結構,所述多個標記各自表示 所述文本輸出中的字詞; 用一組解釋器處理所述標記中的每ー者,其中每ー解釋器經設計以修復所述文本輸出中的特定類型的錯誤,捜索ー個或ー個以上數據庫以識別所述數據庫中的ー個或ー個以上項目與所述標記中的每ー者之間的匹配,且根據所述所識別的匹配和所述上下文確定所述解釋器是否能修復所述文本輸出中的標記; 合并由所述組解釋器產生的選定結果以產生經修復的語音轉錄,所述經修復的語音轉錄表示所述文本輸出的經修復版本;以及 基于所述經修復的語音轉錄中的命令而將所述經修復的語音轉錄提供到一組應用程序中的選定應用程序,其中所述選定應用程序經配置以執行所述命令。
2.根據權利要求1所述的方法,其中所述上下文包括先前用戶輸入歷史,且其中所述ー個或ー個以上數據庫包括通訊錄數據庫,所述通訊錄數據庫存儲姓名、地址和電話號碼中的至少ー者。
3.根據權利要求1到2中任ー權利要求所述的方法,其中所述上下文包括會話歷史,其中所述ー個或ー個以上數據庫包括媒體數據庫,所述媒體數據庫存儲歌曲、題目和藝術家中的至少ー者,且其中所述組解釋器中的解釋器在評估可能的匹配時使用至少兩個字詞的字符串。
4.根據權利要求1到2中任ー權利要求所述的方法,其中所述組解釋器中的第一解釋器使用第一算法來確定是否修復字詞,且所述組解釋器中的第二解釋器使用第二算法來確定是否修復字詞,所述第一算法不同于所述第二算法。
5.根據權利要求4所述的方法,其中所述組解釋器中的第三解釋器使用第三算法來搜索所述ー個或ー個以上數據庫,且所述組解釋器中的第四解釋器使用第四算法來捜索所述ー個或ー個以上數據庫,所述第三算法不同于所述第四算法。
6.根據權利要求1到2中任ー權利要求所述的方法,其中所述組解釋器中的所述解釋器不試圖修復所述命令。
7.根據權利要求1到2中任ー權利要求所述的方法,其中所述合并僅合并來自所述組解釋器的不重疊結果,并且將來自所述組解釋器的重疊結果排列在分級組中,且選擇所述分級組中的一個結果并將其合并到所述經修復的語音轉錄中。
8.根據權利要求1到2中任ー權利要求所述的方法,其中每ー解釋器經設計以修復的所述特定錯誤類型是基于由所述解釋器捜索的所述ー個或ー個以上數據庫中的一個或ー個以上字段來確定的。
9.根據權利要求1到2中任ー權利要求所述的方法,其中所述組解釋器在確定是否修復所述文本輸出中的ー個或ー個以上字詞時搜索所述ー個或ー個以上數據庫以將所述文本輸出中的字詞與所述ー個或ー個以上數據庫中的ー個或ー個以上項目進行比較。
10.根據權利要求1到2中任ー權利要求所述的方法,其中語法剖析器根據所述文本輸出確定所述命令。
11.根據權利要求1到2中任ー權利要求所述的方法,其中所述組應用程序包括以下各項中的至少兩者(a)電話撥號器,其使用所述經修復的語音轉錄來撥打電話號碼;(b)媒體播放器,其用于播放歌曲或其它內容;(C)文本消息接發應用程序;(d)電子郵件應用程序;(e)日歷應用程序;⑴本地搜索應用程序;(g)視頻會議應用程序;或(h)人員或物體定位應用程序。
12.—種數據處理系統,其包括 語音識別器,其可操作以在語音輸入中識別文本且產生文本輸出; 上下文確定模塊,其可操作以確定所述語音輸入的上下文; 麥克風,其耦合到所述語音識別器以將所述語音輸入提供到所述語音識別器; 存儲裝置,其用于將所述文本輸出存儲為具有多個標記的經剖析數據結構,所述多個標記各自表示所述文本輸出中的字詞; 一組解釋器,其耦合到所述語音識別器和所述上下文確定模塊,其中每ー解釋器經設計以修復所述文本輸出中的特定類型的錯誤,捜索ー個或ー個以上數據庫以識別所述數據庫中的ー個或ー個以上項目與所述標記中的每ー者之間的匹配,且根據所述所識別的匹配和所述上下文確定所述解釋器是否能修復所述文本輸出中的標記;以及 控制器,其用于合并由所述組解釋器產生的選定結果以產生經修復的語音轉錄且用于基于所述經修復的語音轉錄中的命令來將所述經修復的語音轉錄提供到一組應用程序中的選定應用程序,其中所述經修復的語音轉錄表示所述文本輸出的經修復版本,且所述選定應用程序經配置以執行所述命令。
13.根據權利要求12所述的系統,其中所述上下文包括先前用戶輸入歷史,且其中所述ー個或ー個以上數據庫包括通訊錄數據庫,所述通訊錄數據庫存儲姓名、地址和電話號碼中的至少ー者。
14.根據權利要求12到13中任ー權利要求所述的系統,其中所述上下文包括會話歷史,其中所述ー個或ー個以上數據庫包括媒體數據庫,所述媒體數據庫存儲歌曲、題目和藝術家中的至少ー者,且其中所述組解釋器中的解釋器在評估可能的匹配時使用至少兩個字詞的字符串。
15.根據權利要求12到13中任ー權利要求所述的系統,其中所述組解釋器中的第一解釋器使用第一算法來確定是否修復字詞,且所述組解釋器中的第二解釋器使用第二算法來確定是否修復字詞,所述第一算法不同于所述第二算法。
16.根據權利要求15所述的系統,其中所述組解釋器中的第三解釋器使用第三算法來捜索所述ー個或ー個以上數據庫,且所述組解釋器中的第四解釋器使用第四算法來捜索所述ー個或ー個以上數據庫,所述第三算法不同于所述第四算法。
17.根據權利要求12到13中任ー權利要求所述的系統,其中所述組解釋器中的所述解釋器不試圖修復所述命令。
18.根據權利要求12到13中任ー權利要求所述的系統,其中所述合并僅合并來自所述組解釋器的不重疊結果,并且來自所述組解釋器的重疊結果被排列在分級組中,且所述分級組中的一個結果被選擇且合并到所述經修復的語音轉錄中。
19.根據權利要求12到13中任ー權利要求所述的系統,其中每ー解釋器經設計以修復的所述特定錯誤類型是基于由所述解釋器捜索的所述ー個或ー個以上數據庫中的ー個或ー個以上字段來確定的。
20.根據權利要求12到13中任ー權利要求所述的系統,其進ー步包含語法剖析器,所述語法剖析器用于根據所述文本輸出確定所述命令。
全文摘要
本發明涉及用于使用上下文信息的語音識別修復的方法和系統。本發明提供一種語音控制系統,其可識別口述命令和相關聯的字詞(例如“呼叫在家里的媽媽”)且可致使選定應用程序(例如電話撥號器)執行所述命令以致使例如智能電話等數據處理系統執行基于所述命令的操作(例如查找媽媽在家里的電話號碼并撥打所述號碼以建立電話呼叫)。所述語音控制系統可使用一組解釋器來修復來自語音識別系統的經識別文本,且來自所述組的結果可被合并為最終經修復轉錄,所述最終經修復轉錄被提供到所述選定應用程序。
文檔編號G10L15/08GK103035240SQ201210369739
公開日2013年4月10日 申請日期2012年9月28日 優先權日2011年9月28日
發明者陳力 申請人:蘋果公司