動態

詳情 返回 返回

microsoft的azure語音,開發環境運行正常,發佈到centos7線上服務器之後無法運行 - 動態 詳情

最近在做AI語音對話的功能,用到了azure的語音語音服務,開發的時候還算順利,部署到線上後,發現在正式服上無法完成語音轉文本的操作,提示:

org.springframework.web.util.NestedServletException: Handler dispatch
failed; nested exception is java.lang.UnsatisfiedLinkError:
com.microsoft.cognitiveservices.speech.SpeechConfig.setTempDirectory(Ljava/lang/String;)V

關鍵是我在測試服上運行也是好好的,有點莫名其妙。
谷歌搜索該異常的時候就看到這麼個説法,説是centos7環境沒有安裝azure語音SDK導致的。
在這裏插入圖片描述
然後順利找到官方的centos7安裝語音SDK的解決方案:
https://learn.microsoft.com/zh-cn/azure/ai-services/speech-service/how-to-configure-rhel-centos-7

以為很快就能解決該問題,可是按照官方的操作流程執行下來,發現報錯還是一樣。然後又在官方文檔翻了好久,以為是還有哪裏的環境沒有配置好,整到後面都想把服務器重裝了,改成centos8,因為在我測試服的centos8服務器上一切運行正常。但是由於服務器上的服務有點多,怕數據丟失,最終還是回來繼續折騰這該死的centos7。我發誓以後再也不裝centos7了,要是再裝就是個大傻叉!

然後就繼續研究官方的文檔,發現文檔中環境設置這一部分,其實配置的是臨時環境變量。
在這裏插入圖片描述
於是就求助萬能的Chatgpt,把配置環境變量這塊把環境變量做成永久的。
操作如下:

echo 'export LD_LIBRARY_PATH=/usr/local/lib64:$LD_LIBRARY_PATH' >> ~/.bashrc
source ~/.bashrc
echo 'export PATH=/usr/local/bin:$PATH' >> ~/.bashrc
source ~/.bashrc

執行最後一條命令的時候,一開始我是直接執行官方文檔給出的命令,後來問了GPT之後才發現<version>其實是個待填項,這個差點把我自己給蠢哭
知道<version>是待填項之後,由於我代碼中的版本是1.34.1,於是我就把命令改成了:

export LD_LIBRARY_PATH=/path/to/extracted/SpeechSDK-Linux-1.34.1/lib/centos7-x64:$LD_LIBRARY_PATH

配置完之後,發現好像還真有用,因為服務端已經不報錯了。但是是解析出來的文本一直空!我已經想罵娘了。。。。。。

然後又是找各種資料,又是求助Chatgpt,才得知/path/to/extracted/SpeechSDK-Linux-1.34.1/lib/centos7-x64是個真實的目錄地址,可是我的服務器根本就沒有這玩意。後來想着是不是需要額外下載,但是微軟官方的文檔上根本沒找到這玩意,各個搜索引擎上也是沒有找到。然後又開始研究官方文檔的“排查SDK問題”。
在這裏插入圖片描述

然後找到了個方法是説可以給語音服務加日誌。於是我在我的代碼中加了一下的日誌跟蹤。不然真的是完全束手無策。。。程序沒有報錯信息,但是語音就是識別不了(建議所有的語音服務都加上日誌跟蹤,否則異常了根本沒地方查!)
在這裏插入圖片描述

加完之後再日誌文件中確實看到了報錯信息,但是這報錯信息又誤導了我好久!

ISpxNamedProperties::GetStringValue: this=0x0x002ba008128800; name='RESULT-ErrorDetails'; value='Connection failed (no connection to the remote host). Internal error: 1. Error details: Failed with error: WS_OPEN_ERROR_UNDERLYING_IO_OPEN_FAILED
wss://JapanEast.stt.speech.microsoft.com/speech/universal/v2

然後根據這錯誤信息又是一頓找問題!反正我已經不記得自己折騰了多少問題了。始終沒有解決!我都擔心繫統的環境被我玩壞了。。。。。。。

後來在找這問題的過程中,偶然看到底下這個內容,發現他這個SpeechSDK-Linux.tar.gz貌似就是我前面要找的SDK。但是這玩意真的藏得太深了。。。。。。。。。我真的想罵人!我就想説,您在官方文檔中直接把這下載地址附上去不可以嗎?真的是法克!!!!而且還不是可點擊下載的鏈接。。。。。
https://github.com/Azure-Samples/cognitive-services-speech-sdk/tree/master/quickstart/cpp/linux/from-microphone
在這裏插入圖片描述
我把圖中的地址打開後才下載到我想要的sdk。這個下載下來後 ,找到官方的文檔,然後結合Chatgpt,才把配置搞定:
https://learn.microsoft.com/zh-cn/azure/ai-services/speech-service/how-to-configure-rhel-centos-7

最後注意,官方文檔中,這個也記得要執行
https://learn.microsoft.com/zh-cn/azure/ai-services/speech-service/quickstarts/setup-platform?tabs=linux%2Crhel-centos%2Cdotnetcli%2Cdotnet%2Cjre%2Cmaven%2Cnodejs%2Cmac%2Cpypi&pivots=programming-language-java

在這裏插入圖片描述

這一期就純吐槽了!主要是想把這艱苦的過程記錄下,下期我整了個完整的操作流程!
最後歡迎大家來我的站點體驗下絲滑的語音服務(微信中打開這個地址體驗比較好):https://pcai.wailikeji.com
需要項目源碼的也可以加我v:bjxueai

Add a new 評論

Some HTML is okay.