中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何分析DuerOS中的SSML應用

發布時間:2022-01-06 16:57:17 來源:億速云 閱讀:168 作者:柒染 欄目:大數據

這篇文章將為大家詳細講解有關如何分析DuerOS中的SSML應用,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。

在對話式AI系統中,語音交互是主要的輸入輸出方式。對語音輸出而言,有兩種主要的方法,一種是事先制作好音頻,然后根據用戶的請求,播放音頻;另一種是通過語音合成中的TTS技術,將文本轉化為語音。在很多情況下,制作的音頻往往要比語音合成的用戶體驗要好,因為人的聲音中有更多的“色彩”,語音語調中可以有更多的情緒。

但是,預先制作的工作量往往較大,而且由于預制的確定性,導致輸出內容的動態性較弱。按需定制,動態輸出正是TTS的強大之處。那么,如何讓TTS的表達更加生動呢?在對話式AI系統DuerOS中, 內容的生動化表達是通過SSML 實現的。

什么是SSML

SSML是一種標準的,基于XML的標記語言,使用這些標識來命令語音合成器/服務把文本(輸入)轉化成可讀的輸出結果。簡單來說,就是把帶有一定文字標識格式的文本語言轉化語音輸出結果。

SSML設計的最初目的就是為了幫助開發人員提高合成結果的內容,通過格式化和標準化的標記方式來控制語音輸出的各種屬性,例如發音,音量等參數設置。因此,SSML設計的幾個關鍵要素如下:

  • 一致性:提供可預測的語音輸出控制,支持不同的語音合成服務部署

  • 兼容性:支持W3C的標準,包括但不僅限于VoiceXML,ACSS和 SMIL

  • 通用性:支持各種語音內容

  • 國際化:支持各種語言的語音輸出

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

  • 可部署性:能夠支持目前現有的技術,盡量減少可選功能數量。

SSML 的工作原理

支持SSML的TTS系統(語音合成處理器)將負責將文檔呈現為語音輸出,并使用標記中包含的信息按照預期以音頻形式呈現文檔,主要原理如下:

如何分析DuerOS中的SSML應用

1)XML解析:XML解析器用于從傳入的文本文檔中提取文檔樹和內容。此步驟中獲得的結構、標記和屬性會影響以下每個步驟。

2)結構分析:文檔的結構會影響文檔的閱讀方式。例如,有一些常見的與段落和句子相關的口語模式。

3)文本規范化:所有書面語言都有特殊的結構,需要將書面形式轉換為口語形式。文本規范化是執行此轉換的合成處理器的自動過程。例如,當文檔中出現“$200”時,可以將其稱為“200美元”。到這一步結束時,要說的文本已經完全轉換為token,token的具體構成細節是特定于語言的。標記通常用空格分隔,通常是單詞。 一般地,SSML中的標記不能跨越其他的標記。

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

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

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

SSML中的元素和屬性示例

SSML是一種標記語言,所以必須具備一定的文件結構。所有的SSML文件都需要的Speak元素標簽入口,更多關于SSML的語法格式,可以參考W3C官方文檔,以下是關于SSML主要標簽的說明。

如何分析DuerOS中的SSML應用

SSML具有非常強大的功能支持,比較典型的功能就是錄音文件播放功能。其具體的實現方式是通過一個<audio>元素標簽提供的URL路徑對語音文件進行播放。

下面是W3C規范中給出的一個示例:

<?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的技能開發中,DuerOS會將技能返回的response消息里面的文本信息按照一定的規則轉化成語音信息進行播放(可以參考面向接口/協議?看DuerOS的技能開發,用JavaScript打造AI應用-從Nodejs SDK 看DuerOS的技能開發以及從Java SDK看DuerOS的技能開發)。轉化后的語音有著與預期相同的特征,如語調、語速、停頓等都相同。

如何分析DuerOS中的SSML應用

DuerOS支持基礎標簽和擴展標簽兩種。基礎標簽里的所有標簽都是SSML標準標簽,相當于SSML標簽的子集。擴展標簽指DuerOS使用標準SSML語言定制的標簽。

基礎標簽

基礎標簽目前包括6種:

  • speak:根標簽

  • audio:根據url合成已有音頻

  • say-as:設置數字、符號等的讀法

  • sub:替換目標單詞

  • silence:設置靜音,在文本播報的開頭或者結尾增加靜音片段,最大10s

  • phoneme:多音字注音

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

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

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

audio標簽支持單標簽和雙標簽,如果是雙標簽的話,當音頻無法訪問時,將合成嵌套文本。

擴展標簽

擴展標簽目前包括4種:

  • background:設置背景聲

  • say-as: 在屬性interpret-as加入兩個新值,僅對英文有效

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

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

其中background標簽與audio 標簽具有類似的性質,要求必須將相應的音頻文件上傳到百度云bos平臺,使用bos提供的資源url地址。

使用約束

DuerOS 中的SSML實現是W3C規范的一個子集,是應用過程中有著如下的約束:

  • audio標簽不支持嵌套audio/background(內層標簽不生效);

  • background/標簽不支持嵌套自身,內層標簽不生效;

  • sub/say-as標簽不支持嵌套其他任何標簽,會引發解析錯誤,導致標簽按字母朗讀;

  • 非漢字文本內部出現標簽影響語義轉換,建議使用漢字形式請求;

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

  • 請求文本總長度(不包含SSML標簽)應少于1024字節

需要注意的是,文本的長度是按照GBK編碼計算的,文本的內容是UTF8編碼,在不使用SSML 的時候,文本長度可達4k。

關于如何分析DuerOS中的SSML應用就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

福建省| 桐庐县| 来宾市| 敦化市| 屏东市| 乡城县| 隆回县| 桐庐县| 绿春县| 涪陵区| 德安县| 海淀区| 湘乡市| 互助| 开阳县| 遂平县| 镇沅| 固镇县| 阳新县| 永登县| 江源县| 永新县| 如皋市| 武夷山市| 中山市| 阳山县| 北海市| 中牟县| 兖州市| 顺昌县| 仙居县| 隆林| 蓝田县| 屏山县| 宿松县| 嘉兴市| 黔东| 庆云县| 牙克石市| 改则县| 漳浦县|