成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

聲如其聞,DuerOS中的聲音播放

開(kāi)發(fā) 開(kāi)發(fā)工具
智能語(yǔ)音設(shè)備的特點(diǎn)是語(yǔ)音交互成為人機(jī)交互的重要方式,智能語(yǔ)音設(shè)備的聲音輸出擺脫了預(yù)置的邏輯,成為了響應(yīng)式反饋,尤其是對(duì)聲音輸入的響應(yīng)。

[[344223]]

智能語(yǔ)音設(shè)備的特點(diǎn)是語(yǔ)音交互成為人機(jī)交互的重要方式,智能語(yǔ)音設(shè)備的聲音輸出擺脫了預(yù)置的邏輯,成為了響應(yīng)式反饋,尤其是對(duì)聲音輸入的響應(yīng)。

那么, 技能是在智能語(yǔ)音設(shè)備上如何播放聲音的呢?

在DuerOS 中,主要提供了三種聲音的播放方式:音視頻媒體播放,TTS 合成的語(yǔ)音播放 和利用TTS合成的媒體及文本混合播放。

音視頻媒體播放

點(diǎn)播和資源類(lèi)的技能都采用音視頻媒體播放的方式。當(dāng)技能收到用戶請(qǐng)求的意圖時(shí),技能在響應(yīng)中返回音視頻媒體播放的指令和媒體資源的url,以及其他的相關(guān)內(nèi)容,在智能語(yǔ)音設(shè)備收到技能響應(yīng)的內(nèi)容后,即可播放技能制定的資源。

基于AudioPlayer的音頻播放

音頻資源既可以在有屏語(yǔ)音設(shè)備(如小度智能屏系列),也可以在無(wú)屏語(yǔ)音設(shè)備(如小度音箱系列)上播放,主要是通過(guò)AudioPlayer 相關(guān)指令完成的。

AudioPlayer指令從技能發(fā)送給DuerOS,對(duì)端上進(jìn)行音頻資源的播放控制。在DuerOS收到該指令后,會(huì)經(jīng)過(guò)一系列處理解析為端上對(duì)應(yīng)的播放指令。在云端下發(fā)AudioPlayer指令后,端上開(kāi)始音頻資源播放操作。音頻資源播放會(huì)觸發(fā)一系列事件上報(bào)到云端。這些指令和事件分別是:

指令或事件 功能解釋
AudioPlayer.Play指令 播放
AudioPlayer.Stop指令 停止
AudioPlayer.PlaybackStarted事件 播放開(kāi)始
AudioPlayer.PlaybackStopped事件 播放暫停。
AudioPlayer.PlaybackFinished事件 播放結(jié)束,即一首歌播放完后上報(bào)的事件
AudioPlayer.PlaybackNearlyFinished事件 在播放即將結(jié)束時(shí)上報(bào)的事件
AudioPlayer.PlaybackFailed事件 當(dāng)設(shè)備端播放audio item發(fā)生錯(cuò)誤時(shí)上報(bào)此事件

AudioPlayer.Play指令是驅(qū)動(dòng)播放音頻的核心指令,一般地,使用Play指令時(shí),response需要返回shouldEndSession值為true,使端上關(guān)閉麥克風(fēng)。消息示例如下:

  1.     "type""AudioPlayer.Play"
  2.     "playBehavior""{{STRING}}" 
  3.     "audioItem": { 
  4.         "audioItemId""{{STRING}}"
  5.         "stream": { 
  6.             "url""{{STRING}}"
  7.             "outputSpeech": { 
  8.                 "type""{{STRING}}"
  9.                 "text""{{STRING}}"
  10.                 "ssml""{{STRING}}"
  11.                 "ttsTemplates": {{TTSTemplateStructure}} 
  12.             }, 
  13.             "streamFormat""{{STRING}}"
  14.             "offsetInMilliSeconds": {{LONG}}, 
  15.             "token""{{STRING}}"
  16.             "progressReportIntervalMs": {{LONG}} 
  17.         }, 
  18.         "playerInfo": { 
  19.             "content": {{AudioPlayerInfoContentStructure}}, 
  20.             "controls": [ 
  21.                 {{ControlStructure}}, 
  22.                 {{ControlStructure}}, 
  23.                 ...... 
  24.             ] 
  25.         } 
  26.     } 

當(dāng)持續(xù)播放音頻資源的時(shí)候,技能需要監(jiān)聽(tīng)AudioPlayer.PlaybackNearlyFinished事件,通過(guò)playBehavior參數(shù)對(duì)播放的音頻隊(duì)列進(jìn)行調(diào)整,DuerOS 是通過(guò)資源迭代的方式完成多個(gè)音頻資源間連續(xù)播放的。

當(dāng)然,使用全雙工特性時(shí),DuerOS的處理稍有不同,詳情可以參見(jiàn)《聊聊“全雙工”》。

基于VideoPlayer 的視頻播放

視頻資源只可以在有屏語(yǔ)音設(shè)備(如小度智能屏系列)上播放,主要是通過(guò)VideoPlayer 相關(guān)指令完成的。

VideoPlayer提供了VideoPlayer指令接口和VideoPlayer事件接口。VideoPlayer指令是技能向DuerOS發(fā)送的,對(duì)視頻進(jìn)行控制的指令,如播放指令、停止播放指令等。DuerOS收到指令后會(huì)轉(zhuǎn)化成端上能識(shí)別的播放指令,對(duì)視頻進(jìn)行相應(yīng)的控制。VideoPlayer事件是指在視頻播放過(guò)程中觸發(fā)一系列事件,DuerOS會(huì)將這些事件上報(bào)給技能,請(qǐng)求技能進(jìn)行處理。這些指令和事件分別是:

指令或事件 功能解釋
VideoPlayer.Play指令 播放
VideoPlayer.Stop指令 停止
VideoPlayer.ClearQueue指令 用于清除video_player播放隊(duì)列
VideoPlayer.PlaybackStarted事件 播放開(kāi)始
VideoPlayer.PlaybackStopped事件 播放暫停
VideoPlayer.PlaybackFinished事件 播放結(jié)束,即一個(gè)視頻播放完后上報(bào)的事件
VideoPlayer.PlaybackNearlyFinished事件 在播放即將結(jié)束時(shí)上報(bào)的事件。
VideoPlayer.ProgressReportIntervalElapsed事件 本事件用來(lái)統(tǒng)計(jì)播放情況。如果Play指令有progressReportIntervalInMilliseconds,則在播放對(duì)應(yīng)video item時(shí),每隔此時(shí)間上報(bào)本事件。
VideoPlayer.ProgressReportDelayElapsed事件 本事件用來(lái)統(tǒng)計(jì)播放情況。如果Play指令中有progressReportDelayInMilliseconds,則對(duì)應(yīng)video item播放此時(shí)間長(zhǎng)后會(huì)上報(bào)本事件
VideoPlayer.PlaybackStutterStarted事件 在PlaybackStarted事件之后,如果設(shè)備端緩沖視頻數(shù)據(jù)慢于播放速度時(shí),會(huì)上報(bào)此事件。
VideoPlayer.PlaybackStutterFinished事件 PlaybackStutterStarted事件之后,緩沖恢復(fù)到正常狀態(tài),可重新開(kāi)始播放時(shí)端上會(huì)上報(bào)本事件。
VideoPlayer.PlaybackPaused事件 視頻播放時(shí),如果發(fā)生對(duì)話/鬧鐘等行為,則視頻播放會(huì)暫停,此時(shí),端上會(huì)上報(bào)PlaybackPaused事件和PlaybackResumed事件。
VideoPlayer.PlaybackResumed事件 視頻播放時(shí),如果發(fā)生對(duì)話/鬧鐘等行為,則視頻播放會(huì)暫停,此時(shí),端上會(huì)上報(bào)PlaybackPaused事件和PlaybackResumed事件。
VideoPlayer.PlaybackQueueCleared事件 設(shè)備端處理完ClearQueue指令后會(huì)上報(bào)此事件。

技能在返回VideoPlayer.Play指令時(shí),對(duì)于show設(shè)備中控需要補(bǔ)充RenderVideoPlayerInfo指令用于播放器界面的渲染,消息樣例如下:

  1.     "type""VideoPlayer.Play"
  2.     "playBehavior""{{STRING}}" 
  3.     "videoItem": { 
  4.         "videoItemId""{{STRING}}"
  5.         "stream": { 
  6.             "url""{{STRING}}"
  7.             "offsetInMilliseconds": {{LONG}}, 
  8.             "stopPointsInMilliseconds":[ 
  9.                 {{LONG}}, 
  10.                 {{LONG}}, 
  11.                 ... 
  12.             ], 
  13.             "expiryTime": {{STRING}} 
  14.             "progressReport": { 
  15.                 "progressReportDelayInMilliseconds": {{LONG}}, 
  16.                 "progressReportIntervalInMilliseconds": {{LONG}} 
  17.             }, 
  18.             "token""{{STRING}}"
  19.             "expectedPreviousToken": {{STRING}} 
  20.         } 
  21.     } 

使用VideoPlayer持續(xù)播放視頻資源的方法與音頻資源持續(xù)播放的方式類(lèi)似。

音視頻媒體播放是技能播放聲音的重要方法,在非資源類(lèi)技能中也有著廣泛的應(yīng)用。

基于TTS 的語(yǔ)音播放

音視頻資源有著很好的表現(xiàn)力,但面向動(dòng)態(tài)播報(bào)的內(nèi)容預(yù)先錄制的成本比較高,對(duì)于各種各樣的文本播報(bào),一般采用TTS 合成的方式完成語(yǔ)音播放。

TTS 的語(yǔ)音播報(bào)指令——outputSpeech

outputSpeech是基于TTS的語(yǔ)音播報(bào)指令,表示本次返回結(jié)果中需要播報(bào)的語(yǔ)音信息,消息樣例如下:

  1. ...... 
  2.  
  3. "response" : { 
  4.         "outputSpeech" : { 
  5.             "type" : "{{STRING}}"
  6.             "text" : "{{STRING}}"
  7.             "ssml" : "{{STRING}}"
  8.         }, 
  9.         "card" : {}, 
  10.         "directives" : [], 
  11.         "expectSpeech": {{BOOLEAN}}, 
  12.         "shouldEndSession" : {{BOOLEAN}} 
  13.     } 

在outputSpeech的指令機(jī)構(gòu)中,TTS合成有如下的類(lèi)型:

  • PlainText:普通文本。
  • SSML:一種結(jié)構(gòu)化語(yǔ)言,用于輔助描述語(yǔ)音發(fā)音聲調(diào)。

當(dāng)type取值為PlainText時(shí),該字段為必選字段。長(zhǎng)度不能超過(guò)256個(gè)字符。當(dāng)type為SSML時(shí),該字段為必選字段,長(zhǎng)度不能超過(guò)256個(gè)字符,SSML 會(huì)在下一節(jié)“基于TTS的媒體和文本合成播放”中在進(jìn)行描述。

outputSpeech 的變種——reprompt

在需要用戶輸入時(shí),如果用戶離開(kāi)了,麥克風(fēng)沒(méi)有進(jìn)行語(yǔ)音的輸入,或用戶輸入的語(yǔ)音請(qǐng)求系統(tǒng)無(wú)法解析成技能的任何意圖,則可以使用reprompt來(lái)播放預(yù)置的內(nèi)容。

reprompt.outputSpeech參數(shù)定義與上述outputSpeech的定義一致,消息樣例如下:

  1. "response" : { 
  2.        "outputSpeech" : { 
  3.            "type" : "{{STRING}}"
  4.            "text" : "{{STRING}}"
  5.            "ssml" : "{{STRING}}"
  6.        }, 
  7.        "reprompt" : { 
  8.            "outputSpeech" : { 
  9.                "type" : "{{STRING}}"
  10.                "text" : "{{STRING}}"
  11.                "ssml" : "{{STRING}}"
  12.            } 
  13.        }, 
  14.        "card" : {}, 
  15.        "directives" : [], 
  16.        "expectSpeech": {{BOOLEAN}}, 
  17.        "shouldEndSession" : {{BOOLEAN}} 
  18.    } 

repromt指令實(shí)際上是outputSpeech指令的變種,是一種應(yīng)用在特定場(chǎng)景的TTS 語(yǔ)音播報(bào)。

長(zhǎng)文本的播放

TTS 播報(bào)中對(duì)文本長(zhǎng)度的限制往往被人們所詬病。話術(shù)太長(zhǎng)往往會(huì)被截?cái)啵蛘咴诓シ诺倪^(guò)程中,由于長(zhǎng)時(shí)間沒(méi)有用戶交互導(dǎo)致session 被關(guān)閉,現(xiàn)象就是在TTS 播放一段時(shí)間后,技能退出了,用戶需要重新打開(kāi)技能才能繼續(xù)在技能中交互。

針對(duì)長(zhǎng)文本的播報(bào),目前DuerOS 提供了兩種解決方案:分段持續(xù)播放和媒體轉(zhuǎn)換播放。

分段持續(xù)播放

既然長(zhǎng)文本在播放過(guò)程中無(wú)法維持session, 那么我們可以把長(zhǎng)文本分割成多個(gè)短文本,在前一個(gè)短文本播放完畢之后,在繼續(xù)播放下一個(gè)短文本,如此類(lèi)推,實(shí)現(xiàn)長(zhǎng)文本的持續(xù)完整播放。

具體的方式是應(yīng)用DuerOS 的StreamResponse 特性,StreamResponse 定義了技能在執(zhí)行過(guò)程中,下發(fā)部分結(jié)果到端上執(zhí)行,在端執(zhí)行完這部分結(jié)果后,上報(bào)事件以獲取技能的其它結(jié)果,適應(yīng)于以下場(chǎng)景:技能返回shouldEndSession=false和StreamResponse.SendPart指令。

StreamResponse.SendPart指令告知DuerOS平臺(tái)本次只返回部分滿足結(jié)果,期望在StreamResponse.NextRequired事件時(shí)繼續(xù)返回結(jié)果。技能在返回本指令時(shí),如果shouldEndSession=true,DuerOS平臺(tái)將忽略本指令。技能在返回本指令時(shí),如果shouldEndSession=false,DuerOS平臺(tái)在本次結(jié)果執(zhí)行后,下發(fā)StreamResponse.NextRequired事件給技能,消息樣例如下:

  1.     "type""StreamResponse.SendPart"
  2.     "token""{{STRING}}" 

技能在收到StreamResponse.NextRequired事件后,返回計(jì)劃內(nèi)的下一個(gè)響應(yīng)結(jié)果, request中事件樣例如下:

  1.     "type""StreamResponse.NextRequired"
  2.     "requestId""{{STRING}}"
  3.     "timestamp""{{STRING}}"
  4.     "token""{{STRING}}" 

StreamResponse.SendPart指令 和StreamResponse.NextRequired事件組成了一種類(lèi)似迭代器的機(jī)制,使技能可以完成長(zhǎng)文本的分段發(fā)送。

當(dāng)然,StreamResponse的應(yīng)用場(chǎng)景還有很多,長(zhǎng)文本的TTS播報(bào)只是其中的一個(gè)典型應(yīng)用而已。

媒體轉(zhuǎn)換播放

既然長(zhǎng)文本的TTS播報(bào)受限于長(zhǎng)度,那能否將長(zhǎng)文本實(shí)時(shí)在線轉(zhuǎn)換為音頻資源,然后采用AudioPlayer.play 指令播放來(lái)突破文本長(zhǎng)度的限制呢?答案是肯定的。

DuerOS 提供一種在線將文本轉(zhuǎn)化成音頻資源的方法,在技能返回Play指令的時(shí)候,content為指定schema的tts,DuerOS會(huì)進(jìn)行及時(shí)的批量替換。

schema示例如下:

以下是文本“度秘提醒你今天是媽媽的生日” tts://dueros.baidu.com?text=%E5%BA%A6%E7%A7%98%E6%8F%90%E9%86%92%E4%BD%A0%E4%BB%8A%E5%A4%A9%E6%98%AF%E5%A6%88%E5%A6%88%E7%9A%84%E7%94%9F%E6%97%A5&from=標(biāo)明技能來(lái)源&expire=86400

其中參數(shù)需要urlencode, php使用rawurlencode函數(shù)即可,其他編程語(yǔ)言類(lèi)似。

  • text:文本長(zhǎng)度5k以內(nèi)
  • from: botid,需要傳相關(guān)來(lái)源
  • expire: 音頻地址的保存時(shí)間,最多不超過(guò)7天,單位是秒

使用每天轉(zhuǎn)換播放長(zhǎng)文本的示例如下:

  1.     "directive": { 
  2.         "header": { 
  3.             "messageId""YXVkaW9fbmV3cysxNjAwMTU2ODI4Xzk2NmExampiMQ=="
  4.             "name""Play"
  5.             "namespace""ai.dueros.device_interface.audio_player" 
  6.         }, 
  7.         "payload": { 
  8.             "audioItem": { 
  9.                 "audioItemId""9696687530282687670"
  10.                 "stream": { 
  11.                     "expiryTime""2020-10-01T00:00:00+08:00"
  12.                     "offsetInMilliseconds": 0, 
  13.                     "progressReport": { 
  14.                         "progressReportIntervalInMilliseconds": 15000 
  15.                     }, 
  16.                     "streamFormat""AUDIO_MPEG"
  17.                     "token""eyJib3RfaWQiOiJhdWRpb19uZXdzIiwicmVzdWx0X3Rva2VuIjoiNjk0ODQ2MDY5Mjc0NmYwYjY3YTRhNzI5ZWMwZDE1ZGUiLCJib3RfdG9rZW4iOiI5Njk2Njg3NTMwMjgyNjg3NjcwIiwibGF1bmNoX2lkcyI6WyJhdWRpb19uZXdzIl19"
  18.                     "url""tts:\/\/dueros.baidu.com?text=%25E9%2598%25AE%25E6%2588%2590%25E5%258F%2591%25E8%25B5%25B4%25E7%2591%259E%25E4%25B8%25BD%25E7%259D%25A3%25E5%25AF%25BC%25E6%25A3%2580%25E6%259F%25A5%25E7%2596%25AB%25E6%2583%2585%25E9%2598%25B2%25E6%258E%25A7%25EF%25BC%259A%25E5%258A%25A1%25E5%25BF%25853%25E6%2597%25A5%25E5%2586%2585%25E5%25AE%258C%25E6%2588%2590%25E5%2585%25A8%25E5%2591%2598%25E6%25A0%25B8%25E9%2585%25B8%25E6%25A3%2580%25E6%25B5%258B%25E3%2580%2582%25E6%258E%258C%25E4%25B8%258A%25E6%2598%25A5%25E5%259F%258E%25E8%25AE%25AF9%25E6%259C%258814%25E6%2597%25A5%25EF%25BC%258C%25E4%25BA%2591%25E5%258D%2597%25E7%259C%2581%25E7%259C%2581%25E5%25A7%2594%25E5%2589%25AF%25E4%25B9%25A6%25E8%25AE%25B0%25E3%2580%2581%25E7%259C%2581%25E9%2595%25BF%25E3%2580%2581%25E7%259C%2581%25E5%25A7%2594%25E7%259C%2581%25E6%2594%25BF%25E5%25BA%259C%25E5%25BA%2594%25E5%25AF%25B9%25E6%2596%25B0%25E5%2586%25A0%25E8%2582%25BA%25E7%2582%258E%25E7%2596%25AB%25E6%2583%2585%25E5%25B7%25A5%25E4%25BD%259C%25E9%25A2%2586%25E5%25AF%25BC%25E5%25B0%258F%25E7%25BB%2584%25E7%25BB%2584%25E9%2595%25BF%25E9%2598%25AE%25E6%2588%2590%25E5%258F%2591%25E8%25B5%25B6%25E8%25B5%25B4%25E5%25BE%25B7%25E5%25AE%258F%25E5%2582%25A3%25E6%2597%258F%25E6%2599%25AF%25E9%25A2%2587%25E6%2597%258F%25E8%2587%25AA%25E6%25B2%25BB%25E5%25B7%259E%25E7%2591%259E%25E4%25B8%25BD%25E5%25B8%2582%25E7%259D%25A3%25E5%25AF%25BC%25E6%25A3%2580%25E6%259F%25A5%25E7%2596%25AB%25E6%2583%2585%25E9%2598%25B2%25E6%258E%25A7%25E5%25B7%25A5%25E4%25BD%259C%25EF%25BC%258C%25E5%25AF%25B9%25E5%25BD%2593%25E5%2589%258D%25E7%2596%25AB%25E6%2583%2585%25E9%2598%25B2%25E6%258E%25A7%25E5%25BD%25A2%25E5%258A%25BF%25E8%25BF%259B%25E8%25A1%258C%25E5%2586%258D%25E5%2588%2586%25E6%259E%2590%25E3%2580%2581%25E5%2586%258D%25E7%25A0%2594%25E5%2588%25A4%25EF%25BC%258C%25E5%25AF%25B9%25E8%25BE%25B9%25E5%25A2%2583%25E7%25AE%25A1%25E6%258E%25A7%25E5%2592%258C%25E9%2598%25B2%25E6%258E%25A7%25E6%258E%25AA%25E6%2596%25BD%25E8%25BF%259B%25E8%25A1%258C%25E5%2586%258D%25E7%25A0%2594%25E7%25A9%25B6%25E3%2580%2581%25E5%2586%258D%25E5%25AE%2589%25E6%258E%2592%25E3%2580%2582%25E5%25BD%2593%25E6%2599%259A%25EF%25BC%258C%25E9%2598%25AE%25E6%2588%2590%25E5%258F%2591%25E4%25B8%258E%25E5%259B%25BD%25E5%25AE%25B6%25E5%258D%25AB%25E7%2594%259F%25E5%2581%25A5%25E5%25BA%25B7%25E5%25A7%2594%25E8%25B5%25B4%25E4%25BA%2591%25E5%258D%2597%25E4%25B8%2593%25E5%25AE%25B6%25E7%25BB%2584%25E8%25BF%259B%25E8%25A1%258C%25E5%25B7%25A5%25E4%25BD%259C%25E5%25BA%25A7%25E8%25B0%2588%25EF%25BC%258C%25E4%25BB%258B%25E7%25BB%258D%25E8%25BE%25B9%25E5%25A2%2583%25E7%2596%25AB%25E6%2583%2585%25E9%2598%25B2%25E6%258E%25A7%25E6%2583%2585%25E5%2586%25B5%25E5%258F%258A%25E5%25A2%2583%25E5%25A4%2596%25E7%2596%25AB%25E6%2583%2585%25E8%25BE%2593%25E5%2585%25A5%25E5%25A4%2584%25E7%25BD%25AE%25E5%25BA%2594%25E5%25AF%25B9%25E5%25B7%25A5%25E4%25BD%259C%25EF%25BC%258C%25E5%2590%25AC%25E5%258F%2596%25E4%25B8%2593%25E5%25AE%25B6%25E7%25BB%2584%25E5%25AF%25B9%25E5%25BA%2594%25E6%2580%25A5%25E5%2593%258D%25E5%25BA%2594%25E3%2580%2581%25E5%2585%25A8%25E5%2591%2598%25E6%25A0%25B8%25E9%2585%25B8%25E6%25A3%2580%25E6%25B5%258B%25E3%2580%2581%25E4%25BA%25BA%25E5%2591%2598%25E7%25AE%25A1%25E6%258E%25A7%25E3%2580%2581%25E6%25B5%2581%25E8%25A1%258C%25E7%2597%2585%25E5%25AD%25A6%25E8%25B0%2583%25E6%259F%25A5%25E3%2580%2581%25E5%258C%25BB%25E7%2596%2597%25E6%2595%2591%25E6%25B2%25BB%25E3%2580%2581%25E4%25BF%25A1%25E6%2581%25AF%25E6%258A%25A5%25E9%2580%2581%25E7%25AD%2589%25E6%2596%25B9%25E9%259D%25A2%25E5%25B7%25A5%25E4%25BD%259C%25E7%259A%2584%25E6%2584%258F%25E8%25A7%2581%25E5%25BB%25BA%25E8%25AE%25AE%25E3%2580%2582&speaker=1100&speed=5&audio=http%253A%252F%252Fdueros-short-video.bj.bcebos.com%252Fshort-video%252Fstop_1_24k.wav&from=news" 
  19.                 } 
  20.             }, 
  21.             "playBehavior""ENQUEUE" 
  22.         } 
  23.     } 

通過(guò)分段持續(xù)播放和媒體轉(zhuǎn)換播放這兩種解決方案,在DuerOS上可以相對(duì)有效地解決TTS 文本播放的問(wèn)題。

基于TTS 的媒體與文本合成播放

音視頻資源可以有效地提升聲音的品質(zhì)和效果,TTS 文本播報(bào)能解決動(dòng)態(tài)內(nèi)容的播放問(wèn)題,二者結(jié)合可以進(jìn)一步提升技能的表現(xiàn)效果,提升服務(wù)的用戶體驗(yàn)。

目前,DuerOS 提供的可行方式是在技能中使用SSML。DuerOS支持基礎(chǔ)標(biāo)簽和擴(kuò)展標(biāo)簽兩種:基礎(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)簽?zāi)壳鞍?種:

  • speak:根標(biāo)簽
  • audio:根據(jù)url合成已有音頻
  • say-as:設(shè)置數(shù)字、符號(hào)等的讀法
  • sub:替換目標(biāo)單詞
  • silence:設(shè)置靜音,在文本播報(bào)的開(kāi)頭或者結(jié)尾增加靜音片段,最大10s
  • phoneme:多音字注音

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

擴(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)簽具有類(lèi)似的性質(zhì),要求必須將相應(yīng)的音頻文件上傳到百度云bos平臺(tái),使用bos提供的資源url地址。

小結(jié)

聲音的播放是智能語(yǔ)音設(shè)備的基礎(chǔ)能力,直接播放音視頻資源是一種直接的聲音播放方式,面向動(dòng)態(tài)文本內(nèi)容的聲音播放一般采用TTS合成的方式實(shí)現(xiàn)。outputSpeech 是DuerOS中的TTS合成指令,repromt指令是outputSpeech 指令在特定場(chǎng)景下的變種。對(duì)于長(zhǎng)文本的播放,DuerOS 提供了分段連續(xù)播放和媒體在線轉(zhuǎn)換兩種解決方案,DuerOS中的SSML 播放則可以相對(duì)有效地將媒體資源播放和TTS語(yǔ)音播放結(jié)合起來(lái),從而使DuerOS 技能給用戶帶來(lái)更好的用戶體驗(yàn)。

除了SSML之外,如何進(jìn)一步提高語(yǔ)音合成的表現(xiàn)力呢?家中的孩童能否在“小度系列產(chǎn)品”上聽(tīng)到爸爸聲音講的故事呢?一系列與聲音播放相關(guān)的新功能特性已經(jīng)在路上了,DuerOS,值得期待!

【本文來(lái)自51CTO專(zhuān)欄作者“老曹”的原創(chuàng)文章,作者微信公眾號(hào):喔家ArchiSelf,id:wrieless-com】

戳這里,看該作者更多好文

 

責(zé)任編輯:武曉燕 來(lái)源: 51CTO專(zhuān)欄
相關(guān)推薦

2013-06-14 17:28:11

Windows PhoWP開(kāi)發(fā)播放聲音

2011-08-08 10:23:41

iPhone 流播放 文件

2012-12-27 14:29:38

Android開(kāi)發(fā)流媒體

2019-11-22 09:05:20

DuerOS編程語(yǔ)音

2013-04-08 09:31:05

iOS開(kāi)發(fā)系統(tǒng)聲音服務(wù)

2011-07-22 15:59:15

iPhone 聲音 文件

2012-06-05 09:39:32

Windows 7聲音主題

2011-03-07 09:32:54

Ubuntu11.04

2011-10-21 10:37:05

華為Juiper

2009-04-22 08:57:25

Windows 7微軟操作系統(tǒng)

2018-05-18 14:12:41

Chrome 66自動(dòng)播放

2010-06-21 10:13:03

Ubuntu 10.1

2009-09-22 14:20:39

C#播放聲音

2021-01-27 12:02:50

AndroidDuerOS調(diào)試

2010-01-11 17:30:40

VB.NET播放聲音

2010-01-07 18:22:40

VB.NET聲音播放

2011-11-25 13:52:05

Windows Pho聲音播放

2009-10-12 16:20:15

2019-03-08 14:40:00

接口協(xié)議DuerOS
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 国产精品夜夜春夜夜爽久久电影 | 久久成人精品视频 | 国产视频福利在线观看 | 国产97碰免费视频 | 日日骚视频 | 国产婷婷在线视频 | 国产成人一区二区三区久久久 | 精品一区久久 | 日韩一区二区久久 | 欧美一级二级三级 | 亚洲视频在线免费观看 | 欧美理论片在线观看 | 另类专区亚洲 | 免费成人在线网站 | 中文字幕1区 | 国产精品色 | 综合久久一区 | 久久精品国产久精国产 | 成人日韩| 91精品国产综合久久精品 | 久久com| 免费成人国产 | 国产精品毛片久久久久久久 | 天天碰夜夜操 | 午夜精品久久久久久久久久久久久 | 欧美视频xxx| 黄色欧美在线 | 日本成人午夜影院 | 欧美视频1 | 亚洲视频在线播放 | 精品久久香蕉国产线看观看亚洲 | 亚洲狠狠爱 | 日韩国产欧美一区 | 日韩看片 | 精品成人佐山爱一区二区 | 国产真实精品久久二三区 | 亚洲黄色网址视频 | 日韩a v在线免费观看 | 日本久久久久久 | 色噜噜色综合 | 欧美精品在线免费 |