python调用百度语音(语音识别-斗地主语音记牌器)

1、概述

本篇简要介绍百度语音语音识别的基本使用(实际上是斗地主时想弄个记牌器又没money,抓包什么的又不会,只好搞语音识别的了)python

 

2、建立应用

 

打开百度语音官网产品与使用->语音识别->当即使用->建立应用app

出现以下页面url

依照提示依次填写,最终结果spa

(ps:我就想弄个记牌的,就起了个计数器的名)code

点右方的 ‘查看key’ 记下App ID,API Key,Secret Key。接下来要用到orm

 

 

须要安装模块 pip install baidu-aip pip install pyaudio

 

语音识别代码blog

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录音代码ip

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()

 

效果以下图:文档

 

帮助文档:get

百度语音帮助文档or手册

 

 

 

 

3、后记

本代码未彻底实现,有兴趣可自行整理,玩斗地主的时候声音可能要大点,由于识别有时候会报3001错误,音频质量过差,不过被打可别找我

相关文章
相关标签/搜索