有人在用python開發程序時使用到語音識別相關的東西嗎?

在校大學生自學python,想做個小東西,其中涉及語音識別,求助


調用百度語言識別API的

# -*- coding=utf-8 -*-

import base64
import urllib2
import urllib
import json
import wave

def get_token():
URL = "http://openapi.baidu.com/oauth/2.0/token"
_params = urllib.urlencode({"grant_type": "client_credentials",
"client_id": "yours",#改成你自己的
"client_secret": "yours"})#改成你自己的
_res = urllib2.Request(URL, _params)
_response = urllib2.urlopen(_res)
_data = _response.read()
_data = json.loads(_data)
return _data["access_token"]

def wav_to_text(wav_file):
try:
wav_file = open(wav_file, "rb")
except IOError:
print u"文件錯誤啊,親"
return
wav_file = wave.open(wav_file)
n_frames = wav_file.getnframes()
frame_rate = wav_file.getframerate()
if n_frames != 1 or frame_rate not in (8000, 16000):
print u"不符合格式"
return
audio = wav_file.readframes(n_frames)
seconds = n_frames/frame_rate+1
minute = seconds/60 + 1
for i in range(0, minute):
sub_audio = audio[i*60*frame_rate:(i+1)*60*frame_rate]
base_data = base64.b64encode(sub_audio)
data = {"format": "wav",
"token": get_token(),
"len": len(sub_audio),
"rate": frame_rate,
"speech": base_data,
"cuid": "B8-AC-6F-2D-7A-94",
"channel": 1}
data = json.dumps(data)
res = urllib2.Request("http://vop.baidu.com/server_api",
data,
{"content-type": "application/json"})
response = urllib2.urlopen(res)
res_data = json.loads(response.read())
print res_data["result"][0]

if __name__ == "__main__":
wav_to_text("demo.wav")


我知道的語音識別工具包有HTK和Kaldi,不過它們都不是用Python編寫的。

我上過一門課的大作業是用Python自己實現一個小型語音識別系統。不過,如果你不是專攻這個方向的,而只是想使用現成的語音識別模塊的話,你不會想自己寫的。


MXNET 有一個語音識別的demo,用搞了個Python對Kaldi的wrapper,沒住可以拿來用

dmlc/mxnet


sidekit

pyannote


微軟那個cntk?

或者nltk能么。。。


自己寫有點不現實,當然你想挑戰一下也可以,最基本就是傅里葉變換。然後就是各種第三方的API調用,這個就容易多了,你只要會調用API就行了。


語音庫可以用科大訊飛的,

如果是本地的,可以考慮直接用ctype調用語音庫


推薦閱讀:

如果沒有必要,你會更新你的軟體嗎?
有哪些很「中老年人」的聊天表情和圖片?
社交產品的下一個發展方向是什麼?
在同學群用搶紅包軟體應該嗎?

TAG:Python | 編程 | 微信 | 語音識別 |