1.基于百度API的普通话识别
1.1语音识别
语音识别,就是将一段语音信号转换成相对应的文本信息,系统主要包含特征提取、声学模型,语言模型以及字典与解码四大部分,此外为了更有效地提取特征往往还需要对所采集到的声音信号进行滤波、分帧等音频数据预处理工作,将需要分析的音频信号从原始信号中合适地提取出来。
一般流程:
1.2百度API调用方法
通过在百度智能开发平台,建立语音技术等应用,会获取相对技术权限功能。
创建完毕后百度会给你一个应用列表,使用这里的AppID,API Key及Secret Key便可以进行API的调用。
import wave
import pyaudio
from aip import AipSpeech
APP_ID = ''
API_KEY = ''
SECRET_KEY = ''
CHUNK = 1024
FORMAT = pyaudio.paInt16 # 16位深
CHANNELS = 1 #1是单声道,2是双声道。
RATE = 16000 # 采样率,调用API一般为8000或16000
#RECORD_SECONDS = 10 # 录制时间10s
def save_wave_file(pa, filepath, data):
wf = wave.open(filepath, 'wb')
wf.setnchannels(CHANNELS)
wf.setsampwidth(pa.get_sample_size(FORMAT))
wf.setframerate(RATE)
wf.writeframes(b"".join(data))
wf.close()
def get_audio(filepath):
#isstart = input("是否开始录音?(0为退出 1为开始)")
while(True):
isstart = input("是否开始录音?(0为退出 1为开始)")
if isstart == "1":
pa = pyaudio.PyAudio()
stream = pa.open(format=FORMAT,
channels=CHANNELS,
rate=RATE,
input=True,
frames_per_buffer=CHUNK)
print("*" * 10, "开始录音:请输入录制的时长(s)")
RECORD_SECONDS = float(input())
frames = []
for i in range(0, int(RATE / CHUNK * RECORD_SECONDS)):
data = stream.read(CHUNK) # 读取chunk个字节 保存到data中
frames.append(data) # 向列表frames中添加数据data
print("*" * 10, "录音结束\n")
stream.stop_stream()
stream.close() # 停止数据流
pa.terminate() # 关闭PyAudio
#写入录音文件
save_wave_file(pa, filepath, frames)
break
elif isstart == "0":
exit()
break
else:
print("无效输入,请重新选择")
get_audio()
break
def get_file_content(filePath):
with open(filePath, 'rb') as fp:
return fp.read()
if __name__ == '__main__':
filepath = 'test.wav'
get_audio(filepath)
print('over!!!')
client = AipSpeech(APP_ID, API_KEY, SECRET_KEY)
result = client.asr(get_file_content('test.wav'), 'wav',16000,{'dev_pid': 1537,})
data=tuple(result['result'])#关键字变量
print(result['result'])