python調用百度語音(語音識別-斗地主語音記牌器)


一、概述

本篇簡要介紹百度語音語音識別的基本使用(其實是斗地主時想弄個記牌器又沒money,抓包什么的又不會,只好搞語音識別的了)

 

二、創建應用

 

打開百度語音官網產品與使用->語音識別->立即使用->創建應用

出現如下頁面

依照提示依次填寫,最終結果

(ps:我就想弄個記牌的,就起了個計數器的名)

點右方的 ‘查看key’ 記下App ID,API Key,Secret Key。接下來要用到

 

 

需要安裝模塊

pip install baidu-aip
pip install pyaudio

 

語音識別代碼

from aip import AipSpeech
""" 你的 APPID AK SK """
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()
# 識別本地文件
li=client.asr(get_file_content('01.pcm'), 'pcm', 8000, {
    'lan': 'zh',
})

print(li)
# 從URL獲取文件識別
# client.asr('', 'pcm', 16000, {
#     'url': 'http://121.40.195.233/res/16k_test.pcm',
#     'callback': 'http://xxx.com/receive',
# })

python錄音代碼

import wave
from pyaudio import PyAudio,paInt16

framerate=8000
NUM_SAMPLES=2000
channels=1
sampwidth=2
TIME=2
def save_wave_file(filename,data):
    '''save the date to the wavfile'''
    wf=wave.open(filename,'wb')
    wf.setnchannels(channels)
    wf.setsampwidth(sampwidth)
    wf.setframerate(framerate)
    wf.writeframes(b"".join(data))
    wf.close()

def my_record():
    pa=PyAudio()
    stream=pa.open(format = paInt16,channels=1,
                   rate=framerate,input=True,
                   frames_per_buffer=NUM_SAMPLES)
    my_buf=[]
    count=0
    while count<TIME*5:#控制錄音時間
        string_audio_data = stream.read(NUM_SAMPLES)
        my_buf.append(string_audio_data)
        count+=1
        print('.')
    save_wave_file('01.pcm',my_buf)
    stream.close()

chunk=2014
def play():
    wf=wave.open(r"01.pcm",'rb')
    p=PyAudio()
    stream=p.open(format=p.get_format_from_width(wf.getsampwidth()),channels=
    wf.getnchannels(),rate=wf.getframerate(),output=True)
    while True:
        data=wf.readframes(chunk)
        if data=="":break
        stream.write(data)
    stream.close()
    p.terminate()

if __name__ == '__main__':
    my_record()
    print('Over!')
    play()

 

效果如下圖:

 

幫助文檔:

百度語音幫助文檔or手冊

 

 

 

 

三、后記

本代碼未完全實現,有興趣可自行整理,玩斗地主的時候聲音可能要大點,因為識別有時候會報3001錯誤,音頻質量過差,不過被打可別找我


免責聲明!

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



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