MRCP學習筆記-語音識別語法技術細節(SRGS)

2021-01-09 CTI論壇

  前面的講座中,我們介紹了描述語音合成標記語言。在上一個講座中,筆者介紹了語音合成標記語言的基本語法和使用方式。在今天的章節中,我們繼續介紹MRCP協議中另外一個重要的語言語法-語音識別語言的技術細節(英文全稱是:Speech Recognition Grammar Specification)。Speech Recognition Grammar Specification我們簡稱為SRGS。

  SRGS是W3C定義的一種標準,在MRCP v2的規定中沒有太多具體的規定,但是在語音識別伺服器的設置方面需要其相關參數。因此,筆者認為有必要做一些具體的介紹。SRGS用來支持應用開發人員通過設定的單詞或單詞模式的語法結構,這個語法結構能夠被語音識別引擎聽或者識別。SRGS支持兩種語法格式,它們分別是XML格式和ABNF格式。在我們介紹的語法格式中,我們會重點介紹XML格式,因為在MRCP協議中我們主要還是使用XML格式。關於ABNF格式,用戶可以參考相關的rfc5234做進一步了解。在本章節中,我們將會介紹SRGS的基本語法,語義說明和一些關聯處理機制。

  1、語音識別的語法是通過對語言限定來支持語音識別的處理。語音識別語法通過語言限定可以減少句子內容的不確定性,從而更好地支持語音識別。正式的語法都是由一系列規則和一些標識,象徵符號通過恰當的排列組成而成。

  SRGS有兩種不同的語法結構。一種是遞歸狀態,表示了一種語法上下文的語法結構。另外一種則不是遞歸狀態,表示了一種有限狀態或規則語法結構。語音識別的核心Hidden Markov Model(HMM)本身就是一個有限狀態機(參考上圖)。現在的語音識別引擎可以支持從由少量單詞組成的語法也可以支持複雜的上百單詞組成的語法結構。語音識別的準確率以及處理速度和語法的複雜程度和語法的困惑度相關。換句話說,如果增加了單詞或語法結構,或增加了語法的困惑度會影響語音識別引擎的執行效率,也會降低語音識別的準確率和處理的速度。我們剛才也提到了困惑度的概念,困惑度簡單來說就是一個語法結構中平均支持的分支節點,如果結束符越多,需要判斷的點會越多。因此,如果開發人員需要完成一套高質量的語法必須有非常大的投入,前期測試和後期維護工作。現在讓我們了解一些關於SRGS中主要的語法結構和其應用。

  2、首先,我們介紹一下SRGS的文件結構。SRGS文件支持XML格式,通過媒體類型application/srgs+xml來定義。以下是SRGS支持的屬性:

  其基本的語法格式為:

  

  

  xmlns="http://www.w3.org/2001/06/grammar"

  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

  xsi:schemaLocation="http://www.w3.org/2001/06/grammar

  http://www.w3.org/TR/speech-grammar/grammar.xsd"

  mode="voice"

  xml:lang="en-GB"

  root="example">

  

  yes

  

  

  這裡,所有的SRGS文件標籤都已開始。讀者需要注意到是mode的屬性。默認屬性是voice,也可以是DTMF,不支持兩種類型混合使用。如果是vocie表示輸入的值是語音;如果是DTMF則表示輸入的值是DTMF。但是,在一些複雜配置環境中,語音識別引擎可以同時激活兩種模式支持。在未來的講座中,我們會涉及這些兩種模式的使用方式。

  3、語法包含一個或多個規則定義。每個規則定義由一個,名稱和ID構成。我們稱每個規則定義的內容為規則擴展。一個規則擴展將匹配完整語句中的部分內容。一個簡單的規則擴展由按序排列的標誌構成。一個單詞加一個空格就是一個標誌單位。

  

  

  xmlns="http://www.w3.org/2001/06/grammar"

  mode="voice"

  xml:lang="en-GB"

  root="pizza">

  I want a hot pepperoni pizza

  I want a hot pepperoni pizza

  

  

  在以上的示例中,語音發音必須全部完整匹配標誌的順序格式。SRGS語法同樣可以支持添加一個或者多個要素來增加語法的可閱讀性。這裡,我們僅介紹了一個非常簡單,定義非常嚴格的規則擴展。事實上,SRGS可以實現非常強大的語法擴展,我們在後續的章節中會逐步介紹。

  4、在規則擴展中可以支持多個可選項的設置。SRGS使用和要素來表達。每個中可以包含多個item規則擴展。

  

  xmlns="http://www.w3.org/2001/06/grammar"

  mode="voice"

  xml:lang="en-GB"

  root="pizza">

  

  I want a hot

  

  pepperoni

  vegetarian

  cheese

  pizza

  

  以上可選項支持了非常靈活的語法結構。它可以匹配:

  I want a hot pepperoni pizza

  I want a hot vegetarian pizza

  I want a hot cheese pizza

  高級語法中可以對不同的選項設置不同的權重。權重值等於1表示無權重,小於1表示負面的偏好,大於1表示正面的偏好。在上面的語法中,我們可以添加權重來表示特定的優先級設置,發生機率高於其他選項設置:

  

  xmlns="http://www.w3.org/2001/06/grammar"

  mode="voice"

  xml:lang="en-GB"

  root="pizza">

  I want a hot

  

  pepperoni

  vegetarian

  cheese

  pizza

  

  5、SRGS的規則擴展中可以支持一個參照規則來引入其他的規則,通過要素加以說明。規則參照的主要目的是重用規則擴展。其用法規則如下:

  

  

  xmlns="http://www.w3.org/2001/06/grammar"

  mode="voice"

  xml:lang="en-GB"

  root="pizza">

  I want a hotpizza

  

  

  pepperoni

  vegetarian

  cheese

  

  

  可參照的規則通過URI屬性的值來定義。當然,它也可以通過一個完整的URL來定義:。

  6、SRGS通過預留的名稱定義了三種特別的規則,它們分別是:NULL,VOID 和GARBAGE。其作用表示:

  NULL,如果講話者沒有說任何語句,自動匹配為Null。

  VOID,在排列順序中是一個相反的效果,它說明順序從來沒有匹配。

  GARBAGE,則會一直匹配,直到下一個標誌,語法擴展或結束輸入。

  

  

  xmlns="http://www.w3.org/2001/06/grammar"

  mode="voice"

  xml:lang="en-GB"

  root="pizza">

  I want a hotpizza

  

  在以上的語法中,任何語句內容都可以匹配此語法規則(介於hot和pizza之間的輸入內容)。例如,「I want a hot something or other pizza」就可以匹配以上語法規則。

  7、SRGS提供了一個結構支持規則擴展重複。通過一個重複的要素設置可以增加語法的緊湊性。大家可以想像一下,如果在語法中需要定義一個數值長度的話,可能需要從0到9這樣的設置,我們使用,則需要很多次重複的語句,語句就會顯得非常冗長。以下是repeat 屬性的設置語法:

  repeat 表示的取值範圍如下:

  0-1表示包含的規則開展內容是可選的

  0-表示至少包含零次,一次或多次規則擴展

  1-表示至少發生一次匹配

  以下就是一個使用repeat的示例,表示允許用戶說「very」 三次。

  

  xmlns="http://www.w3.org/2001/06/grammar"

  mode="voice"

  xml:lang="en-GB"

  root="pizza">

  I want a

  veryhotpizza

  

  

  pepperoni

  vegetarian

  cheese

  

  

  SRGS的語法也可以支持在語音通信領域中用戶經常使用的DTMF按鍵。很多時候,用戶通過DTMF輸入來確認一些系統信息,例如密碼或其他語音選項設置。SRGS的DTMF和通信領域中的DTMF按鍵有所不同,通信領域的可以接受0-9數字,ABCD等其他字符設置,而SRGS支持0-9數字,語法結構也比較簡單,以下是一個可以接受4位數DTMF的語法格式:

  

  

  xmlns="http://www.w3.org/2001/06/grammar"

  mode="dtmf"

  root="digits">

  

  

  

  

  

  

  0

  1

  2

  3

  4

  5

  6

  7

  8

  9

  

  

  

  8、在SRGS語法提供了對語義解釋(SISR)的兩種方式,它們可以通過tag-format來獲得支持。很多情況下,我們使用不同的表達方式來解釋同一種結果。其中一種是semantics/1.0-literals的方式,這裡無論用戶以哪種方式說yes/no,都會返回yes/no的結果,其數值結構是ECMAScript 的數據格式。

  

  

  xmlns="http://www.w3.org/2001/06/grammar"

  mode="voice"

  xml:lang="en-GB"

  root="yesno"

  tag-format="semantics/1.0-literals">

  

  

  yes

  yeayes

  ayeyes

  no

  nopeno

  nahno

  

  

  

  另外一種是使用語義腳本語言,通過tag-format-semantics/1.0獲得支持。tag中的內容被看作是ECMAScript 代碼。ECMAScript是一種腳本語言,類似於我們現在通常用到的JavaScript。

  

  

  xmlns="http://www.w3.org/2001/06/grammar"

  mode="voice"

  xml:lang="en-GB"

  root="pizza"

  tag-format="semantics/1.0">

  

  I want a

  

  largeout.size="large";

  smallout.size="small";

  

  

  pepperoniout.sort=1;

  vegetarianout.sort=2;

  cheeseout.sort=3;

  

  pizza

  

  

  這裡,我們假設發音是」I want a large vegetarian pizza「,那麼返回ECMAScript 腳本對象的兩個屬性是size 和 sort類型,其值分別是large和2。其取值變量遵循的是ECMAScript 標準。腳本的對象數值是:

  {

  size: "large",

  sort: 2

  }

  這個標識符表示了腳本的數據結構,語音應用程式將其數值存儲為資料庫的數據以便將來使用。semantics/1.0還支持了meta 數據的表達方式等靈活的處理方式,我們這裡不再做更多介紹。具體的實現方式建議大家參考相關的SISR技術資料。另外,語義腳本語言支持的是ECMScript, 關於腳本語言的使用方式和變量取值等內容,讀者可以參考我們的連結。

  9、在本章節中,我們重點介紹了SRGS技術細節中幾個主要的概念和要素使用方式以及其相關的語法結構。首先,筆者對語音識別語法的背景做了簡單介紹,然後對一些關鍵語法做了細緻的介紹,包括的關鍵語法為可選項設置,重複語法設置,預留的三種特殊設置,語義腳本結構(SISR),DTMF設置等設置語法。這些關鍵語法可以幫助優化語法文件的結構,增加其靈活性和緊湊性,從而使其語法規則更接近於人類的自然語言。

  在接下來的章節中,筆者會介紹自然語言語義標識語言(NLSML)的語法結構和其使用方式。

  參考資料:

  https://tools.ietf.org/rfc/rfc5234.txt

  http://cs229.stanford.edu/section/cs229-hmm.pdf

  關於SISR標準技術:https://www.w3.org/TR/semantic-interpretation/

  http://www.ecma-international.org/publications/standards/Ecma-327.htm

  HMM介紹-A Tutorial on Hidden Markov Models and

  Selected Applications in Speech Recognition

 

  unimrcp-MRCP協議學習分享,QQ群號:208136295

  關注微信公眾號:asterisk-cn,獲得有價值的行業分享

  freepbx 技術論壇:www.ippbx.org.cn

  Asterisk, freepbx技術文檔: www.freepbx.org.cn

  歐米(Omni)智能客服解決方案

  融合通信商業解決方案,協同解決方案首選產品:www.hiastar.com

 

相關焦點

  • MRCP協議學習筆記-語音合成標記語言(SSML)-2
    此部分包括了讀音中的Prosody的語音語調設置參數(break,emphasis,讀音和控制參數 voume,speak rate, pitch),標記符和metadata。通過第二部分的介紹,結合第一部分的知識,筆者會給讀者提供一個非常完整的語音合成標記語言(SSML)的介紹。現在,我們將對第二部分的細節進行逐一介紹。
  • MRCP學習筆記-自然語言語義標識語言(NLSML)
    NLSML是W3C的一個發布標準,MRCP協議借用了NLSML的部分技術細節,經過一些裁剪實現了MRCP的NLSML版本。在今天的章節中,我們將涵蓋MRCP的自然語言語義標識語言一些關鍵配置參數和使用示例。  1、首先,我們介紹一下NLSML的一些背景信息。MRCP中的NLSML實際上是一種數據交換的格式,它介於語音識別和說話人確認資源的之間。
  • 語音識別技術簡史
    作者 | 陳孝良,馮大航,李智勇【CSDN 編者按】語音識別自半個世紀前誕生以來,一直處於不溫不火的狀態,直到 2009 年深度學習技術的長足發展才使得語音識別的精度大大提高,雖然還無法進行無限制領域、無限制人群的應用,但也在大多數場景中提供了一種便利高效的溝通方式。
  • 玩人工智慧的你必須知道的語音識別技術原理
    語音識別技術正逐步成為計算機信息處理技術中的關鍵技術,語音技術的應用已經成為一個具有競爭性的新興高技術產業。  1、語音識別的基本原理  語音識別系統本質上是一種模式識別系統,包括特徵提取、模式匹配、參考模式庫等三個基本單元,它的基本結構如下圖所示:
  • FinTech時代商業銀行智能語音識別技術應用與發展
    1.語音識別技術發展  語音識別技術按照發展和應用程度,可分為早期實驗研究階段、實用階段、現代語音識別系統開發應用階段。  (3)現代語音識別系統開發應用階段  近些年,隨著大數據和深度學習技術的發展,深度學習方法逐漸被引入到語音識別系統中,相較於傳統的語音識別技術,識別性能獲得了顯著提升。  目前,市場上的語音識別系統大多基於深度神經網絡模型進行建模,大幅提升了各種應用場景下語音識別的準確度和可靠性,使語音識別技術進入了新的應用階段。
  • 語音識別原理及其語音識別系統分類
    一、語音識別原理語言交流是人類一種天然的溝通模式。從兒童時代開始我們對語言的相關學習都是自發的,語言交流始終貫穿於我們的生活。它是那麼的自然以至於我們根本沒有發現這是一種多麼複雜的現象。一個標準的語音識別系統如下圖所示。
  • 語音識別揭秘:你的手機究竟有多理解你?
    大規模的語音識別研究始於70年代,並在單個詞的識別方面取得了實質性的進展。上世紀80年代以後,語音識別研究的重點逐漸轉向更通用的大詞彙量、非特定人的連續語音識別。90年代以來,語音識別的研究一直沒有太大進步。但是,在語音識別技術的應用及產品化方面取得了較大的進展。自2009年以來,得益於深度學習研究的突破以及大量語音數據的積累,語音識別技術得到了突飛猛進的發展。
  • 排名 語音識別_語音識別技術排名 - CSDN
    該成果有望推動語音識別技術的大幅進步,已超越人類專業速記員的水平」的字眼令正在從事語音識別研究的科研工作者和技術提供商一陣錯愕,不明真相的群眾紛紛認為當前語音識別已經刷無可刷,語音識別技術已經沒有門檻,語音識別是已經解決的問題了……但是事實並不是這樣,在LibriSpeech這種簡單數據集上「刷」到詞錯誤率2.97%並不困難,語音識別領域仍存在大量的問題需要解決。
  • ZLG深度解析:語音識別技術
    語音識別已成為人與機器通過自然語言交互重要方式之一,本文將從語音識別的原理以及語音識別算法的角度出發為大家介紹語音識別的方案及詳細設計過程。語言作為人類的一種基本交流方式,在數千年歷史中得到持續傳承。近年來,語音識別技術的不斷成熟,已廣泛應用於我們的生活當中。語音識別技術是如何讓機器「聽懂」人類語言?
  • 基於Julius的機器人語音識別系統構建
    語音識別技術的發展,使得這一理想得以實現,把語音識別技術與機器人控制技術相結合,正成為目前研究的熱點,不但具有較好的理論意義,而且有較大的實用價值。   語音識別技術應用於機器人系統大多是針對特定的環境,設計出語音命令來進行控制的。
  • 語音識別技術原理全面解析
    語音識別技術正逐步成為計算機信息處理技術中的關鍵技術,語音技術的應用已經成為一個具有競爭性的新興高技術產業。  60年代末、70年代初的重要成果是提出了信號線性預測編碼(LPC)技術和動態 時間規整(DTW)技術,有效地解決了語音信號的特徵提取和不等長語音匹配問題;同時提出了矢量量化(VQ)和隱馬爾可夫模型(HMM)理論。語音識別技 術與語音合成技術結合使人們能夠擺脫鍵盤的束縛,取而代之的是以語音輸入這樣便於使用的、自然的、人性化的輸入方式,它正逐步成為信息技術中人機接口的關 鍵技術。
  • 從不溫不火到炙手可熱:語音識別技術簡史
    【導讀】語音識別自半個世紀前誕生以來,一直處於不溫不火的狀態,直到 2009 年深度學習技術的長足發展才使得語音識別的精度大大提高,雖然還無法進行無限制領域、無限制人群的應用,但也在大多數場景中提供了一種便利高效的溝通方式。本篇文章將從技術和產業兩個角度來回顧一下語音識別發展的歷程和現狀,並分析一些未來趨勢,希望能幫助更多年輕技術人員了解語音行業,並能產生興趣投身於這個行業。
  • 語音識別算法有哪些_語音識別特徵提取方法
    語音識別算法有哪些_語音識別特徵提取方法 網絡整理 發表於 2020-04-01 09:24:49   語音識別算法有哪些   本文列舉了幾種不同的語音識別算法
  • 智能語音識別技術入門系列(上)
    本系列文章開始,我們將一起探索自動識別、語言處理技術所包含的核心算法、模型及未來的發展趨勢。本篇文章我們主要討論語音識別的基本概念。並理解語音識別技術的流程。(一) 自動語音識別技術ASR自動語音識別,簡稱ASR。
  • 智能語音前沿技術——發音檢錯糾錯和語音轉換
    語音技術包含:語音識別、語音合成、聲紋識別、語音評測、語音轉換等,其中發音檢錯糾錯和語音轉換技術近期有了新的突破。 發音檢錯糾錯 英語是當今世界上最為通用的語言,其重要性已為所有人深刻領會。由於英語的強勢地位,目前被超過100個國家作為外語教學的第一外語。
  • 語音識別第一課:基於Tensorflow的端到端語音識別技術
    全文共6655字,預計學習時長13分鐘本文闡述了如何利用Tensorflow編寫一個基本的端到端自動語音識別(Automatic Speech Recognition,ASR)系統,詳細介紹了最小神經網絡的各個組成部分以及可將音頻轉為可讀文本的前綴束搜索解碼器。
  • 新東方在線重塑新概念英語課程,增加智能語音識別功能
    新東方在線重塑新概念英語課程,增加智能語音識別功能 同時還新增智能語音識別功能,系統將自動對學生的語音進行智能判斷,採用不同顏色標識其發音情況。  新概念作為英語學習過程中最經典的系列課程,一直深受學子推崇,如何更加高效地學習新概念課程,也成為眾多教育培訓機構長期研究的課題。新東方在線新概念課程由擁有十年以上教學經驗的新東方優秀教師霍娜、田靜和李延隆領銜主講。
  • DSP開發板的語音識別系統的研究
    0 引言  語音識別技術的目的是使機器能理解人類語言,最終使人機通信成為現實。在過去幾十年,自動語音識別(AutomaticSpeech Recognition,ASR)技術已經取得了非常重大的進步。  ASR系統已經能從處理像數字之類的小詞彙量到廣播新聞之類的大詞彙量。
  • 先進語音識別技術 步步高T800點讀機簡評
    在鞏固知識的同時,讓孩子感受到自己的進步和學習的樂趣。    步步高點讀機採用人教、外研、牛津、北師大等各大出版社原版母音(即磁帶母音),發音標準清晰,家長再也不用擔心自己發音不準而誤導孩子。步步高點讀機通過中國教育學會外語教學專業委員會權威語音認證,發音標準可信賴,適合孩子模仿練習。英語元音、輔音音標學習,並配有真人發音及口型指導圖,幫孩子打好口語基礎。
  • 淺談自然場景中的語音情感識別技術
    語音是人類最基本、最便捷的交流工具,承載了複雜信息的語音信號不僅可以反映語義內容,還能夠傳遞說話人內在的情感狀態。語音情感識別是 建立在對語音信號的產生機制深入研究與分析的基礎上,對語音中反映個人情感信息的一些特徵參數進行提取,並利用這些參數採用相應的模式識別方法確定語音情感狀態的技術。