微軟“神經網(wǎng)絡語音”在天氣自動化播報中的探索與應用

一、前言

????人工智能播報在目前已經不是什么新奇事了,地圖導航、手機語音助手、詞典翻譯、語音聊天等,都有著人工語音的身影。我在收聽廣播的時候,也聽到了關于使用人工智能語音播報新聞的節(jié)目,某日突發(fā)奇想,如果把人工智能語音應用到廣電電視節(jié)目的制作中,應該可以產生不錯的效益。

????我臺目前智能語音播報主要應用在廣播節(jié)目的播報上,使用的是科大訊飛的離線SDK語音包,個人感覺在收聽時還是有很明顯的“機器人聲”,偶然機會了解到微軟也有相關的語音服務,并提供免費試用,于是抱著嘗試的心態(tài),自己進行了二次開發(fā),做了個天氣自動播報的語音app,借此機會探討下智能語音播報在廣電電視節(jié)目的應用方法。

二、微軟語音服務

????微軟語音服務是微軟提供的一套在線API服務,主要服務內容包括語音轉文本、文本轉語音、語音翻譯,我們此次探討的主要是文本轉語音服務,詳細內容可參考官方的API文檔微軟文本轉語音API文檔。

2.1、注冊獲得語音服務

微軟語音服務提供一個月的免費試用期,需要先注冊Auzre賬號,主要步驟如下:

1、適用Azure賬號登陸Azure門戶網(wǎng)站。

2、在Azure服務中選擇“創(chuàng)建資源”。

圖2.1=Azure首頁創(chuàng)建資源

3、在資源市場中輸入中文“語音”,找到第一個“語音”服務,選中后創(chuàng)建。

圖2.2-語音服務創(chuàng)建

4、,注意選擇“位置”,我這邊選擇的位置是“中國東部2”,"訂閱"默認注冊完Azure時微軟會送你一個月的“1元試用版套餐”,“資源組”還沒有的化新建一個。

圖2.3-創(chuàng)建資源方法

5、創(chuàng)建完成后,打開對應資源,在左側欄找到“資源管理-密鑰和終結點”,獲得密鑰,每個終結點的密鑰有2個,以后代碼里會用到,密鑰的作用就是在你自己的程序里,調用微軟語音API的時候,給你的一把鑰匙。

2.2、使用文本轉語音服務

2.2.1、安裝語音SDK

????此次我使用的是C#進行開發(fā),因此在Visual Studio的項目中,需要安裝微軟語音SDK,之后只要要引用"Microsoft.CognitiveServices.Speech"這個包就行。安裝語音SDK的方法為,在Visual Studio項目中,選擇“項目-管理NuGet程序包”,搜索“Microsoft.CognitiveServices.Speech”,選中第一個進行安裝。

圖2.4-?語音SDK安裝

2.2.2、引用SDK并對語音輸出進行配置

\bullet 在C#中引用語音SDK,“Microsoft.CognitiveServices.Speech”和“Microsoft.CognitiveServices.Speech.Audio”。

圖2.5-引用語音SDK

\bullet 語音服務進行配置,匹配密鑰以及音頻文件輸出路徑,之后實例化“SpeechSynthesizer”對象,將之前“config”和“audioConfig”兩項配置參數(shù)傳遞過去。

圖2.6-相關音頻設置

2.2.3、通過語音合成標記語言 (SSML) 改善合成的語音輸出

????SSML主要是一個XML文本,它其中定義了很多文本轉語音過程中的屬性,包括語言支持、語音語調、講話風格、人聲、斷點等;使用SSML來合成語音更具靈活性,可對一段文字進行多種播報方式的選擇,也可以多人進行文字的播報。

2.2.4、神經網(wǎng)絡語音

????微軟的語音服務中,支持標準語音和神經網(wǎng)絡語音的選擇,也可以自己創(chuàng)建自定義語音,神經網(wǎng)絡語音相比標準語音,更加自然,并且能夠提供多種播報風格,適合在SSML文本中配置使用,在配置SSML文本時,只要相應的語音名稱,語音服務就能自動轉換成對應的語音播報,具體支持語音可參照語音服務的語言和語音支持。

三、天氣播報服務

3.1、氣象數(shù)據(jù)API

????天氣數(shù)據(jù)的獲取,我參考中國氣象數(shù)據(jù)網(wǎng),該網(wǎng)站數(shù)據(jù)權威準確,并能夠提供各類氣象數(shù)據(jù)的API,注冊并通過該網(wǎng)站的驗證后,可免費訂閱并試用一段時間的氣象數(shù)據(jù)服務,此次測試我使用的是中國地面氣象站逐小時觀測資料。

圖3.1-地面氣象數(shù)據(jù)


????地面氣象數(shù)據(jù)的API支持定制功能,可選擇定制氣象站點,也可選擇定制氣象要素,此次測試我選擇了蘇州一個站點,氣象要素包括溫度/氣溫、最高溫度、最低溫度、氣壓、最高氣壓、最低氣壓、相對濕度、風力、最大風速、降水量、現(xiàn)在天氣。

圖3.2-氣象要素選擇

????氣象數(shù)據(jù)API通過HTTP GET的方式進行發(fā)送,主要GET格式如下圖,當API訂單下單成功后,在我的API訂單中,可以查找到接口信息的賬號和密碼;dataFormat為返回數(shù)格式;interfaceId是調用數(shù)據(jù)的接口ID;dataCode是返回數(shù)據(jù)的編碼方式,dataCode是時間范圍,支持最近7天的數(shù)據(jù)訪問;stalID是氣象站點的ID,支持1-30個站點,多個站點之間以“,”分隔,具體站點參照中國地面氣象站點清單;elements是返回數(shù)據(jù)的字段,可參照中國地面氣象要素清單。

圖3.3-氣象數(shù)據(jù)API調用

3.2、將接收到的氣象數(shù)據(jù)轉換成SSML文本

????接收到的氣象數(shù)據(jù)只是一些空洞的數(shù)據(jù),我們最終要考慮的是如何把這些數(shù)據(jù)通過可與化的方式播報出來。我的思路是建立一個“Weather.xml”的本地文本,文本中輸入好固定的播報語句,當接收到天氣數(shù)據(jù)后,將天氣數(shù)據(jù)替換到對應的播報文本中,測試播報文本如下圖3.5。

3.2.1、數(shù)據(jù)替換方式

????SSML文本中的天氣數(shù)據(jù)均按照“{a},,{c},u0z1t8os...”的方式進行標簽化并放入對應文本后面,當接收天氣數(shù)據(jù)以后,再按照文本的標簽進行相應的替換,最后將整個文本數(shù)據(jù)流發(fā)送給微軟語音API,并轉換成合成語音,參考代碼如下圖3.4。


圖3.4-替換文本參考代碼

3.2.2、SSML文本修改方式參考

????播報文本采用SSML的格式編寫,此次測試段我加入了兩種神經語音的播報,具體語音類型設置通過“voide name”標簽;播報的方式我選擇成了“新聞模式”,具體設置通過“mstts:express-as style”標簽;如果需要在播報之間加入斷點,可通過設置“break time”標簽實現(xiàn);如果要設置當前播報文字的速度,可通過設置“prosody rate”標簽實現(xiàn)。

????采用SSML的格式,可以通過設置斷點、語速等控制播報時間,例如電視上一段天氣語音的播報,需要配合在線包裝或者圖片的方式顯示天氣信息,加入斷點和語速能夠更方便控制天氣顯示方式之間的銜接,尤其是相對固定的播報,只要設置好一次SSML格式后,基本就不需要做大的改動。

圖3.5-播報文本

四、 未來擴展設想

4.1、自定義神經語音

????微軟提供了自定義語音的一組在線工具,能夠創(chuàng)建自己獨一無二的語音服務,自定義語音訓練模型如下圖4.1所示,在Azure上訂閱了微軟語音服務后,只需要準備需要自定義的相關音頻文件,通過不斷的上傳數(shù)據(jù)、訓練,最終生成自定義語音的API,最終將自定義的語音模型部署到Azure,供自己API接口調用。

????未來電視節(jié)目制作中,可以通過自定義神經語音的方式,將電視臺主持人的聲音通過不斷的訓練和仿真,可以大大降低主持人繁雜的配音工作,提高工作效率。

圖4.1-自定義語音模型

4.2、結合UE4實現(xiàn)虛擬AR/VR播報

????UE4支持自定義插件,可以將微軟語音服務和虛擬數(shù)據(jù)相結合,通過自定義插件的方式部署到UE4項目中,這樣只要跟UE4場景制定好插件接口調用方式,就能快速實現(xiàn)AR/VR播報的實時渲染輸出。

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容