日常前言
項目教程目錄:https://blog.csdn.net/qq_41082014/article/details/86605663
既然我們有了錄音文件,那麼接下來的事便是要交給語音識別了。本章介紹百度和訊飛的語音識別的python調用方法,以及到底誰更好
百度語音識別
from aip import AipSpeech
APP_ID = 'xxxxxxxx'
API_KEY = 'xxxxxxxx'
SECRET_KEY = 'xxxxxxxx'
#init login
client = AipSpeech(APP_ID, API_KEY, SECRET_KEY)
# 讀取文件
def get_file_content(filePath):
with open(filePath, 'rb') as fp:
return fp.read()
text = client.asr(get_file_content(filePath), 'wav', 16000, {'lan': 'zh',})
print(text)
訊飛語音識別
訊飛對自然語言方面處理的口碑應該是國內比較好的了,但是把文件交給他中間需要的處理步驟太多了,這裏就直接先給一個能用的例子好了
import urllib.parse, urllib.request
import time
import json
import hashlib
import base64
url = 'http://api.xfyun.cn/v1/service/v1/iat'
api_key = 'xxxxxxxxxx'
x_appid = 'xxxxxxxxxx'
def shibie(file):
f = open(file, 'rb')
file_content = f.read()
base64_audio = base64.b64encode(file_content)
body = urllib.parse.urlencode({'audio': base64_audio})
param = {"engine_type": "sms16k", "aue": "raw"}
x_time = int(int(round(time.time() * 1000)) / 1000)
x_param = base64.b64encode(json.dumps(param).replace(' ', '').encode('utf-8'))
x_checksum_content = api_key + str(x_time) + str(x_param, 'utf-8')
x_checksum = hashlib.md5(x_checksum_content.encode('utf-8')).hexdigest()
x_header = {'X-Appid': x_appid,
'X-CurTime': x_time,
'X-Param': x_param,
'X-CheckSum': x_checksum}
req = urllib.request.Request(url = url, data = body.encode('utf-8'), headers = x_header, method = 'POST')
result = urllib.request.urlopen(req)
result = result.read().decode('utf-8')
result = json.loads(result)
return result
那麼到底哪一個更好呢?
- 結構:
- 明顯看得出,百度要簡單清晰很多(誰讓訊飛不做pip的庫呢(゚Д゚*)ノ)
- 識別能力:
- 多次實驗中,發現,百度似乎還要更好一些,,,,
- 速度上:
- 不用說,百度這個傢伙肯定是最快的了,相信很多人都知道,什麼不懂,百度一下!百度肯定是要保持速度的,而且大多數的網絡對百度是很開放的,比我我在學校,需要認證上網,但是不認證也可以訪問百度首頁
- 從圖中可以看到,百度的反應速度基本等於瞬間,即使是長段的識別,也毫不遜色,甚至比訊飛更準確些,比如斷句方面。一般來說,超過2s的反應,也就是使用訊飛的時候,人們就會認爲他很low,比如我旁邊的同學…