溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

如何分析DuerOS中的SSML應(yīng)用

發(fā)布時(shí)間:2022-01-06 16:57:17 來源:億速云 閱讀:163 作者:柒染 欄目:大數(shù)據(jù)

這篇文章將為大家詳細(xì)講解有關(guān)如何分析DuerOS中的SSML應(yīng)用,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個(gè)參考,希望大家閱讀完這篇文章后對(duì)相關(guān)知識(shí)有一定的了解。

在對(duì)話式AI系統(tǒng)中,語(yǔ)音交互是主要的輸入輸出方式。對(duì)語(yǔ)音輸出而言,有兩種主要的方法,一種是事先制作好音頻,然后根據(jù)用戶的請(qǐng)求,播放音頻;另一種是通過語(yǔ)音合成中的TTS技術(shù),將文本轉(zhuǎn)化為語(yǔ)音。在很多情況下,制作的音頻往往要比語(yǔ)音合成的用戶體驗(yàn)要好,因?yàn)槿说穆曇糁杏懈嗟摹吧省保Z(yǔ)音語(yǔ)調(diào)中可以有更多的情緒。

但是,預(yù)先制作的工作量往往較大,而且由于預(yù)制的確定性,導(dǎo)致輸出內(nèi)容的動(dòng)態(tài)性較弱。按需定制,動(dòng)態(tài)輸出正是TTS的強(qiáng)大之處。那么,如何讓TTS的表達(dá)更加生動(dòng)呢?在對(duì)話式AI系統(tǒng)DuerOS中, 內(nèi)容的生動(dòng)化表達(dá)是通過SSML 實(shí)現(xiàn)的。

什么是SSML

SSML是一種標(biāo)準(zhǔn)的,基于XML的標(biāo)記語(yǔ)言,使用這些標(biāo)識(shí)來命令語(yǔ)音合成器/服務(wù)把文本(輸入)轉(zhuǎn)化成可讀的輸出結(jié)果。簡(jiǎn)單來說,就是把帶有一定文字標(biāo)識(shí)格式的文本語(yǔ)言轉(zhuǎn)化語(yǔ)音輸出結(jié)果。

SSML設(shè)計(jì)的最初目的就是為了幫助開發(fā)人員提高合成結(jié)果的內(nèi)容,通過格式化和標(biāo)準(zhǔn)化的標(biāo)記方式來控制語(yǔ)音輸出的各種屬性,例如發(fā)音,音量等參數(shù)設(shè)置。因此,SSML設(shè)計(jì)的幾個(gè)關(guān)鍵要素如下:

  • 一致性:提供可預(yù)測(cè)的語(yǔ)音輸出控制,支持不同的語(yǔ)音合成服務(wù)部署

  • 兼容性:支持W3C的標(biāo)準(zhǔn),包括但不僅限于VoiceXML,ACSS和 SMIL

  • 通用性:支持各種語(yǔ)音內(nèi)容

  • 國(guó)際化:支持各種語(yǔ)言的語(yǔ)音輸出

  • 自動(dòng)化和可讀性:支持自動(dòng)化生成和手寫文本格式,支持良好的可讀性

  • 可部署性:能夠支持目前現(xiàn)有的技術(shù),盡量減少可選功能數(shù)量。

SSML 的工作原理

支持SSML的TTS系統(tǒng)(語(yǔ)音合成處理器)將負(fù)責(zé)將文檔呈現(xiàn)為語(yǔ)音輸出,并使用標(biāo)記中包含的信息按照預(yù)期以音頻形式呈現(xiàn)文檔,主要原理如下:

如何分析DuerOS中的SSML應(yīng)用

1)XML解析:XML解析器用于從傳入的文本文檔中提取文檔樹和內(nèi)容。此步驟中獲得的結(jié)構(gòu)、標(biāo)記和屬性會(huì)影響以下每個(gè)步驟。

2)結(jié)構(gòu)分析:文檔的結(jié)構(gòu)會(huì)影響文檔的閱讀方式。例如,有一些常見的與段落和句子相關(guān)的口語(yǔ)模式。

3)文本規(guī)范化:所有書面語(yǔ)言都有特殊的結(jié)構(gòu),需要將書面形式轉(zhuǎn)換為口語(yǔ)形式。文本規(guī)范化是執(zhí)行此轉(zhuǎn)換的合成處理器的自動(dòng)過程。例如,當(dāng)文檔中出現(xiàn)“$200”時(shí),可以將其稱為“200美元”。到這一步結(jié)束時(shí),要說的文本已經(jīng)完全轉(zhuǎn)換為token,token的具體構(gòu)成細(xì)節(jié)是特定于語(yǔ)言的。標(biāo)記通常用空格分隔,通常是單詞。 一般地,SSML中的標(biāo)記不能跨越其他的標(biāo)記。

4)文本到音位的轉(zhuǎn)換: 一旦語(yǔ)音合成處理器確定了要說的token集合,就必須為每個(gè)token派生發(fā)音。發(fā)音可以很方便地描述為音素序列,它是語(yǔ)言中用來區(qū)分一個(gè)詞和另一個(gè)詞的聲音單位。每種語(yǔ)言都有一個(gè)特定的音位集。

5)韻律分析:韻律是語(yǔ)音輸出的一組特征,包括音調(diào)(也稱為語(yǔ)調(diào)或旋律)、時(shí)間(或節(jié)奏)、停頓、說話速度、對(duì)單詞的強(qiáng)調(diào)和許多其他特征。韻律分析,對(duì)于使語(yǔ)言聽起來自然,正確傳達(dá)語(yǔ)音中的意義是非常重要的。

6)波形生成: 語(yǔ)音合成處理器利用音位和韻律信息生成音頻波形。此處理步驟有許多方法,因此可能存在相當(dāng)大的特定于處理器的變化。

SSML中的元素和屬性示例

SSML是一種標(biāo)記語(yǔ)言,所以必須具備一定的文件結(jié)構(gòu)。所有的SSML文件都需要的Speak元素標(biāo)簽入口,更多關(guān)于SSML的語(yǔ)法格式,可以參考W3C官方文檔,以下是關(guān)于SSML主要標(biāo)簽的說明。

如何分析DuerOS中的SSML應(yīng)用

SSML具有非常強(qiáng)大的功能支持,比較典型的功能就是錄音文件播放功能。其具體的實(shí)現(xiàn)方式是通過一個(gè)<audio>元素標(biāo)簽提供的URL路徑對(duì)語(yǔ)音文件進(jìn)行播放。

下面是W3C規(guī)范中給出的一個(gè)示例:

<?xml version="1.0"?>
<speak version="1.1" 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-synthesis11/synthesis.xsd"
       xml:lang="en-US">
               
  <!-- Empty element -->
 Please say your name after the tone.  <audio src="beep.wav"/>

  <!-- Container element with alternative text -->
  <audio src="prompt.au">What city do you want to fly from?</audio>
 <audio src="welcome.wav">
   <emphasis>Welcome</emphasis> to the Voice Portal.
 </audio>

</speak>

DuerOS中的SSML

在DuerOS的技能開發(fā)中,DuerOS會(huì)將技能返回的response消息里面的文本信息按照一定的規(guī)則轉(zhuǎn)化成語(yǔ)音信息進(jìn)行播放(可以參考面向接口/協(xié)議?看DuerOS的技能開發(fā),用JavaScript打造AI應(yīng)用-從Nodejs SDK 看DuerOS的技能開發(fā)以及從Java SDK看DuerOS的技能開發(fā))。轉(zhuǎn)化后的語(yǔ)音有著與預(yù)期相同的特征,如語(yǔ)調(diào)、語(yǔ)速、停頓等都相同。

如何分析DuerOS中的SSML應(yīng)用

DuerOS支持基礎(chǔ)標(biāo)簽和擴(kuò)展標(biāo)簽兩種?;A(chǔ)標(biāo)簽里的所有標(biāo)簽都是SSML標(biāo)準(zhǔn)標(biāo)簽,相當(dāng)于SSML標(biāo)簽的子集。擴(kuò)展標(biāo)簽指DuerOS使用標(biāo)準(zhǔn)SSML語(yǔ)言定制的標(biāo)簽。

基礎(chǔ)標(biāo)簽

基礎(chǔ)標(biāo)簽?zāi)壳鞍?種:

  • speak:根標(biāo)簽

  • audio:根據(jù)url合成已有音頻

  • say-as:設(shè)置數(shù)字、符號(hào)等的讀法

  • sub:替換目標(biāo)單詞

  • silence:設(shè)置靜音,在文本播報(bào)的開頭或者結(jié)尾增加靜音片段,最大10s

  • phoneme:多音字注音

對(duì)于audio標(biāo)簽而言,音頻以服務(wù)器可以訪問的的地址給出,目前支持16K采樣和24K采樣,16bit,單聲道,44字節(jié)頭的wave格式文件。出于性能的約束,要求必須將相應(yīng)的音頻文件上傳到百度云bos平臺(tái),使用bos提供的地址。單個(gè)請(qǐng)求最大限制3個(gè)并列的audio資源,單個(gè)audio資源大小限制為3M。

使用前需要前把音頻轉(zhuǎn)換為支持的格式,推薦使用ffmpeg。命令參考如下:

ffmpeg -i <input-file> -acodec pcm_s16le -b:a 16k -ar 16000 -ac 1 -flags bitexact <output-file.wav>

audio標(biāo)簽支持單標(biāo)簽和雙標(biāo)簽,如果是雙標(biāo)簽的話,當(dāng)音頻無法訪問時(shí),將合成嵌套文本。

擴(kuò)展標(biāo)簽

擴(kuò)展標(biāo)簽?zāi)壳鞍?種:

  • background:設(shè)置背景聲

  • say-as: 在屬性interpret-as加入兩個(gè)新值,僅對(duì)英文有效

  • poem:設(shè)置詩(shī)詞,屬性值 “wuyan”代表五言詩(shī);“qiyan”代表七言詩(shī);“songci”代表宋詞

  • space: 在所包含文本的空格處生成停頓

其中background標(biāo)簽與audio 標(biāo)簽具有類似的性質(zhì),要求必須將相應(yīng)的音頻文件上傳到百度云bos平臺(tái),使用bos提供的資源url地址。

使用約束

DuerOS 中的SSML實(shí)現(xiàn)是W3C規(guī)范的一個(gè)子集,是應(yīng)用過程中有著如下的約束:

  • audio標(biāo)簽不支持嵌套audio/background(內(nèi)層標(biāo)簽不生效);

  • background/標(biāo)簽不支持嵌套自身,內(nèi)層標(biāo)簽不生效;

  • sub/say-as標(biāo)簽不支持嵌套其他任何標(biāo)簽,會(huì)引發(fā)解析錯(cuò)誤,導(dǎo)致標(biāo)簽按字母朗讀;

  • 非漢字文本內(nèi)部出現(xiàn)標(biāo)簽影響語(yǔ)義轉(zhuǎn)換,建議使用漢字形式請(qǐng)求;

  • &和<符號(hào)在XML中為非法字符,使用前需進(jìn)行轉(zhuǎn)義操作,分別為&和<,另外,>(>)、”(")、’(')也建議使用前進(jìn)行轉(zhuǎn)義

  • 請(qǐng)求文本總長(zhǎng)度(不包含SSML標(biāo)簽)應(yīng)少于1024字節(jié)

需要注意的是,文本的長(zhǎng)度是按照GBK編碼計(jì)算的,文本的內(nèi)容是UTF8編碼,在不使用SSML 的時(shí)候,文本長(zhǎng)度可達(dá)4k。

關(guān)于如何分析DuerOS中的SSML應(yīng)用就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI