您當前的位置是:  首頁 > 新聞 > 國內 >
 首頁 > 新聞 > 國內 >

MRCP協(xié)議學習筆記-語音合成標記語言(SSML)-1

2018-06-20 13:54:58   作者:james.zhu   來源:CTI論壇   評論:0  點擊:


  在前面的幾個章節(jié)中,我們花費了很多時間在討論一些關于智能語音機器人開發(fā)中的重要協(xié)議MRCP, 以及基本框架和基礎知識。在以前的講座中,我們簡單介紹了MRCP的背景,技術架構,媒體資源服務器的類型,和其控制協(xié)議。筆者通過完整的框架介紹,讀者可以已經基本了解了MRCP的大概處理流程。通過前面的熱身階段的介紹,我們才能真正開始深入的其他方面的知識。這些深入的細節(jié)能夠幫助用戶徹底了解MRCP協(xié)議。因此,我們仍然還需要了解更多關于MRCP的數(shù)據(jù)呈現(xiàn)或表達的格式(SSML,NLSML和PLS),媒體資源服務器的處理方式(TTS/SS,ASR,SR和SVI),以及一些關于語音識別的應用。從本章節(jié)開始,我們將逐步討論MRCP的數(shù)據(jù)格式的具體細節(jié)。今天,筆者先和大家分享語音合成標記語言(SSML)的第一部分。
  1、大家知道,媒體資源服務器需要通過講話人的輸入數(shù)據(jù)來作為處理數(shù)據(jù),媒體資源服務器不僅要支持普通的文本格式也可以支持帶標識的文本格式。MRCP支持了W3C的語音合成標識語言(SSML)。目前SSML的最新版本是1.1版本。最初,SSML細節(jié)是基于升陽公司的JSGF和JSML發(fā)展而成。W3C發(fā)布了很多關于標識語言的細節(jié),SSML僅是其其中一個部分。
  SSML是一種標準的,基于XML的標識,使用這些標識來命令語音合成服務器把書寫格式的語言(輸入)轉化成可讀的輸出結果。簡單來說,就是把帶有一定文字標識格式的文本語言轉化成可讀的輸出結果。SSML設計的最初目的就是為了幫助開發(fā)人員提高合成結果的內容,通過其格式化,標準化的標識方式來控制語音輸出的各種屬性,例如發(fā)音,音量等參數(shù)設置。因此,設計的幾個關鍵要素我們這里需要說明。以下是SSML的六大設計要求:
  • 一致性:提供可預測的語音輸出控制,支持不同的語音合成服務器部署
  • 兼容性:支持W3C細節(jié),包括但不僅限于VoiceXML,aural Cascading Style Sheets 和 SMIL
  • 通用性:支持各種語音內容
  • 國際化:支持各種語言的語音輸出
  • 自動化和可讀性:支持自動化生成和手寫文檔格式,支持良好的可讀性,使得讀者可讀
  • 可部署性:此技術細節(jié)能夠支持目前現(xiàn)有的技術,盡量減少可選功能數(shù)量。
  2、因為,SSML是一種標識語言,所以必須具備一定的文件結構。其基本的文件結構如下:
  xmlns="http://www.w3.org/2001/10/synthesis"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://www.w3.org/2001/10/synthesis
  http://www.w3.org/TR/speech-synthesis/synthesis.xsd"
  xml:lang="en-GB">
  Hello world!
  所有的SSML文件都需要的root元素標簽入口。因為篇幅的關系,更多完整的關于SSML的語法格式,用戶可以參考W3C官方文檔,我們不做太多說明。這里,我們僅介紹一些常用的語法標識。以下是關于SSML標簽和屬性設置的比較完整的參數(shù)設置,如果讀者想了解最新的標識參數(shù)設置,讀者可以到官方獲取。
  3、SSML具有非常強大的功能支持,比較典型的功能就是錄音文件播放功能。其具體的實現(xiàn)方式是通過一個
  在具體的使用場景中,我們可以通過語音合成的形式,提供文本數(shù)據(jù)以后,通知系統(tǒng)播放一個提前錄制的語音文件,這里的beep文件就是提前錄制的語音文件。
  xmlns="http://www.w3.org/2001/10/synthesis"
  xml:lang="en-GB">
  Please say your name after the beep. // 聽到beep提醒聲音后,說出本人名字
  同樣,SSML也可以非常靈活地提供一個回退功能,如果某些語音文件路徑不正確或者播放失敗的話,SSML可以提供一個可選功能,系統(tǒng)可以實現(xiàn)文字合成功能,SSML會自動播放文字合成的語音,這樣會提升用戶體驗。具體示例如下:
  xmlns="http://www.w3.org/2001/10/synthesis"
  xml:lang="en-GB">
  Welcome to AJAX, the asynchronous company.
  在上面的示例中,如果company-intro語音文件播放失敗的話,SSML會自動合成文字:Welcome to AJAX, the asynchronous company,然后播放。這里提醒用戶,在以前的SSML版本中不能支持提取語音文件超時等控制參數(shù)。在SSML 1.1中和拓展SSML中獲得了支持,這些參數(shù)包括:fetchtimeout,fetchhint,maxage和maxstale。這些參數(shù)可以用來控制語音提取超時設置。
  4、現(xiàn)在讓我們看看SSML是如何實現(xiàn)對語音的發(fā)音的控制。首先說明,筆者對語音學方面的知識不是太了解,我們也沒有專門針對語音學做更多研究,這里為了配合MRCP協(xié)議的研究做了一點簡單的補充,某些表達和翻譯可能不是太準確,如果讀者需要了解更多關于語音學方面的知識,讀者可以參考權威的語音學資料。在MRCP協(xié)議中,SSML是通過元素標簽對發(fā)音進行控制,它可以支持插入的文字進行不同的播放形式,支持的播放形式包括:phonemic或phonetic的形式。phonemic 字母組成一個phoneme單元,相對比較微觀,它是語言獨立的語音單元,表達的所有聲音需要區(qū)別于其他的單詞。phonetic字母則組成了phone單元,它是一種語言相關的語音單元,字符的表達方式和位置都會影響人類語音的發(fā)音區(qū)域,具體的使用方式例如國際音標。通常情況下,在語音合成部署環(huán)境中,SSML會支持 International Phonetic Alphabet (IPA),中文全稱是國際音標。國際音標通過可Unicode的方式來實現(xiàn),Unicode也是國際通用的語言實現(xiàn)標準格式。
  一些商業(yè)語音合成解決方案為了體現(xiàn)其解決方案的優(yōu)勢,也可能添加一些特別字母或其他的商業(yè)字母支持的格式。元素標簽就可以增加對其渲染的支持,例如一些不同于其他語言的專有名詞或短語。例如以下示例:
  xmlns="http://www.w3.org/2001/10/synthesis"
  xml:lang="en-US">
  ph="t mei ou ">
  tomato
  這里使用了國際音標來定義tomato。具體關于tomato的發(fā)音需要根據(jù)ph屬性值來獲取。用戶可以參考 International Phonetic Association來查看如何定義ph屬性。語音識別廠家通過"x-organization" 或"x-organization-alphabet"來定義,例如,日本的一家語音合成廠家的定義值為x-JEITA-IT-4002。
  5、SSML在發(fā)音處理方面還有兩個比較實用的功能,這就是別名替換(使用元素標簽)和文本解釋功能(使用元素標簽)。
  使用的目的在于支持SSML文件同時支持文字書寫格式和其可讀格式,這樣使得文檔格式更加具有可讀性。講話發(fā)音格式通過一個中的alias來實現(xiàn)。具體示例如下:
  xmlns="http://www.w3.org/2001/10/synthesis"
  xml:lang="en-US">
  MRCP
  語音合成引擎通過別名會對"Media Resource Control Protocol"文字進行語音合成,然后播放。
  另外一種使用元素標簽的方式是確保一些短語能夠正確使用,例如以下示例:
  xmlns="http://www.w3.org/2001/10/synthesis"
  xml:lang="en-US">
  IPA
  這里,確保這三個IPA字母組合可以讀成IPA通用的讀音,而不是其他的讀音方式。
  另外一個常用的標簽就是元素標簽。此標簽用來表示文本信息的構成格式,用來進一步設定渲染的內容。大家知道,如果文字內容解釋使用了不同的方式,可能會導致其內容發(fā)音的不同。包含三個不同的屬性設置,它們分別是interpret-as,format 和detail。interpret-as用來表示文本結構的類型。例如,date表示一個日期,telephone表示是一個電話號碼結構。format是一個可選屬性,表示具體的準確的文本結構,例如data的格式:dmy表示讀date格式為日期,月份,最后才是年。detail也是一個可選屬性,它用來表示讀內容的層級,在很多的interpret-as中沒有定義此元素標簽。具體的示例如下:
  2/3/2016
  01:59:59
  12
  9
  在本講座中,我們介紹了SSML的基本概念和W3C相關的技術細節(jié),另外解釋了關于SSML設計的六大原則,這些原則保證了SSML具有良好的兼容性,可以兼容目前主流的語音合成引擎,然后我們介紹了SSML文件的基本結構和其定義的標簽屬性,同時介紹了錄音文件的格式,和其發(fā)音標簽的使用方式。另外,重點說明了關于IPA的使用,文本語音別名使用和文本解釋功能。通過本章節(jié)的介紹,我們相信讀者會對智能語音機器人開發(fā)中的SSML數(shù)據(jù)呈現(xiàn)方式有了比較清晰地認識。
  在接下來的章節(jié)中,我們將繼續(xù)介紹SSML數(shù)據(jù)結構中的Prosody中的音量,語速,標識標記,Metadata等元素標識。
  參考資料:
  https://www.w3.org/TR/speech-synthesis11/
  https://msdn.microsoft.com/en-us/library/dd318693(vs.85)。aspx
        

  unimrcp-MRCP協(xié)議學習分享,QQ群號:208136295
  關注微信公眾號:asterisk-cn,獲得有價值的行業(yè)分享
  freepbx 技術論壇:www.ippbx.org.cn
  Asterisk, freepbx技術文檔: www.freepbx.org.cn
  歐米(Omni)智能客服解決方案
  融合通信商業(yè)解決方案,協(xié)同解決方案首選產品:www.hiastar.com

【免責聲明】本文僅代表作者本人觀點,與CTI論壇無關。CTI論壇對文中陳述、觀點判斷保持中立,不對所包含內容的準確性、可靠性或完整性提供任何明示或暗示的保證。請讀者僅作參考,并請自行承擔全部責任。

專題