語音識別介面webAPI-python測試:百度和科大訊飛
概述
目前市場上有很多家的語音識別介面可用,簡單測試都不要錢。國內的BAT和科大訊飛,國外的微軟和谷歌都提供了中文的語音識別介面,既有sdk又有webAPI。我的測試都是在python3環境下進行的。
最終選擇百度和科大訊飛的介面。主要是考慮中文識別應該國內廠商做的更好。
免費試用階段,科大訊飛每天限定500次呼叫。百度則只限制每秒20次,總次數沒限制。
試用下來的感覺就是,科大訊飛的介面更快,斷句什麼的也更好。但是試用次數少是個問題,只能評估玩玩。
科大訊飛語音識別webAPI
使用之前需要先去https://xfyun.cn註冊並建立應用。獲得APPID和APPkey.
程式碼是官網上的,但是那是個python2上的,我改成python3版本了(python3對於引數的編碼格式更嚴格)。
注意:將指令碼中 AUDIO_PATH, API_KEY, APPID, 換成相應的音訊路徑,訊飛開放平臺提供的 apiKey,訊飛開放平臺應用的 appid 即可。
#!/usr/bin/python
# -*- coding: UTF-8 -*-
import urllib.request
import time
import urllib
import json
import hashlib
import base64
from urllib import parse
def main():
f = open("AUDIO_PATH", 'rb')
file_content = f.read()
base64_audio = base64.b64encode(file_content)
body = parse.urlencode({'audio' : base64_audio})
url = 'http://api.xfyun.cn/v1/service/v1/iat'
api_key = 'API_KEY'
param = {"engine_type":"sms16k","aue":"raw"}
x_appid = 'APPID'
json_str = json.dumps(param).replace(' ', '')
print('json_str:{}'.format(json_str))
x_param = base64.b64encode(bytes(json_str, 'ascii' ))
x_time = int(int(round(time.time() * 1000)) / 1000)
x_checksum_str = api_key + str( x_time ) + str(x_param)[2:-1]
print('x_checksum_str:[{}]'.format(x_checksum_str))
x_checksum = hashlib.md5(x_checksum_str.encode(encoding='ascii')).hexdigest()
print('x_checksum:{}'.format(x_checksum))
x_header = {'X-Appid': x_appid,
'X-CurTime': x_time,
'X-Param': x_param,
'X-CheckSum': x_checksum}
start_time = time.time()
req = urllib.request.Request(url, bytes(body, 'ascii'), x_header)
result = urllib.request.urlopen(req)
result = result.read()
print( "used time: {}s".format( round( time.time() - start_time, 2 ) ) )
print('result:'+str(result.decode(encoding='UTF8')))
return
if __name__ == '__main__':
main()
我的一個測試輸出:
json_str:{"engine_type":"sms16k","aue":"raw"}
used time: 0.82s
result:{"code":"0","data":"特別是跨省區電網超計劃用電,不僅損害自己,也損害別人,損害電網,損害國家。","desc":"success","sid":"[email protected]"}
一個注意點
如果沒有把ip放到白名單中,就會返回以下錯誤資訊,錯誤碼是10105
al access|illegal client_ip:xxxxx
在‘控制檯->我的應用’裡把資訊裡的IP加上就行。
百度語音識別webAPI
然後在管理控制檯上建立一個語音識別應用,你會得到AppId\AppKey\SecretKey等資訊,這些需要在呼叫介面的時候用到。
參考官方例子,我的程式碼如下(注意替換自己的APP_ID、API_KEY、SECRET_KEY):
from aip import AipSpeech
import time
APP_ID = 'APP_ID'
API_KEY = 'API_KEY'
SECRET_KEY = 'SECRET_KEY'
client = AipSpeech(APP_ID, API_KEY, SECRET_KEY)
def get_file_content(filePath):
with open(filePath, 'rb') as fp:
return fp.read()
# 識別本地檔案
start_time = time.time()
ret = client.asr(get_file_content('./aideo_files/A2_58.wav'), 'pcm', 16000, {
'dev_pid': 1537,
})
used_time = time.time() - start_time
print( "used time: {}s".format( round( time.time() - start_time, 2 ) ) )
print('ret:{}'.format(ret))
我測試的輸出結果為:
used time: 8.18s
ret:{'corpus_no': '6592465378279780417', 'err_msg': 'success.', 'err_no': 0, 'result':
['特別是跨省區電網超計劃用電,不僅損害自己也損害別人損害電網損害國家,'], 'sn': '148955205071534927957'}
時間上比科大訊飛長了好幾倍,斷句也不是很好。勝在試用次數基本不限。
小結
比較 | 優點 | 缺點 |
---|---|---|
百度 | 試用次數多 | 速度慢,斷句不太好 |
科大訊飛 | 速度快,斷句好 | 試用次數有限 |
今天測試比較簡單,等後面大規模測試了再來補充。
相關推薦
語音識別介面webAPI-python測試:百度和科大訊飛
概述 目前市場上有很多家的語音識別介面可用,簡單測試都不要錢。國內的BAT和科大訊飛,國外的微軟和谷歌都提供了中文的語音識別介面,既有sdk又有webAPI。我的測試都是在python3環境下進行的。 最終選擇百度和科大訊飛的介面。主要是考慮中文識別應該國內
Delphi url 編碼及轉碼及特殊字串替換--百度和騰訊用的就是這個
先介紹一下,Delphi中處理Google的URL編碼解碼,其中就會明白URL編碼轉換的方法的 從delphi的角度看Google(谷歌)URL編碼解碼方式 在網上搜索了一下,似乎沒有什麼關於google的URL編碼解碼的很詳細的資料,因此在這裡寫一下,希望給有用的人提供
iOS:百度長語音識別具體的封裝:識別、播放、進度刷新
stat app span nsdata cst 放音 datawit har resp 一、介紹 以前做過訊飛語音識別,比較簡單,識別率很不錯,但是它的識別時間是有限制的,最多60秒。可是有的時候我們需要更長的識別時間,例如朗誦古詩等功能。當然訊飛語音也是可以通過曲線救
python調用百度語音(語音識別-鬥地主語音記牌器)
receive idt 本地文件 file post 最終 callback import pri 一、概述 本篇簡要介紹百度語音語音識別的基本使用(其實是鬥地主時想弄個記牌器又沒money,抓包什麽的又不會,只好搞語音識別的了) 二、創建應用 打開百度語
基於python+opencv+pyqt5+百度AI實現的人臉識別、語音播報、語音合成、模擬簽到系統(1)
人臉識別效果圖 簡單介紹 使用python3+寫的,使用face_recognition(python開源的人臉識別庫)進行人臉識別 ,使用opencv2進行開啟顯示攝像頭圖片等,使用pyqt5是ui介面,使用百度AI中的百度語音合成實現語音播報和語音合成,
百度語音識別api呼叫 python
最近在處理語音檢索相關的事。 其中用到語音識別,呼叫的是訊飛與百度的api,前者使用js是實現,後者用python3實現(因為自己使用python) 環境: python3.5 centos 7 流程 整個百度語音識別rest api 使用分
【Python】呼叫百度REST API實現語音識別
目前,語音識別,即將語音內容轉換為文字的技術已經比較成熟,遙想當時錘子釋出會上展示的訊飛輸入法語音識別,著實讓訊飛火了一把。由於此類語音識別需要採集大量的樣本,才能達到一定的準確度,個人很難從零開
FreeSWITCH 語音識別 ASR 介面介紹 科大訊飛 百度 阿里雲 等介面實現
FreeSWITCH 語音識別 ASR 模組 最近很多人都對FreeSWITCH和ASR對接比較感謝興趣,我之前已經做了一個商業模組(商業模組請點選這裡http://www.dingdingtong.
python調用百度語音識別接口實時識別
bsp 鼠標 -m pyw lan 語音識別 .com 實時 代碼 1、本文直接上幹貨 奉獻代碼:https://github.com/wuzaipei/audio_discern/tree/master/%E8%AF%AD%E9%9F%B3%E8%AF%86%E5%
python爬取百度翻譯返回:{'error': 997, 'from': 'zh', 'to': 'en', 'query 問題
escape result words fan use rip odin 解決 base 解決辦法: 修改url為手機版的地址:http://fanyi.baidu.com/basetrans User-Agent也用手機版的 測試代碼: # -*- coding: utf
Python爬蟲-利用百度地圖API介面爬取資料並儲存至MySQL資料庫
首先,我這裡有一份相關城市以及該城市的公園數量的txt檔案: 其次,利用百度地圖API提供的介面爬取城市公園的相關資訊。 所利用的API介面有兩個: 1、http://api.map.baidu.com/place/v2/search?q=公園&
科大訊飛和百度語音平臺語音識別Java呼叫記錄
1、科大訊飛平臺:http://www.xfyun.cn/doccenter/java 註冊並建立應用,下載SDK,選擇語音聽寫+Java+建立的應用(APPID); 未提交稽核的應用,服務量會有500次/日的限制,開發完成後提交稽核解除限制;
C++語音識別介面快速入門(Microsoft Speech SDK)——文字轉語音
C++語音識別介面快速入門(Microsoft Speech SDK) 尤其注意其中的寬字串轉化 #include <iostream> #include <sapi.h> //匯入語音標頭檔案 #include <string
人臉識別系列(七):百度的人臉識別
網路結構: 輸入的是對齊好了的人臉影象,將人臉影象通過面部標記點切分為多個相互之間有重疊部分的Patch,分別輸入相同結構的網路,每個網路都在不同的GPU上訓練。 網路結構包含9個卷積層,某些卷積層的後面有池化層,標準化層,論文中與圖中都沒有詳細
google 語音識別介面
請求方法 public static String postFileSend(String reqUrl, String[][] httpHeader, String filePath, String encode) throws IOException { if (StringUtils.isE
科大訊飛語音無限制錄音、識別功能的實現:Android studio(一)
最近想要做一款語音聽寫APP,在網上搜索關於如何使用科大訊飛語音的Demo少之又少,又或者是隻是單純的按照文件來實現簡單的語音聽寫,遠遠不能滿足需求,看了幾天的文件和自己搜尋的一些資料,還有這幾天中遇到的一些問題,覺得有必要做一個筆記,能給初學者一些
unity3d:百度語音線上語音轉文字,文字轉語音,跨平臺
轉自洪流學堂 語音轉文字 1.開啟麥克風記錄 _clipRecord = Microphone.Start(null, false, 30, 16000); 2.將Unity的AudioClip資料轉化為PCM格式16bit資料 /// <s
python requests庫網頁爬取小實例:百度/360搜索關鍵詞提交
ext aid col text () status exc print 爬取 百度/360搜索關鍵詞提交全代碼: #百度/360搜索關鍵詞提交import requestskeyword=‘Python‘try: #百度關鍵字 # kv={‘w
前端性能分析:分析百度和sogou
後臺 性能 con 圖片 work char sogo wait 部分 先用httpwatch錄制這兩個網站:www.baidu.com www.sogou.com 由上圖可以看到: 百度用時0.278s 發送7831B 接收36620B 13個請求 搜狗
python爬取百度搜索圖片
知乎 需要 with 異常 mage 不足 request height adr 在之前通過爬取貼吧圖片有了一點經驗,先根據之前經驗再次爬取百度搜索界面圖片 廢話不說,先上代碼 #!/usr/bin/env python # -*- coding: utf-8 -*- #