亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

微信小程序實現語音識別轉文字功能及遇到的坑

2019-11-19 11:05:17
字體:
來源:轉載
供稿:網友

最近為小程序增加語音識別轉文字的功能,坑路不斷,特此記錄。

微信開發者工具

開發者工具上的錄音文件與移動端格式不同,暫時只可在工具上進行播放調試,無法直接播放或者在客戶端上播放

debug的時候發現,工具上錄音的路徑是http://tmp/xxx.mp3,客戶端上錄音是wxfile://xxx.mp3。 忽悠呢,不是格式不同,是映射路徑不同。

其實做個兼容也不難,每次提示一行文字,很丑。

采樣率與編碼碼率限制

每種采樣率有對應的編碼碼率范圍有效值,設置不合法的采樣率或編碼碼率會導致錄音失敗。詳細看這個
https://developers.weixin.qq.com/miniprogram/dev/api/media/recorder/RecorderManager.start.html

一開始沒有留意,導致錄音不成功。

試過幾次后,采用這樣的配置,感覺錄音識別率和體積之間比較好平衡:

sampleRate: 16000, //采樣率numberOfChannels: 1, //錄音通道數encodeBitRate: 96000, //編碼碼率

單通道基本是必選的。因為asr只支持單通道。frameSize也是可以的,但是要考慮截斷對識別的影響。暫時沒有用上。

錄音優化

因為可能誤按,于是對小于500ms的錄音直接忽略。
另外,松開錄音按鍵后,再延遲一點時間才真正stop錄音。

錄音文件格式

微信錄音文件支持mp3和aac。這2種格式文件都比較小,aac文件體積更小。這對上傳來說是件好事情,速度更快。
但是對語音識別轉文字就不友好了。因為百度、阿里云ASR、訊飛的語音轉文字接口都不支持aac和mp3,通常要求是pcm或者wav格式。

如果微信錄音能提供wav格式,那么就不用服務器做格式轉換了,但是wav格式體積是mp3、aac的5到10倍,至少短期是沒戲了,這也是很多人吐槽的地方。

服務器轉換錄音文件格式

可以用java第三方庫轉換,也可以用Process調用ffmpeg轉換。要注意的是,根據識別API的要求來做轉換。比如阿里云asr的要求是:

支持音頻編碼格式:pcm(無壓縮的pcm文件或wav文件)、opus,16bit采樣位數的單聲道(mono);
支持音頻采樣率:8000Hz、16000Hz;

java ProcessBuilder要使用數組傳參

轉換音視頻,習慣用ffmpeg。安裝完ffmpeg之后,用java新建進程調用。

Process = new ProcessBuilder("ffmpeg -i in.mp3 out.wav").start();

一直提示CreateProcess error。 后來看文檔才發現,要以數組的形式傳入參數。

Process = new ProcessBuilder("ffmpeg", "-y", "-i", "in.mp3", "out.wav").start();

這樣就啟動成功了。

關于java啟動進程,不是本文重點,以后再寫篇文章總結。

阿里云asr sdk使用問題

這個問題困擾了一天時間,回想起來真是吐血。
問題表現是微信錄制的語音很多都識別不了。
最初是直接把錄音mp3文件轉換為pcm文件,本地能播放,但是用阿里云asr sdk卻識別不了。 一開始以為是文件編碼問題。特意查了asr支持的文件格式,用ffprobe檢查,potplayer看屬性,都沒有看出問題。
甚至把啟動ffmpeg進程轉換也改了,用了java的庫去做,還是不行。
后來為了方便測試問題,用asr的restful接口測試錄音文件,都能識別! 似乎是sdk的問題。于是打開官方文檔例子對比。發現用的是sdk 2.x,老鐵啊你復制粘貼過來的代碼竟然少了!欲哭無淚。

// TODO 重要提示:這里是用讀取本地文件的形式模擬實時獲取語音流并發送的,因為read很快,所以這里需要sleep// TODO 如果是真正的實時獲取語音,則無需sleep, 如果是8k采樣率語音,第二個參數改為8000int deltaSleep = getSleepDelta(len, sampleRate);Thread.sleep(deltaSleep);

也少了對sampleRate的設置。

阿里云asr token過期

因為用的是免費版asr,沒有給福報廠充值,因此token一天失效,導致聯調的時候突然報錯。
最后實在受不了,寫了個定時任務每小時更新token。
這,就是beggar VIP😎

wx.uploadFile返回值

封裝了一個接口parseResponse,統一解析查詢結果(文本、語音)。發現奇怪的問題:

用文本查詢的,可以正常解析結果用語音查詢的,明明已經返回了結果,卻解析不了!

只能console.log()打印出來對比

第一行是wx.request()發起文本查詢。
第二行是wx.uploadFile()上傳語音文件后直接語音轉文字,并且查詢。

wx.request返回值是json對象。
wx.uploadFile返回值是“字符串”!
wx.uploadFile返回值是“字符串”!
wx.uploadFile返回值是“字符串”!
重要的事情要說3遍。盡管Content-Type: "application/json; charset=utf8",但是微信根本不做轉換!非??拥?/p>

解決:對wx.uploadFile返回值進行JSON.parse(res.data),得到json對象。

更換appid和secret

因為正式小程序項目賬號一直拖著沒有申請,所以這段時間用的是我個人的appid和secret進行開發。
等正式賬號準備好了,更新了小程序項目的appid,并且發出內部體驗包。

此時已經深夜1點半,頭腦有點發懵。只更新了小程序appid,竟然忘了更新服務器的appid和secret。。。
于是乎反復報錯登錄失敗。
過了一會才反映過來,更新服務器的appi的secret,但是還是用戶。才想起忘了還有storage緩存沒有清除😂,里面放著自定義的session。這下真機體驗沒問題了。
但是微信開發者工具又是登錄失敗。反復摸索后發現:更換小程序appid后,清除所有數據,關閉開發者工具,重新打開,這就正常了。應該是微信開發者工具的bug。

https://ycwu314.github.io/p/miniapp-speech-to-text-experience/

總結

以上所述是小編給大家介紹的微信小程序實現語音識別轉文字功能及遇到的坑,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對武林網網站的支持!
如果你覺得本文對你有幫助,歡迎轉載,煩請注明出處,謝謝!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
精品一区二区三区电影| 日韩在线免费高清视频| 欧美日韩国产在线看| 一区二区三区无码高清视频| 最新中文字幕亚洲| 久久久999精品| 久久99久久99精品免观看粉嫩| 久久综合伊人77777尤物| 久久久久久久国产| 亚洲一级免费视频| 亚洲va国产va天堂va久久| 欧美大片免费观看| 成人a在线视频| 91精品国产91久久久久福利| 国产美女精品视频免费观看| 亚洲精品一二区| wwwwwwww亚洲| 欧美日本高清一区| 亚洲а∨天堂久久精品喷水| 欧美成人在线网站| 久色乳综合思思在线视频| 久久久免费精品| 在线一区二区日韩| 57pao国产成人免费| 欧美高清自拍一区| 91精品中文在线| 欧美大尺度激情区在线播放| 欧美精品一本久久男人的天堂| 不卡中文字幕av| 91产国在线观看动作片喷水| 国产999精品视频| 精品精品国产国产自在线| 日韩成人在线免费观看| 国产小视频国产精品| 成人性生交大片免费看视频直播| 日韩欧美在线免费| 久久久久久久久久久91| 国产人妖伪娘一区91| 欧美日本中文字幕| 欧美在线性爱视频| 91精品中文在线| 精品国产一区二区三区久久狼5月| 亚洲男人第一av网站| 亚洲精品久久在线| 黄网动漫久久久| 欧美二区在线播放| 国内精品久久影院| 国产视频丨精品|在线观看| 欧美成人三级视频网站| 亚洲国产精品美女| 欧美多人乱p欧美4p久久| 亚洲精品久久久久中文字幕二区| 日韩在线视频网站| 隔壁老王国产在线精品| 日韩中文字幕免费看| 久久免费成人精品视频| 在线日韩第一页| 亚洲精品有码在线| 深夜福利日韩在线看| 欧美激情亚洲自拍| 97视频免费观看| 亚洲男人天堂古典| 精品视频在线导航| 成人久久18免费网站图片| 欧美床上激情在线观看| 中文字幕av日韩| 美女撒尿一区二区三区| 亚洲视频一区二区三区| 色综合伊人色综合网站| 9.1国产丝袜在线观看| 欧美成aaa人片在线观看蜜臀| 亚洲国产99精品国自产| 亚洲日韩欧美视频一区| 日韩av有码在线| 日韩精品免费一线在线观看| 日韩在线资源网| 日韩亚洲精品视频| 亚洲国产精品悠悠久久琪琪| 欧美老少做受xxxx高潮| 91在线高清免费观看| 日韩精品免费在线视频| 国产精品福利在线观看| 秋霞成人午夜鲁丝一区二区三区| 一区二区亚洲欧洲国产日韩| 精品亚洲男同gayvideo网站| 大伊人狠狠躁夜夜躁av一区| 国产91在线播放九色快色| 精品欧美国产一区二区三区| 国产精品一区二区久久精品| 国内精品中文字幕| 午夜免费久久久久| 538国产精品一区二区免费视频| 国产精品网站视频| 国产一区二区三区中文| 久久精品99国产精品酒店日本| 国产亚洲成精品久久| 国产亚洲美女久久| 一区二区三区视频免费| 国产一区私人高清影院| xxav国产精品美女主播| 91免费版网站入口| 日韩av在线电影网| 国产成人亚洲综合青青| 91色在线视频| 亚洲精品99久久久久中文字幕| 国产精品一区二区久久国产| 亚洲最大成人在线| 国产美女久久精品香蕉69| 欧美激情va永久在线播放| 亚洲天堂久久av| 欧美中文字幕精品| 欧美交受高潮1| 日韩欧美国产激情| 亚洲图片欧美午夜| 久久久久久久久久国产| 美女av一区二区| 91精品视频免费| 92看片淫黄大片欧美看国产片| 国产精品美女无圣光视频| 九九久久综合网站| 色综合色综合久久综合频道88| 91香蕉嫩草影院入口| 国产成人精品在线视频| 日韩av影片在线观看| 中文字幕视频在线免费欧美日韩综合在线看| 日韩在线观看免费全集电视剧网站| 一区二区三区视频在线| 在线电影av不卡网址| 国产成人精品久久久| 亚洲福利在线播放| 超在线视频97| 亚洲欧美日韩第一区| 一区二区三区视频在线| 精品日韩视频在线观看| 国产精品视频播放| 欧美性受xxx| 欧美激情第99页| 精品国产乱码久久久久久天美| 久久久久久久香蕉网| 国产精品一区二区三区在线播放| 欧美精品一区二区三区国产精品| 国产欧美欧洲在线观看| 亚洲欧洲黄色网| 97久久精品人人澡人人爽缅北| 欧美天堂在线观看| 欧美成人手机在线| 中文字幕亚洲一区| 亚洲美女又黄又爽在线观看| 国产日韩欧美视频在线| 国产欧美一区二区三区视频| 精品精品国产国产自在线| 国内精品400部情侣激情| 日韩在线视频一区| 欧美激情2020午夜免费观看| 久久手机精品视频| 日韩av电影手机在线| www.亚洲一区| 亚洲剧情一区二区| 欧美福利小视频| 懂色av一区二区三区| 亚洲欧美激情四射在线日| 啊v视频在线一区二区三区| 亚洲女同精品视频| 成人精品视频在线|