0 環境
WIn Xp,Python2.7,另外網絡正常即可
1 註冊用戶
我已經註冊過了,百度雲盤的賬號也可以用。
2 創建一個應用
點擊創建應用
任意填寫應用名稱和應用描述。
得到這裏的AppID、API_KEY和SECRET_KEY。在以下的小程序中需要用到。
3 pip安裝SDK
windows下在cmd中輸入:
python -m pip install baidu-aip
3 語音合成
百度語音的新手指南就是語音合成。初次體驗還好。
新建一個main.py,添加以下代碼。注意的是,API_KEY和SECRET_KEY需要改爲自己的。這裏API_KEY是我的KEY,SECRET_KEY我不能透露,讀者需要修改爲自己的SECRET_KEY。
# coding=utf-8
import sys
import json
# 保證兼容python2以及python3
IS_PY3 = sys.version_info.major == 3
if IS_PY3:
from urllib.request import urlopen
from urllib.request import Request
from urllib.error import URLError
from urllib.parse import urlencode
from urllib.parse import quote_plus
else:
import urllib2
from urllib import quote_plus
from urllib2 import urlopen
from urllib2 import Request
from urllib2 import URLError
from urllib import urlencode
# 替換你的 API_KEY
API_KEY = 'c0f0LBT3Bz9eulv8efGziCZH'
# 替換你的 SECRET_KEY
SECRET_KEY = '******'
# 大姚的訂單信息內容文本
TEXT = "三分鐘前,由北京市順義區二經路與二緯路交匯處北側,北京首都國際機場T3航站樓 去往 東城區北三環東路36號喜來登大酒店(北京金隅店)"
TTS_URL = 'http://tsn.baidu.com/text2audio'
""" TOKEN start """
TOKEN_URL = 'http://openapi.baidu.com/oauth/2.0/token'
"""
獲取token
"""
def fetch_token():
params = {'grant_type': 'client_credentials',
'client_id': API_KEY,
'client_secret': SECRET_KEY}
post_data = urlencode(params)
if (IS_PY3):
post_data = post_data.encode('utf-8')
req = Request(TOKEN_URL, post_data)
try:
f = urlopen(req, timeout=5)
result_str = f.read()
except URLError as err:
print('token http response http code : ' + str(err.code))
result_str = err.read()
if (IS_PY3):
result_str = result_str.decode()
result = json.loads(result_str)
if ('access_token' in result.keys() and 'scope' in result.keys()):
if not 'audio_tts_post' in result['scope'].split(' '):
print ('please ensure has check the tts ability')
exit()
return result['access_token']
else:
print ('please overwrite the correct API_KEY and SECRET_KEY')
exit()
""" TOKEN end """
if __name__ == '__main__':
token = fetch_token()
tex = quote_plus(TEXT) # 此處TEXT需要兩次urlencode
params = {'tok': token, 'tex': tex, 'cuid': "quickstart",
'lan': 'zh', 'ctp': 1} # lan ctp 固定參數
data = urlencode(params)
req = Request(TTS_URL, data.encode('utf-8'))
has_error = False
try:
f = urlopen(req)
result_str = f.read()
headers = dict((name.lower(), value) for name, value in f.headers.items())
has_error = ('content-type' not in headers.keys() or headers['content-type'].find('audio/') < 0)
except URLError as err:
print('http response http code : ' + str(err.code))
result_str = err.read()
has_error = True
save_file = "error.txt" if has_error else u'大姚的訂單信息.mp3'
with open(save_file, 'wb') as of:
of.write(result_str)
if has_error:
if (IS_PY3):
result_str = str(result_str, 'utf-8')
print("tts api error:" + result_str)
print("file saved as : " + save_file)
運行完成後會在本文件的同一個目錄內生成一個音頻文件,名爲《大姚的訂單信息.mp3》。
4 語音識別
python2.7安裝完成並配置好路徑後,在命令行輸入
python -m pip install baidu-aip
新建一個main1.py,添加以下代碼。跟上面類似,API_KEY和SECRET_KEY需要改爲自己的。這裏API_KEY是我的KEY。讀者需要修改爲自己的API_KEY和SECRET_KEY。
# coding=utf-8
from aip import AipSpeech
""" 你的 APPID AK SK """
APP_ID = '16125607'
API_KEY = 'c0f0LBT3Bz9eulv8efGziCZH'
SECRET_KEY = '******'
client = AipSpeech(APP_ID, API_KEY, SECRET_KEY)
# 讀取文件
def get_file_content(filePath):
with open(filePath, 'rb') as fp:
return fp.read()
# 識別本地文件
result=client.asr(get_file_content('16k.pcm'), 'pcm', 16000, {
'dev_pid': 1536,
})
print str(result).decode('unicode_escape')
由於我並沒有錄製音頻,音頻樣本在這裏下載:
http://speech-doc.gz.bcebos.com/rest-api-asr/public_audio/16k.pcm
運行結果:
參考資料:
1 QuickStart語音合成:http://ai.baidu.com/docs#/QuickStart-TTS/top
2 語音識別PythonSDK:http://ai.baidu.com/docs#/ASR-Online-Python-SDK/top