小程式語音與訊飛語音識別踩坑過程
【由於CSDN的markdown的排版不是很好,所以整理了一下,新的地址:http://blog.csdn.net/c910511/article/details/54839160】 公司要在微信小程式上面實現語音識別的功能,後端的踩坑功能就落到了我的頭上了。本著好好學習,努力研究的精神,二話不說就接下了這個任務了。 我在公司的開發環境是在Window上面的,而生產環境是在Ubuntu上面的,所以有的時候開發出來的東西會有一點相容的問題,這個見怪不怪了。在Window環境上面研究的過程中規中矩,沒有碰到上面太多或者太大的坑。下面先說一下實現的大概思路,接著在說一下遇到的坑。 我們是在微信的小程式上面呼叫微信的錄音介面,把錄音上傳到我們後端進行處理,我們後端接收到微信小程式傳回來的語音檔案,這個語音檔案是SILK格式的,我們收到SILK格式的檔案後,先要將SILK檔案轉換為WAV格式或者PCM(音訊取樣率要是 16k 或者 8k,16 位,單聲道音訊),在檔案轉換成功後,然後呼叫訊飛的語音識別的介面,把語音轉換為文字的格式,然後使用這個文字進行相對應的邏輯操作。 微信用的SILKv3編碼是Skype向第三方開發人員和硬體製造商提供免版稅認證(RF)的Silk寬頻音訊編碼器,Skype後來將其開源。反正錄音的檔案很小,發回來的都是幾K的,轉換為PCM或者WAV都是100K左右。下面說一下遇到的坑和爬坑過程: 坑一:libmsc64.so檔案不生效。花費了一天的時間看文件那些,已經在Window上面把整體的流程跑通了,程式的識別率還是挺高的,接下來要做的是把這個程式配置到測試伺服器上面,看能不能給前端的小程式跑通。因為訊飛的服務要用到動態庫的,而在Window上面的動態庫可以直接放到專案的根目錄或者System32 目錄,但是Ubuntu要自己手動指定LD_LIBRARY_PATH的目錄,雖然之前Linux系統用了很久,但是至少一些基礎得操作,LD_LIBRARY_PATH這個之前是沒有搞過。。。,百度了好久,按照百度的教程配置了一下,發現配置成功了,但是程式卻死活說缺包,實在不行,所以我就把libmasc64.so檔案放到/lib/ 和 /lib64/ 目錄,發現也不行,列印了一些動態庫的地址,/lib/ 和 /lib64/ 目錄是有配置了的,可以直接把so檔案放進去的,很無奈,搞了半天,死活不生效,測試服上面有很多東西,是不能重啟的。最後只能在程式碼裡面執行System.load(/xxxx/libmac64.so),這樣把檔案載入進去,這個是沒有辦法的辦法。 坑二:語音轉換功能public static void RecognizePcmfileByte(String uuid,String filePath)功能要在訊飛的註冊SpeechUtility.createUtility("appid=" + APPID) 成功後才能只能,不然也會報錯,大概的意思是缺動態庫包,所以我把訊飛的註冊功能在在專案執行的ServletContentListener裡面,這樣就可以保在呼叫轉換語音功能前一定註冊成功了。
坑三:微信小程式檔案上傳BUG,因為這個BUG是微信的鍋,但是也影響到了我們功能的實現了,在我們把功能實現差不多了,前端也把小程式的檔案上傳上來了,識別率還是不錯的,在我們接受的範圍內,然後我就用我的手機掃碼嚐鮮一下,卻發現預約檔案上傳失敗,說是上傳的檔案為空。這個問題就很怪了,我們剛剛才在其他的手機上面測試是沒有什麼問題的,在我這裡卻又問題,難道是我的信仰有問題?試了多部手機才發現:在IPhone上面微信的上傳檔案是沒有什麼問題的,但是在Android上面上傳檔案是不行的,IPhone上面最新的微信是6.5多,Android的最新版本是6.3多,所以上傳檔案有問題,百度了一下,很多人都有這個問題【我們上傳檔案是直接用File上傳的,還沒有試過把檔案轉為base64再上傳】
坑四:訊飛識別率低的問題。我們在拿到微信的檔案後,是通過ffmpeg來進行轉碼的,轉碼的功能我是參考了這個開源專案
!/bin/bash
File: converter.sh
Date: August 19th, 2016
Time: 18:56:52 +0800
Usage: sh converter.sh silk_v3_file/input_folder output_format/output_folder flag(format)
Flag: not define —- not define, convert a file
other value —- format, convert a folder, batch conversion support
Requirement: gcc ffmpeg
Colors
RED=”\e[31;1m”
GREEN=”\e[32;1m”
YELLOW=”\e[33;1m”
WHITE=”\e[37;1m”
RESET=”\e[0m”
Main
cur_dir=$(cd dirname $0
; pwd)
if [ ! -r “
make && make decoder
[ ! -r “cur_dir/silk/decoder" ]&&echo -e "{RED}[Error]{RESET} Silk v3 Decoder Compile False, Please Check Your System For GCC.”&&exit
echo -e “{WHITE}========= Silk v3 Decoder Compile Finish =========${RESET}”
fi
cd $cur_dir
while [ 3 ]; do
pidof /usr/bin/ffmpeg&&echo -e “{RED}[Error]{RESET} ffmpeg is occupied by another application, please check it.”&&exit
[ ! -d “1" ]&&echo -e "
TOTAL=
[ ! -d “2" ]&&mkdir "2”&&echo -e “
[ ! -d “2" ]&&echo -e "{RED}[Error]{RESET} Output folder could not be created, please check it.”&&exit
CURRENT=0
echo -e “{WHITE}========= Batch Conversion Start ==========
let CURRENT+=1
if [ ! -f “2/
ffmpeg_pid=
[ -f “
echo -e “[
fi
ffmpeg -y -f s16le -ar 24000 -ac 1 -i “2/
ffmpeg_pid=
rm “
[ ! -f “
echo -e “[CURRENT/
done
echo -e “
exit
done
【由於CSDN的markdown的排版不是很好,所以整理了一下,新的地址:http://blog.csdn.net/c910511/article/details/54839160】
公司要在微信小程式上面實現語音識別的功能,後端的踩坑功能就
聲網是一家提供語音、視訊即時通訊服務的公司,他的服務大多基於WebRTC開源專案並進行一些優化和修改。而訊飛語音識別應該不用多說了,老羅在釋出會上介紹得已經夠詳細了。
那麼下面進入今天的主題,就是讓聲網和訊飛識別同時使用,之前可能有朋友沒遇到過這樣的需求,那先說一下讓兩者同
最近專案集成了訊飛語音識別功能,由此記錄簡單的整合流程
demo效果(logcat)
資源下載
1、首先用as建一個model (這個不用介紹)
2、登入訊飛開發者平臺,進入控制檯,建立應用生成appid
1、 建立應用
下載 oid androi tail dst -- 阿裏 info 科大
項目實踐:https://blog.csdn.net/Jsagacity/article/details/80094164
demo下載地址:https://fir.im/jy28 d
Unity版本4.6+Eclipse
1,首先我們先去訊飛開放平臺註冊一個開發者賬號(註冊地址:http://www.xfyun.cn),註冊完成後進入控制檯建立一個新的應用。
2,提交成功後我們需要選擇我們需要開通我們需要的服務,點選開
其他操作就不在一一贅述了,直說一下新增的負責錄音的那段程式碼
1、首先利用Microphone類開始錄製和結束錄製音訊
2、利用AudioSource類播放錄製的音訊
3、然後用自己寫的方法Float2Byte將錄製的音訊轉成byte資料,供訊飛語音識別方法呼叫
詳細
閒來無事做的一個demo。本來想做成網站的形式,發現不知道怎麼在請求頭裡加資訊,於是就做成了Winform版的。
去官網開通sdk
沒註冊的先要註冊,然後建立應用,應用平臺選擇webAPI
回到控制檯,新增新服務--線上語音合成、語音聽寫
新增IP
本專案做出的產品是一個Windows下的增強現實系統,系統很龐大,產品功能已經基本完善,考慮到給使用者帶來更好的體驗,故綜合評估後採用訊飛語音識別方案進行嫁接。
專案介紹:
1)開啟系統時啟動語音識別,檢測到使用者說出關鍵詞(如:上一步,下一步,結束等)時,系統自動進行相應
個人網站:極客時代
下面貼出訊飛語音識別的輔助類:
package com.Ray.assistwModel;
import java.net.ContentHandler;
import java.security.PublicKey;
import com.Ray
private void init() {
//合成監聽器
SynthesizerListener mSynListener = new SynthesizerListener() {
//會話結束回撥介面,沒有錯誤時,error為null
public
之前一直想開始寫技術部落格,倒不是說自己有多牛,只是覺得自己弄了點東西出來想和大家分享,而且聽說有利於自己技術水平的提高,就權當是一次記錄吧,這是第一篇。
之前因為一次比賽App要用到語音識別,做一個通過手機輸入語音指令然後根據輸入內容做出響應的功能,當時請教
轉載自:http://blog.csdn.net/chenshufei2/article/details/8496905
一、簡介
語音識別現在應用越來越廣泛了 比如語音寫簡訊、語音搜尋商品、語音搜尋關鍵字等等,這遍我們就簡單的談談國內比較流
近階段在開發一款app,實現通過藍芽耳機進行訊飛語音識別,獲取識別結果之後再通過語音合成從藍芽耳機播報出識別結果。上網也查了很多資料,大多是說通過一下兩行程式碼: mAudioManager.setBluetoothScoOn(true);
比如口算遊戲: 訊飛會返回:請回答[n2]78+11=?
此時我們要去掉[n2]
可做如下操作
String results = "[n2]78+11=?";
results = results.replaceAll("\\[" + "n2" + "\\]", "");
眨眼之間又是好久沒有寫部落格了,佩服那些寫了很多部落格的大神,堅持和耐心值得我學習
這次寫的是一個知名的語音識別sdk,就是科大訊飛的語音識別,其實也沒有多複雜,但是由於我是用swift語言,期間出了很多差錯 ,搞了好久,在這裡就慢慢記錄下來吧。
使用步驟: (有很多步驟
最近要在應用裡面使用語音識別功能,老闆選擇了科大訊飛的技術,小可也就開始看文件啦;
這裡只嵌入了語音識別,其他的語法什麼的沒有研究,有需要的各位看文件唄;
需要的資料 :只識別數字,若不過濾則把LSpeechManager中的onResult方法中的LDataFormat過
一.走近訊飛(iFly)
語音技術實現了人機語音互動,使人與機器之間溝通變得像人與人溝通一樣簡單。語音技術主要包括語音合成和語音識別兩項關鍵技術。讓機器說話,用的是語音合成技術;讓機器聽懂人說話,用的是語音識別技術。此外,語音技術還包括語音編碼、音色轉換、口語評測、語音
因為公司的業務的需要,對三家的語音識別(簡短語句識別java版)進行了呼叫和對比,把自己的測試成果貼出來供需要的人蔘考使用.並貼出主要程式碼塊
阿里雲的一句話識別:
package com.alibaba.idst.nls.demo;
import
離線命令詞識別
效果圖
示例原始碼
步驟:
1. 下載SDK
2. 整合方法
3. 正題,開始整合
1. 新增許可權
這裡用到的喚醒功能不是所有的許可權都用到的,具體用到了哪些許可權,可以看上面的
訊飛科技的語音技術,個人認為非常強大,但是技術文件的介紹,還是有些不完全,也沒有線上的技術客服,相信有很多朋友都會遇到大大小小的問題,第三方SDK的整合,或者整合後方法的呼叫等。
廢話不多說,這裡我先介紹下最近我使用的聲紋識別技術——自由說(文字密碼,數字密碼也會介紹到)
if [ ! -f “1.pcm” ]; then
ffmpeg -y -i “
ffmpeg_pid=!
while kill -0 “ffmpeg_pid”; do sleep 1; done > /dev/null 2>&1
[ -f “{1%.*}.2” ]&&echo -e “{GREEN}[OK]相關推薦
小程式語音與訊飛語音識別踩坑過程
Android開發之聲網即時通訊與訊飛語音識別相結合
訊飛語音識別SDK整合 語音識別 語音合成 訊飛英語識別
Android集成訊飛語音、百度語音、阿裏語音識別
Unity接入訊飛語音識別___Android版
unity接科大訊飛語音識別Windows平臺(補充前面的文章,添加了錄音功能)
Winform利用訊飛語音WebAPI實現線上語音合成、語音識別
利用訊飛語音識別技術開發離線語音控制系統(Windows平臺)
訊飛語音語音識別輔助類
第三方整合訊飛 語音識別 文字轉音
訊飛語音命令詞識別的SDK配置與運用
android 語音識別 之 訊飛語音移植
Android開發之通過藍芽耳機實現訊飛語音識別的功能
科大訊飛語音識別時字串中特殊字元的處理
科大訊飛語音識別使用過程中踩過的坑
Android 科大訊飛語音識別 金額數字
使用訊飛語音實現語音識別,朗讀文字
java版阿里雲,百度ai,訊飛語音識別效果簡單對比及demo
訊飛語音——離線命令詞識別
訊飛語音聲紋識別技術——自由說(文字密碼,數字密碼也會介紹)