微信小程序語音識別


語音識別現在已經發展的很成熟了,經過比對發現百度對開發者比較友好,提供很多種語言的SDK,對python來說直接安裝 pip install baidu-aip 文檔寫的也不錯  具體參考:http://ai.baidu.com/docs#/ASR-Online-Python-SDK/top

也看了訊飛的語音,發現訊飛對開發者的支持不是太好,調用起來不方便

 

其實最關鍵的是微信小程序的語音格式是silk,兩家都不能識別silk,需要將silk格式轉為wav或者pcm格式,音頻格式的轉換遇到了麻煩,搞了兩天才算轉換成功,測試發現將語音文件轉為wav識別起來成功率高

看到其他人的博客說是silk其實是base64加密后的webm格式,說是需要先將base64解密,還需要自己寫解密的代碼,參考:http://blog.csdn.net/rjliulei/article/details/77800760

 

自己比較懶,總是想找成熟的解決方案,終於找到一個很棒的方案:

需要安裝FFmpeg和 silk-v3-decoder

FFmpeg找下安裝教程即可

 silk-v3-decoder的安裝參考:https://www.imooc.com/article/21550?block_id=tuijian_wz

再就是轉碼的命令了,參考:http://blog.csdn.net/m0_37730244/article/details/78615427

命令轉碼的時候有個地方看了半天才看懂 silk/decoder  /data/test.silk  /data/1.pcm

編譯 silk-v3-decoder后會在里面生成一個silk的目錄,里面有個decoder程序,這是轉換的關鍵 用它執行音頻格式轉換

測試了好幾個wav和pcm識別的效果,發現還是wav識別率高,我用的是 ffmpeg -y -f s16le -ar 24000 -ac 1 -i  /data/1.pcm  -f wav -ar 16000 -b:a 16 -ac 1  /data/1.wav 

將pcm轉為wav的命令,最后調用百度的識別sdk

下面是識別的接口

# coding=utf-8
from aip import AipSpeech
import os


class ConvertVoice(object):
"""百度語音識別"""

def __init__(self):
super(ConvertVoice, self).__init__()
self.APP_ID = '用的時候需要換成自己申請的內容'
self.API_KEY = '用的時候需要換成自己申請的內容'
        self.SECRET_KEY = '用的時候需要換成自己申請的內容'
 self.client = AipSpeech(self.APP_ID, self.API_KEY, self.SECRET_KEY)

def get_file_content(self, filePath):
'''
讀取文件
:param filePath: 文件的絕對路徑
:return:
'''
try:
with open(filePath, 'rb') as fp:
return fp.read()
except Exception as error_msg:
print(error_msg)
return error_msg

def get_str_from_voice(self, filePath):
'''
識別本地文件
:param filePath: 文件的絕對路徑
:return:
'''
try:
if os.path.exists(filePath):
rt = self.client.asr(self.get_file_content(filePath), 'wav', 16000, {
'lan': 'zh'})
return rt
else:
return {"err_no": 2000, "err_msg": "文件不存在"}
except Exception as error_msg:
print(error_msg)
return error_msg


if __name__ == '__main__':
cv = ConvertVoice()
rt = cv.get_str_from_voice("F:/19.wav")
print(rt)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM