西城專業(yè)網(wǎng)站建設(shè)公司哪家好如何進(jìn)行網(wǎng)站性能優(yōu)化
介紹
頂頂通語(yǔ)音識(shí)別軟件(asrproxy)是一個(gè)對(duì)接了多種語(yǔ)音識(shí)別接口的語(yǔ)音識(shí)別系統(tǒng)。可私有化部署(支持中文英文和方言等,支持一句話識(shí)別、實(shí)時(shí)流識(shí)別、多聲道錄音文件識(shí)別。
原理
asrproxy內(nèi)嵌了阿里達(dá)摩院的開源語(yǔ)音識(shí)別工具包FunASR,后續(xù)我們也會(huì)使用自有的預(yù)料來增強(qiáng)模型,以后也會(huì)添加openai的開源模型whisper 。asrproxy也對(duì)接了主流的ASR云服務(wù)商,比如阿里云,科大訊飛,騰訊云,mrcp等。使用同一套接口就可以無縫切換各種ASR。
一句話識(shí)別接口和錄音文件識(shí)別接口
識(shí)別參數(shù)放在http請(qǐng)求頭里面,聲音文件內(nèi)容通過post發(fā)送,不需要編碼發(fā)送原始文件就可以。
POST /asr HTTP/1.1
Host: 116.62.146.93:9990
User-Agent: Mozilla/5.0
Accept: */*
Cache-Control: max-age=0
Connection: close
id:test
samplerate: 8000
signature:605bef92414621abfca073ebc6ad7d3b
timestamp:1697505856
engine:shortsentence
Content-Length: 30240
聲音數(shù)據(jù)
識(shí)別結(jié)果通過JSON返回。
HTTP/1.1 200 OK
Date: Tue, 17 Oct 2023 01:25:36 GMT
Server: www.ddrj.com
Content-Length: 35
Connection: Keep-Alive
Content-Type: text/plain
Pragma: no-cache
Cache-Control: private, max-age=0, no-cache{"code":"0","desc":"識(shí)別結(jié)果"}
請(qǐng)求參數(shù)說明
-
timestamp 時(shí)間戳和服務(wù)器誤差只允許5分鐘內(nèi)
-
id asrproxy.json配置的用戶id(asrproxy.json->short_sentence_asr->users)
-
signature 簽名 md5(key+timestamp) 本例中key是test,md5(test1697505856)=605bef92414621abfca073ebc6ad7d3b。
key配置位置:asrproxy.json->short_sentence_asr->users->id->key -
engine 引擎類型 asrproxy.json->groups配置ASR引擎,默認(rèn)配置是 shortsentence
-
hostwords 熱詞,多個(gè)熱詞用空格分開
-
datatype 數(shù)據(jù)類型,不設(shè)置默認(rèn)是pcm類型
- pcm 原始的PCM數(shù)據(jù),
- wav wav格式的數(shù)據(jù)
- mp3 mp3格式的數(shù)據(jù)
- url 通過URL獲取文件
-
samplerate datatype是pcm時(shí)有效,聲音采樣頻率,不設(shè)置默認(rèn)是8000
-
sentence_time 是否需要輸出句子時(shí)間,設(shè)置為true輸出。
-
post內(nèi)容
-
datatype是pcm、wav、mp3時(shí)是原始的聲音數(shù)據(jù)
-
datatype是url的時(shí)候是josn格式的要識(shí)別的文件信息
{ "uuid":"唯一的ID,回調(diào)通知用", "callback_url":"識(shí)別結(jié)果回掉URL。", "file_url":"要識(shí)別文件的URL,支持本地文件的絕對(duì)路徑和http文件", "ext":"wav|mp3|pcm"//http返回的數(shù)據(jù)類型,如果file_url是本地文件會(huì)根據(jù)文件后綴來識(shí)別文件類型 }
-
響應(yīng)參數(shù)說明
- code 0 沒錯(cuò)誤 其他錯(cuò)誤代碼,如果有錯(cuò)誤desc內(nèi)容是錯(cuò)誤信息
- desc
-
識(shí)別單聲道文件時(shí)desc是字符串類型的識(shí)別結(jié)果。
-
識(shí)別多聲道文件時(shí)并且sentence_time設(shè)置為fasle,desc字符串?dāng)?shù)組類型[“第一聲道的識(shí)別結(jié)果”,“第二聲道的識(shí)別結(jié)果”]
-
sentence_time 設(shè)置為true,desc是二維數(shù)組
- silence_duration 句子前面的靜音時(shí)間,單位秒
- begin_time 句子開始時(shí)間,單位秒
- end_time 句子結(jié)束時(shí)間,單位秒
- speech_rate 語(yǔ)速,單位為每分鐘字?jǐn)?shù)
{"uuid": "","code": "0","desc": [[{"silence_duration": 1.36,"begin_time": 1.36,"end_time": 3.19,"speech_rate": 131.148,"text": "喂你好。"}, {"silence_duration": 0.74,"begin_time": 3.93,"end_time": 17.76,"speech_rate": 303.688,"text": "這邊是百萬醫(yī)療項(xiàng)目的客服哈。"}],[{"silence_duration": 1.36,"begin_time": 1.36,"end_time": 3.19,"speech_rate": 131.148,"text": "喂你好。"}, {"silence_duration": 0.74,"begin_time": 3.93,"end_time": 17.76,"speech_rate": 303.688,"text": "這邊是百萬醫(yī)療項(xiàng)目的客服哈。" }] ] }
-
測(cè)試方法
接口測(cè)試地址 http://demo.ddrj.com:9990/asr
瀏覽器直接上傳文件測(cè)試地址 http://demo.ddrj.com:9990/test
可用curl命令測(cè)試,為了調(diào)過驗(yàn)證簽名步驟,需要把a(bǔ)srproxy.json->short_sentence_asr->users->id(test)里面添加"not_validate_signature":true這個(gè)配置。
一句話識(shí)別測(cè)試
1.wav改成要識(shí)別的文件,如果識(shí)別的文件是mp3的,datatype:wav也要改成datatype:mp3
curl -H "id:test" -H "engine:shortsentence" -H "datatype:wav" -X POST --data-binary @1.wav http://demo.ddrj.com:9990/asr
錄音文件識(shí)別測(cè)試
curl -H "id:test" -H "engine:shortsentence" -H "datatype:url" -X POST -d "{\"ext\":\"mp3\",\"uuid\":\"name\",\"file_url\":\"http://demo.ddrj.com/t1.mp3\",\"callback_url\":\"http://demo.ddrj.com/ttsresult\"}" http://demo.ddrj.com:9990/asr
實(shí)時(shí)流識(shí)別接口
通過websocket連接上 ws://127.0.0.1:9988 ,發(fā)送一個(gè)請(qǐng)求頭,然后發(fā)送二進(jìn)制的聲音流,結(jié)束識(shí)別發(fā)送字符串END
結(jié)束識(shí)別。
引導(dǎo)頭格式為 時(shí)間戳json的參數(shù)\0,注意\0是一個(gè)二禁制的0。
1699344741507{"callid":"07ca13d3-55cc-47ef-a591-ffaee83d0e0b","asr_mode":1,"hot_word":"","asr_params":{"group":"default"},"vad_min_active_time_ms":100,"vad_max_end_silence_time_ms":1000,"wait_speech_timeout_ms":5000,"max_speech_time_ms":60000,"samples_per_second":8000}\0
- asr_mode: asr模式 0只第一句話 1 持續(xù)識(shí)別
- hot_word: 熱詞 ,需要asr引擎支持
- asr_params: asr參數(shù),可用來選擇asr引擎 {“group”:“default”}
- vad_min_active_time_ms: 最小說話時(shí)間,需要ASR引擎支持
- vad_max_end_silence_time_ms: 最大靜音時(shí)間,需要ASR引擎支持
- wait_speech_timeout_ms: 等待說話時(shí)間,需要ASR引擎支持
- max_speech_time_ms: 最大識(shí)別時(shí)間,需要ASR引擎支持
- samples_per_second: 聲音頻率 8000或者 16000
返回識(shí)別結(jié)果
【標(biāo)記1個(gè)字節(jié)-識(shí)別結(jié)果】
標(biāo)記字符含義
0:中間結(jié)果
1:句子結(jié)束,對(duì)于支持長(zhǎng)時(shí)間識(shí)別的ASR才支持,用于斷句。
F:識(shí)別結(jié)束,客戶端已經(jīng)發(fā)送了END
f:識(shí)別結(jié)束,客戶端沒有發(fā)送END,ASR檢測(cè)到靜音太長(zhǎng)認(rèn)為停止說話了。
E:ASR錯(cuò)誤
標(biāo)志是f/F/E的時(shí)候客戶端要主動(dòng)斷開連接
測(cè)試頁(yè)面
http://demo.ddrj.com/wsasr.html
配置
{"key":"asrproxy.license", //授權(quán)文件路徑"log":{"console_level":0, //輸出控制臺(tái)日志等級(jí)0-5(0:DEBUG, 1:INFO, 2:NOTICE, 3:WARNING, 4:CRIT, 5:CONSOLE)"file_level":0, //輸出到文件日志等級(jí)0-5(0:DEBUG, 1:INFO, 2:NOTICE, 3:WARNING, 4:CRIT, 5:CONSOLE)"file_maxsize":100, //文件大于多少M(fèi)就自動(dòng)創(chuàng)建新的日志文件。"file_number":10 //最大保留日志文件個(gè)數(shù)},"short_sentence_asr":{"listen_ip":"0.0.0.0","listen_port":9990,"bgasr_thread_count":null, //錄音文件識(shí)別的ASR線程個(gè)數(shù),如果不設(shè)置就是根據(jù)CPU個(gè)數(shù)自動(dòng)設(shè)置。"users":{//用戶ID,可以配置多個(gè)用戶"test":{ "not_validate_signature":false,//是否禁用驗(yàn)證簽名,改成true,就是不驗(yàn)證簽名"key":"test",//用戶KEY"ip":"*" //*任意IP都可以訪問,也可以限制可以訪問的ip}}},"asr":{"listen_ip": "127.0.0.1","listen_port": 9988,"storage": "record", //asr錄音目錄,調(diào)用asr時(shí),設(shè)置了asr_params.recordfilename才會(huì)錄音。"acl":"*", //哪些IP可以訪問,配置*任意IP都可以訪問,多個(gè)IP用逗號(hào)隔開,如果不配置acl,通過127.0.0.1不需要配置在ACL里面也可以訪問。"interface": {"funasr": {"type": "funasr","engine": "sentence", //一句話"enable_itn":true, //數(shù)字轉(zhuǎn)換成阿拉伯?dāng)?shù)字"model-dir": "model/paraformer-large"//模型目錄},"funasr_realtime": {"type": "funasr","engine": "2pass",//offline:關(guān)閉實(shí)時(shí)識(shí)別 online:開啟實(shí)時(shí)識(shí)別 2pass:混合2種模式,需要更多CPU。"enable_itn":true, //數(shù)字轉(zhuǎn)換成阿拉伯?dāng)?shù)字 "model-dir": "model/paraformer-large","online-model-dir": "model/paraformer-large-online","punc-dir": "model/punc-realtime","chunk-size":4800 } },"groups":{//實(shí)時(shí)識(shí)別使用的ASR"default":{ "mode":0, //0:順序使用,當(dāng)使用數(shù)量等于count的時(shí)候切換下一個(gè) 1:循環(huán)使用"enable": //啟用的那些ASR配置["funasr_realtime"]},//一句話識(shí)別和文件識(shí)別使用的ASR"shortsentence":{"mode":0,"enable":["funasr"]}}}
}