一、前言
????人工智能播報(bào)在目前已經(jīng)不是什么新奇事了汇跨,地圖導(dǎo)航务荆、手機(jī)語(yǔ)音助手、詞典翻譯穷遂、語(yǔ)音聊天等函匕,都有著人工語(yǔ)音的身影。我在收聽(tīng)廣播的時(shí)候蚪黑,也聽(tīng)到了關(guān)于使用人工智能語(yǔ)音播報(bào)新聞的節(jié)目盅惜,某日突發(fā)奇想,如果把人工智能語(yǔ)音應(yīng)用到廣電電視節(jié)目的制作中忌穿,應(yīng)該可以產(chǎn)生不錯(cuò)的效益抒寂。
????我臺(tái)目前智能語(yǔ)音播報(bào)主要應(yīng)用在廣播節(jié)目的播報(bào)上,使用的是科大訊飛的離線SDK語(yǔ)音包掠剑,個(gè)人感覺(jué)在收聽(tīng)時(shí)還是有很明顯的“機(jī)器人聲”屈芜,偶然機(jī)會(huì)了解到微軟也有相關(guān)的語(yǔ)音服務(wù),并提供免費(fèi)試用朴译,于是抱著嘗試的心態(tài)井佑,自己進(jìn)行了二次開(kāi)發(fā)糕珊,做了個(gè)天氣自動(dòng)播報(bào)的語(yǔ)音app,借此機(jī)會(huì)探討下智能語(yǔ)音播報(bào)在廣電電視節(jié)目的應(yīng)用方法。
二毅糟、微軟語(yǔ)音服務(wù)
????微軟語(yǔ)音服務(wù)是微軟提供的一套在線API服務(wù)红选,主要服務(wù)內(nèi)容包括語(yǔ)音轉(zhuǎn)文本、文本轉(zhuǎn)語(yǔ)音姆另、語(yǔ)音翻譯喇肋,我們此次探討的主要是文本轉(zhuǎn)語(yǔ)音服務(wù),詳細(xì)內(nèi)容可參考官方的API文檔微軟文本轉(zhuǎn)語(yǔ)音API文檔迹辐。
2.1蝶防、注冊(cè)獲得語(yǔ)音服務(wù)
微軟語(yǔ)音服務(wù)提供一個(gè)月的免費(fèi)試用期,需要先注冊(cè)Auzre賬號(hào)明吩,主要步驟如下:
1间学、適用Azure賬號(hào)登陸Azure門(mén)戶網(wǎng)站。
2印荔、在Azure服務(wù)中選擇“創(chuàng)建資源”低葫。
3、在資源市場(chǎng)中輸入中文“語(yǔ)音”仍律,找到第一個(gè)“語(yǔ)音”服務(wù)嘿悬,選中后創(chuàng)建。
4水泉、善涨,注意選擇“位置”,我這邊選擇的位置是“中國(guó)東部2”,"訂閱"默認(rèn)注冊(cè)完Azure時(shí)微軟會(huì)送你一個(gè)月的“1元試用版套餐”草则,“資源組”還沒(méi)有的化新建一個(gè)钢拧。
5、創(chuàng)建完成后炕横,打開(kāi)對(duì)應(yīng)資源源内,在左側(cè)欄找到“資源管理-密鑰和終結(jié)點(diǎn)”,獲得密鑰看锉,每個(gè)終結(jié)點(diǎn)的密鑰有2個(gè)姿锭,以后代碼里會(huì)用到,密鑰的作用就是在你自己的程序里伯铣,調(diào)用微軟語(yǔ)音API的時(shí)候,給你的一把鑰匙轮纫。
2.2腔寡、使用文本轉(zhuǎn)語(yǔ)音服務(wù)
2.2.1、安裝語(yǔ)音SDK
????此次我使用的是C#進(jìn)行開(kāi)發(fā)掌唾,因此在Visual Studio的項(xiàng)目中放前,需要安裝微軟語(yǔ)音SDK忿磅,之后只要要引用"Microsoft.CognitiveServices.Speech"這個(gè)包就行。安裝語(yǔ)音SDK的方法為凭语,在Visual Studio項(xiàng)目中葱她,選擇“項(xiàng)目-管理NuGet程序包”,搜索“Microsoft.CognitiveServices.Speech”似扔,選中第一個(gè)進(jìn)行安裝吨些。
2.2.2、引用SDK并對(duì)語(yǔ)音輸出進(jìn)行配置
在C#中引用語(yǔ)音SDK炒辉,“Microsoft.CognitiveServices.Speech”和“Microsoft.CognitiveServices.Speech.Audio”豪墅。
語(yǔ)音服務(wù)進(jìn)行配置,匹配密鑰以及音頻文件輸出路徑黔寇,之后實(shí)例化“SpeechSynthesizer”對(duì)象偶器,將之前“config”和“audioConfig”兩項(xiàng)配置參數(shù)傳遞過(guò)去。
2.2.3缝裤、通過(guò)語(yǔ)音合成標(biāo)記語(yǔ)言 (SSML) 改善合成的語(yǔ)音輸出
????SSML主要是一個(gè)XML文本屏轰,它其中定義了很多文本轉(zhuǎn)語(yǔ)音過(guò)程中的屬性,包括語(yǔ)言支持憋飞、語(yǔ)音語(yǔ)調(diào)亭枷、講話風(fēng)格、人聲搀崭、斷點(diǎn)等叨粘;使用SSML來(lái)合成語(yǔ)音更具靈活性,可對(duì)一段文字進(jìn)行多種播報(bào)方式的選擇瘤睹,也可以多人進(jìn)行文字的播報(bào)升敲。
2.2.4、神經(jīng)網(wǎng)絡(luò)語(yǔ)音
????微軟的語(yǔ)音服務(wù)中轰传,支持標(biāo)準(zhǔn)語(yǔ)音和神經(jīng)網(wǎng)絡(luò)語(yǔ)音的選擇驴党,也可以自己創(chuàng)建自定義語(yǔ)音,神經(jīng)網(wǎng)絡(luò)語(yǔ)音相比標(biāo)準(zhǔn)語(yǔ)音获茬,更加自然港庄,并且能夠提供多種播報(bào)風(fēng)格,適合在SSML文本中配置使用恕曲,在配置SSML文本時(shí)鹏氧,只要相應(yīng)的語(yǔ)音名稱,語(yǔ)音服務(wù)就能自動(dòng)轉(zhuǎn)換成對(duì)應(yīng)的語(yǔ)音播報(bào)佩谣,具體支持語(yǔ)音可參照語(yǔ)音服務(wù)的語(yǔ)言和語(yǔ)音支持把还。
三、天氣播報(bào)服務(wù)
3.1、氣象數(shù)據(jù)API
????天氣數(shù)據(jù)的獲取吊履,我參考中國(guó)氣象數(shù)據(jù)網(wǎng)安皱,該網(wǎng)站數(shù)據(jù)權(quán)威準(zhǔn)確,并能夠提供各類氣象數(shù)據(jù)的API艇炎,注冊(cè)并通過(guò)該網(wǎng)站的驗(yàn)證后酌伊,可免費(fèi)訂閱并試用一段時(shí)間的氣象數(shù)據(jù)服務(wù),此次測(cè)試我使用的是中國(guó)地面氣象站逐小時(shí)觀測(cè)資料缀踪。
????地面氣象數(shù)據(jù)的API支持定制功能居砖,可選擇定制氣象站點(diǎn),也可選擇定制氣象要素辜贵,此次測(cè)試我選擇了蘇州一個(gè)站點(diǎn)悯蝉,氣象要素包括溫度/氣溫、最高溫度托慨、最低溫度鼻由、氣壓、最高氣壓厚棵、最低氣壓蕉世、相對(duì)濕度、風(fēng)力婆硬、最大風(fēng)速狠轻、降水量、現(xiàn)在天氣彬犯。
????氣象數(shù)據(jù)API通過(guò)HTTP GET的方式進(jìn)行發(fā)送向楼,主要GET格式如下圖,當(dāng)API訂單下單成功后谐区,在我的API訂單中湖蜕,可以查找到接口信息的賬號(hào)和密碼;dataFormat為返回?cái)?shù)格式宋列;interfaceId是調(diào)用數(shù)據(jù)的接口ID昭抒;dataCode是返回?cái)?shù)據(jù)的編碼方式,dataCode是時(shí)間范圍炼杖,支持最近7天的數(shù)據(jù)訪問(wèn)灭返;stalID是氣象站點(diǎn)的ID,支持1-30個(gè)站點(diǎn)坤邪,多個(gè)站點(diǎn)之間以“,”分隔熙含,具體站點(diǎn)參照中國(guó)地面氣象站點(diǎn)清單;elements是返回?cái)?shù)據(jù)的字段罩扇,可參照中國(guó)地面氣象要素清單婆芦。
3.2怕磨、將接收到的氣象數(shù)據(jù)轉(zhuǎn)換成SSML文本
????接收到的氣象數(shù)據(jù)只是一些空洞的數(shù)據(jù)喂饥,我們最終要考慮的是如何把這些數(shù)據(jù)通過(guò)可與化的方式播報(bào)出來(lái)消约。我的思路是建立一個(gè)“Weather.xml”的本地文本,文本中輸入好固定的播報(bào)語(yǔ)句员帮,當(dāng)接收到天氣數(shù)據(jù)后或粮,將天氣數(shù)據(jù)替換到對(duì)應(yīng)的播報(bào)文本中,測(cè)試播報(bào)文本如下圖3.5捞高。
3.2.1氯材、數(shù)據(jù)替換方式
????SSML文本中的天氣數(shù)據(jù)均按照“{a},,{c},kkob0mc...”的方式進(jìn)行標(biāo)簽化并放入對(duì)應(yīng)文本后面硝岗,當(dāng)接收天氣數(shù)據(jù)以后氢哮,再按照文本的標(biāo)簽進(jìn)行相應(yīng)的替換,最后將整個(gè)文本數(shù)據(jù)流發(fā)送給微軟語(yǔ)音API型檀,并轉(zhuǎn)換成合成語(yǔ)音冗尤,參考代碼如下圖3.4。
3.2.2胀溺、SSML文本修改方式參考
????播報(bào)文本采用SSML的格式編寫(xiě)裂七,此次測(cè)試段我加入了兩種神經(jīng)語(yǔ)音的播報(bào),具體語(yǔ)音類型設(shè)置通過(guò)“voide name”標(biāo)簽仓坞;播報(bào)的方式我選擇成了“新聞模式”背零,具體設(shè)置通過(guò)“mstts:express-as style”標(biāo)簽;如果需要在播報(bào)之間加入斷點(diǎn)无埃,可通過(guò)設(shè)置“break time”標(biāo)簽實(shí)現(xiàn)徙瓶;如果要設(shè)置當(dāng)前播報(bào)文字的速度,可通過(guò)設(shè)置“prosody rate”標(biāo)簽實(shí)現(xiàn)嫉称。
????采用SSML的格式侦镇,可以通過(guò)設(shè)置斷點(diǎn)、語(yǔ)速等控制播報(bào)時(shí)間澎埠,例如電視上一段天氣語(yǔ)音的播報(bào)虽缕,需要配合在線包裝或者圖片的方式顯示天氣信息,加入斷點(diǎn)和語(yǔ)速能夠更方便控制天氣顯示方式之間的銜接蒲稳,尤其是相對(duì)固定的播報(bào)氮趋,只要設(shè)置好一次SSML格式后,基本就不需要做大的改動(dòng)江耀。
四剩胁、 未來(lái)擴(kuò)展設(shè)想
4.1、自定義神經(jīng)語(yǔ)音
????微軟提供了自定義語(yǔ)音的一組在線工具祥国,能夠創(chuàng)建自己獨(dú)一無(wú)二的語(yǔ)音服務(wù)昵观,自定義語(yǔ)音訓(xùn)練模型如下圖4.1所示晾腔,在Azure上訂閱了微軟語(yǔ)音服務(wù)后,只需要準(zhǔn)備需要自定義的相關(guān)音頻文件啊犬,通過(guò)不斷的上傳數(shù)據(jù)灼擂、訓(xùn)練,最終生成自定義語(yǔ)音的API觉至,最終將自定義的語(yǔ)音模型部署到Azure剔应,供自己API接口調(diào)用。
????未來(lái)電視節(jié)目制作中语御,可以通過(guò)自定義神經(jīng)語(yǔ)音的方式峻贮,將電視臺(tái)主持人的聲音通過(guò)不斷的訓(xùn)練和仿真,可以大大降低主持人繁雜的配音工作应闯,提高工作效率纤控。
4.2、結(jié)合UE4實(shí)現(xiàn)虛擬AR/VR播報(bào)
????UE4支持自定義插件碉纺,可以將微軟語(yǔ)音服務(wù)和虛擬數(shù)據(jù)相結(jié)合船万,通過(guò)自定義插件的方式部署到UE4項(xiàng)目中捏膨,這樣只要跟UE4場(chǎng)景制定好插件接口調(diào)用方式亮钦,就能快速實(shí)現(xiàn)AR/VR播報(bào)的實(shí)時(shí)渲染輸出鳞绕。