在前面的幾個(gè)章節中,我們花費了很多時(shí)間在討論一些關(guān)于智能語(yǔ)音機器人開(kāi)發(fā)中的重要協(xié)議MRCP, 以及基本框架和基礎知識。在以前的講座中,我們簡(jiǎn)單介紹了MRCP的背景,技術(shù)架構,媒體資源服務(wù)器的類(lèi)型,和其控制協(xié)議。筆者通過(guò)完整的框架介紹,讀者可以已經(jīng)基本了解了MRCP的大概處理流程。通過(guò)前面的熱身階段的介紹,我們才能真正開(kāi)始深入的其他方面的知識。這些深入的細節能夠幫助用戶(hù)徹底了解MRCP協(xié)議。因此,我們仍然還需要了解更多關(guān)于MRCP的數據呈現或表達的格式(SSML,NLSML和PLS),媒體資源服務(wù)器的處理方式(TTS/SS,ASR,SR和SVI),以及一些關(guān)于語(yǔ)音識別的應用。從本章節開(kāi)始,我們將逐步討論MRCP的數據格式的具體細節。今天,筆者先和大家分享語(yǔ)音合成標記語(yǔ)言(SSML)的第一部分。
1、大家知道,媒體資源服務(wù)器需要通過(guò)講話(huà)人的輸入數據來(lái)作為處理數據,媒體資源服務(wù)器不僅要支持普通的文本格式也可以支持帶標識的文本格式。MRCP支持了W3C的語(yǔ)音合成標識語(yǔ)言(SSML)。目前SSML的最新版本是1.1版本。最初,SSML細節是基于升陽(yáng)公司的JSGF和JSML發(fā)展而成。W3C發(fā)布了很多關(guān)于標識語(yǔ)言的細節,SSML僅是其其中一個(gè)部分。
SSML是一種標準的,基于XML的標識,使用這些標識來(lái)命令語(yǔ)音合成服務(wù)器把書(shū)寫(xiě)格式的語(yǔ)言(輸入)轉化成可讀的輸出結果。簡(jiǎn)單來(lái)說(shuō),就是把帶有一定文字標識格式的文本語(yǔ)言轉化成可讀的輸出結果。SSML設計的最初目的就是為了幫助開(kāi)發(fā)人員提高合成結果的內容,通過(guò)其格式化,標準化的標識方式來(lái)控制語(yǔ)音輸出的各種屬性,例如發(fā)音,音量等參數設置。因此,設計的幾個(gè)關(guān)鍵要素我們這里需要說(shuō)明。以下是SSML的六大設計要求:
- 一致性:提供可預測的語(yǔ)音輸出控制,支持不同的語(yǔ)音合成服務(wù)器部署
- 兼容性:支持W3C細節,包括但不僅限于VoiceXML,aural Cascading Style Sheets 和 SMIL
- 通用性:支持各種語(yǔ)音內容
- 國際化:支持各種語(yǔ)言的語(yǔ)音輸出
- 自動(dòng)化和可讀性:支持自動(dòng)化生成和手寫(xiě)文檔格式,支持良好的可讀性,使得讀者可讀
- 可部署性:此技術(shù)細節能夠支持目前現有的技術(shù),盡量減少可選功能數量。
2、因為,SSML是一種標識語(yǔ)言,所以必須具備一定的文件結構。其基本的文件結構如下:
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元素標簽入口。因為篇幅的關(guān)系,更多完整的關(guān)于SSML的語(yǔ)法格式,用戶(hù)可以參考W3C官方文檔,我們不做太多說(shuō)明。這里,我們僅介紹一些常用的語(yǔ)法標識。以下是關(guān)于SSML標簽和屬性設置的比較完整的參數設置,如果讀者想了解最新的標識參數設置,讀者可以到官方獲取。

3、SSML具有非常強大的功能支持,比較典型的功能就是錄音文件播放功能。其具體的實(shí)現方式是通過(guò)一個(gè)

在具體的使用場(chǎng)景中,我們可以通過(guò)語(yǔ)音合成的形式,提供文本數據以后,通知系統播放一個(gè)提前錄制的語(yǔ)音文件,這里的beep文件就是提前錄制的語(yǔ)音文件。
xmlns="http://www.w3.org/2001/10/synthesis"
xml:lang="en-GB">
Please say your name after the beep. // 聽(tīng)到beep提醒聲音后,說(shuō)出本人名字
同樣,SSML也可以非常靈活地提供一個(gè)回退功能,如果某些語(yǔ)音文件路徑不正確或者播放失敗的話(huà),SSML可以提供一個(gè)可選功能,系統可以實(shí)現文字合成功能,SSML會(huì )自動(dòng)播放文字合成的語(yǔ)音,這樣會(huì )提升用戶(hù)體驗。具體示例如下:
xmlns="http://www.w3.org/2001/10/synthesis"
xml:lang="en-GB">
Welcome to AJAX, the asynchronous company.
在上面的示例中,如果company-intro語(yǔ)音文件播放失敗的話(huà),SSML會(huì )自動(dòng)合成文字:Welcome to AJAX, the asynchronous company,然后播放。這里提醒用戶(hù),在以前的SSML版本中不能支持提取語(yǔ)音文件超時(shí)等控制參數。在SSML 1.1中和拓展SSML中獲得了支持,這些參數包括:fetchtimeout,fetchhint,maxage和maxstale。這些參數可以用來(lái)控制語(yǔ)音提取超時(shí)設置。
4、現在讓我們看看SSML是如何實(shí)現對語(yǔ)音的發(fā)音的控制。首先說(shuō)明,筆者對語(yǔ)音學(xué)方面的知識不是太了解,我們也沒(méi)有專(zhuān)門(mén)針對語(yǔ)音學(xué)做更多研究,這里為了配合MRCP協(xié)議的研究做了一點(diǎn)簡(jiǎn)單的補充,某些表達和翻譯可能不是太準確,如果讀者需要了解更多關(guān)于語(yǔ)音學(xué)方面的知識,讀者可以參考權威的語(yǔ)音學(xué)資料。在MRCP協(xié)議中,SSML是通過(guò)元素標簽對發(fā)音進(jìn)行控制,它可以支持插入的文字進(jìn)行不同的播放形式,支持的播放形式包括:phonemic或phonetic的形式。phonemic 字母組成一個(gè)phoneme單元,相對比較微觀(guān),它是語(yǔ)言獨立的語(yǔ)音單元,表達的所有聲音需要區別于其他的單詞。phonetic字母則組成了phone單元,它是一種語(yǔ)言相關(guān)的語(yǔ)音單元,字符的表達方式和位置都會(huì )影響人類(lèi)語(yǔ)音的發(fā)音區域,具體的使用方式例如國際音標。通常情況下,在語(yǔ)音合成部署環(huán)境中,SSML會(huì )支持 International Phonetic Alphabet (IPA),中文全稱(chēng)是國際音標。國際音標通過(guò)可Unicode的方式來(lái)實(shí)現,Unicode也是國際通用的語(yǔ)言實(shí)現標準格式。
一些商業(yè)語(yǔ)音合成解決方案為了體現其解決方案的優(yōu)勢,也可能添加一些特別字母或其他的商業(yè)字母支持的格式。元素標簽就可以增加對其渲染的支持,例如一些不同于其他語(yǔ)言的專(zhuān)有名詞或短語(yǔ)。例如以下示例:
xmlns="http://www.w3.org/2001/10/synthesis"
xml:lang="en-US">
ph="t mei ou ">
tomato
這里使用了國際音標來(lái)定義tomato。具體關(guān)于tomato的發(fā)音需要根據ph屬性值來(lái)獲取。用戶(hù)可以參考 International Phonetic Association來(lái)查看如何定義ph屬性。語(yǔ)音識別廠(chǎng)家通過(guò)"x-organization" 或"x-organization-alphabet"來(lái)定義,例如,日本的一家語(yǔ)音合成廠(chǎng)家的定義值為x-JEITA-IT-4002。
5、SSML在發(fā)音處理方面還有兩個(gè)比較實(shí)用的功能,這就是別名替換(使用元素標簽)和文本解釋功能(使用元素標簽)。
使用的目的在于支持SSML文件同時(shí)支持文字書(shū)寫(xiě)格式和其可讀格式,這樣使得文檔格式更加具有可讀性。講話(huà)發(fā)音格式通過(guò)一個(gè)中的alias來(lái)實(shí)現。具體示例如下:
xmlns="http://www.w3.org/2001/10/synthesis"
xml:lang="en-US">
MRCP
語(yǔ)音合成引擎通過(guò)別名會(huì )對"Media Resource Control Protocol"文字進(jìn)行語(yǔ)音合成,然后播放。
另外一種使用元素標簽的方式是確保一些短語(yǔ)能夠正確使用,例如以下示例:
xmlns="http://www.w3.org/2001/10/synthesis"
xml:lang="en-US">
IPA
這里,確保這三個(gè)IPA字母組合可以讀成IPA通用的讀音,而不是其他的讀音方式。
另外一個(gè)常用的標簽就是元素標簽。此標簽用來(lái)表示文本信息的構成格式,用來(lái)進(jìn)一步設定渲染的內容。大家知道,如果文字內容解釋使用了不同的方式,可能會(huì )導致其內容發(fā)音的不同。包含三個(gè)不同的屬性設置,它們分別是interpret-as,format 和detail。interpret-as用來(lái)表示文本結構的類(lèi)型。例如,date表示一個(gè)日期,telephone表示是一個(gè)電話(huà)號碼結構。format是一個(gè)可選屬性,表示具體的準確的文本結構,例如data的格式:dmy表示讀date格式為日期,月份,最后才是年。detail也是一個(gè)可選屬性,它用來(lái)表示讀內容的層級,在很多的interpret-as中沒(méi)有定義此元素標簽。具體的示例如下:
2/3/2016
01:59:59
12
9
在本講座中,我們介紹了SSML的基本概念和W3C相關(guān)的技術(shù)細節,另外解釋了關(guān)于SSML設計的六大原則,這些原則保證了SSML具有良好的兼容性,可以兼容目前主流的語(yǔ)音合成引擎,然后我們介紹了SSML文件的基本結構和其定義的標簽屬性,同時(shí)介紹了錄音文件的格式,和其發(fā)音標簽的使用方式。另外,重點(diǎn)說(shuō)明了關(guān)于IPA的使用,文本語(yǔ)音別名使用和文本解釋功能。通過(guò)本章節的介紹,我們相信讀者會(huì )對智能語(yǔ)音機器人開(kāi)發(fā)中的SSML數據呈現方式有了比較清晰地認識。
在接下來(lái)的章節中,我們將繼續介紹SSML數據結構中的Prosody中的音量,語(yǔ)速,標識標記,Metadata等元素標識。
參考資料:
https://www.w3.org/TR/speech-synthesis11/
https://msdn.microsoft.com/en-us/library/dd318693(vs.85)。aspx


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