[chatgpt+unity]AI二次元妹子之通過(guò)RestfulApi調(diào)用微軟Azure語(yǔ)音服務(wù),實(shí)現(xiàn)對(duì)話交流

1.簡(jiǎn)述
? ? ? ? 如題所述,這個(gè)小項(xiàng)目是在unity引擎端,使用了chatgpt+微軟azure的一個(gè)AI二次元女友對(duì)話的項(xiàng)目,實(shí)現(xiàn)原理也比較簡(jiǎn)單,即在unity端實(shí)現(xiàn)AI二次元女友的交互界面,接入chatgpt-3.5-turbo的api接口,借助chatgpt的自然語(yǔ)言生成能力,作為這個(gè)項(xiàng)目的聊天引擎。聊天功能也比較簡(jiǎn)單,通過(guò)接入微軟Azure的語(yǔ)音識(shí)別api,在unity客戶端接入麥克風(fēng)采集說(shuō)話的聲音,調(diào)用語(yǔ)音識(shí)別api返回識(shí)別的文本,再通過(guò)拼接prompt,調(diào)用chatgpt接口,得到回復(fù)信息文本之后,再調(diào)用azure的語(yǔ)音合成接口,得到音頻,最后播放出來(lái),關(guān)聯(lián)live2d模型的口型同步,這樣基本上就實(shí)現(xiàn)了我希望的效果。這個(gè)項(xiàng)目我已經(jīng)在Gitee開源有一段時(shí)間了,本來(lái)也有計(jì)劃要寫一些相關(guān)文檔的,一直沒有時(shí)間,這次就抽時(shí)間把項(xiàng)目里涉及到的Azure語(yǔ)音服務(wù)部分的代碼整理成文檔,也方面想學(xué)習(xí)這個(gè)小伙伴一個(gè)參考。
2.微軟Azure
????????微軟 Azure是微軟基于云計(jì)算的操作系統(tǒng),是微軟“軟件和服務(wù)”技術(shù)的名稱。Windows Azure的主要目標(biāo)是為開發(fā)者提供一個(gè)平臺(tái),幫助開發(fā)可運(yùn)行在云服務(wù)器、數(shù)據(jù)中心、Web和PC上的應(yīng)用程序。 說(shuō)這么多,其實(shí)Azure就是微軟提供給開發(fā)者各種云服務(wù),其中就包括了AI相關(guān)的服務(wù),比如語(yǔ)音服務(wù)。
????????Azure地址傳送門:https://azure.microsoft.com/zh-cn/
????????關(guān)于Azure服務(wù)的使用,需要首先申請(qǐng)一個(gè)Azure的賬號(hào),申請(qǐng)賬號(hào)成功之后,就可以申請(qǐng)使用Azure的各種服務(wù)了。Azure提供了不少免費(fèi)的服務(wù),對(duì)于白嫖黨來(lái)說(shuō)簡(jiǎn)直就是福利。但是這里有一點(diǎn)需要說(shuō)明了,就是申請(qǐng)Azure賬號(hào)的時(shí)候,需要填寫一個(gè)visa或萬(wàn)事達(dá)的信用卡賬號(hào),如果沒有的話,就申請(qǐng)不了賬號(hào)了,這個(gè)可能會(huì)是一個(gè)門檻。注冊(cè)成功之后,微軟會(huì)給你的賬號(hào)贈(zèng)送200美元的體驗(yàn)金,這個(gè)有效期有一年的時(shí)間,也算是一個(gè)相當(dāng)好的福利了,就是信用卡的問(wèn)題,必須解決,這里算是一個(gè)經(jīng)驗(yàn)提示吧。
? ? ? ? 在申請(qǐng)語(yǔ)音服務(wù)的訂閱過(guò)程,第一個(gè)月可以申請(qǐng)?jiān)囉玫挠嗛啠行谑且粋€(gè)月的時(shí)間,可以免費(fèi)提供50萬(wàn)字的語(yǔ)音合成額度,基本上自己用完全無(wú)壓力。到第二個(gè)月就需要更新訂閱了,更新完訂閱,語(yǔ)音服務(wù)依然可以選擇免費(fèi)的F0訂閱,享受50萬(wàn)字每月的額度。
3.Azure語(yǔ)音合成的代碼實(shí)現(xiàn)
????????在Azure語(yǔ)音的代碼實(shí)現(xiàn)方面,微軟官方實(shí)際上提供有sdk,其中也有適用unity的插件包可用,插件的傳送門如下:
https://learn.microsoft.com/zh-cn/azure/ai-services/speech-service/quickstarts/setup-platform?pivots=programming-language-csharp&tabs=windows%2Cubuntu%2Cdotnetcli%2Cunity%2Cjre%2Cmaven%2Cnodejs%2Cmac%2Cpypi
????????不過(guò)本文所介紹的代碼實(shí)現(xiàn)并不是使用上述插件的代碼實(shí)現(xiàn),主要是因?yàn)橹拔矣眠@個(gè)sdk發(fā)現(xiàn)發(fā)布到webgl就不可用了,只能windows使用,這個(gè)有點(diǎn)坑,所以就查閱了Azure的官方文檔,找到了restful api的實(shí)現(xiàn)方式,所以就實(shí)現(xiàn)了調(diào)用restful api實(shí)現(xiàn)語(yǔ)音識(shí)別和語(yǔ)音合成的代碼,在這邊文章做一下記錄和分享,下面,分享一下具體的代碼實(shí)現(xiàn)。
3.1.Azure語(yǔ)音識(shí)別
????????實(shí)現(xiàn)語(yǔ)音識(shí)別這部分功能,首先在unity端是有獲取麥克風(fēng)聲音的接口,可以直接獲取電腦接入的麥克風(fēng),采集聲音信息的功能的,所以只需要關(guān)注如何使用restful api調(diào)用Azure語(yǔ)音識(shí)別api的方法就可以了。
? ? ? ? Azure語(yǔ)音識(shí)別的api地址:
????????這里面,region的值就是你在Azure語(yǔ)音服務(wù)里訂閱的地區(qū)碼,比如我訂閱的是東亞地區(qū)的,所以這個(gè)地區(qū)碼就是“eastasia”。
????????以下是調(diào)用restful api的C#代碼示例:
用到的工具類:
3.2.Azure語(yǔ)音合成
?????????Azure語(yǔ)音合成部分的功能,需要將合成的文本,POST到Azure語(yǔ)音合成的restful api服務(wù)即可實(shí)現(xiàn)語(yǔ)音的合成功能,代碼示例如下:
????????語(yǔ)音合成設(shè)置參數(shù)中,涉及到朗讀的聲音,具體的聲音編碼可已到Azure的官方文檔查閱,有詳細(xì)的介紹,這里需要注意,有些聲音的選擇需要同步修改語(yǔ)言編碼,這個(gè)根據(jù)官方文檔來(lái)就可以了。官方文檔地址:
4.結(jié)束語(yǔ)
? ? ? ? 本文介紹了一下微軟Azure語(yǔ)音服務(wù)的restful api的使用代碼示例。我在自己的開源項(xiàng)目AI二次元小姐姐聊天機(jī)器人里使用到了相關(guān)的技術(shù),只停留在應(yīng)用方面。當(dāng)然在服務(wù)調(diào)用方法方面,官方也提供有多個(gè)不同語(yǔ)言的代碼示例以及SDK,大家可以根據(jù)自己的實(shí)際需求選擇技術(shù)方案。
? ? ? ? 上述的代碼示例并不是完整可以直接執(zhí)行的代碼,我只是將我的項(xiàng)目代碼中,涉及到微軟語(yǔ)音服務(wù)的關(guān)鍵部分提取出來(lái)了,源碼還有部分unity客戶端的代碼邏輯,所以上面的代碼實(shí)現(xiàn)僅供有編碼基礎(chǔ)的朋友參考,不要直接丟到自己的項(xiàng)目里使用。
? ? ? ? 對(duì)我這個(gè)項(xiàng)目感興趣的朋友,可以通過(guò)以下鏈接查看本項(xiàng)目效果。所有源碼均已開源到Github以及Gitee上了,歡迎大家一起學(xué)習(xí)交流。


源碼地址傳送門:
Github地址:https://github.com/zhangliwei7758/unity-AI-Chat-Toolkit?
Gitee地址:https://gitee.com/DammonSpace/unity-ai-chat-toolkit