百度API---语音识别及语音合成

一.百度API–语音识别

首先打开百度的AI开放平台,然后点短语音识别在这里插入图片描述

进入后的页面是这样的,点击立即使用在这里插入图片描述

然后就直接点创建应用就可以了
在这里插入图片描述

进入后是这个页面,按自己的要求填写就好了,然后就立即创建
在这里插入图片描述

创建成功之后在应用列表里就可以看到这些东西,其中的AppID、API Key、Secret Key这三个数据是在调用API的时候要用到的。在这里插入图片描述
之后在技术文档里就能看到相关的相关的调用方式及一些参数等的说明。
下面就是直接复制文档中的代码,直接用就可以了。

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

# 识别本地文件
print(client.asr(get_file_content('audio.pcm'), 'pcm', 16000, {
    'dev_pid': 1537,
}))

这里需要注意,支持的语音识别格式要求,不符合要求的话,会返回错误信息或识别不准确。在这里插入图片描述
刚开始直接用Win10自带的录音机录的发现不太行,就改用Pyaudio录制,下面是声音录制的代码。

import wave
from pyaudio import PyAudio, paInt16
 
 
CHUNK = 1024 # wav文件是由若干个CHUNK组成的,CHUNK我们就理解成数据包或者数据片段。
FORMAT = paInt16 # 表示我们使用量化位数 16位来进行录音
CHANNELS = 1 #代表的是声道,1是单声道,2是双声道。
RATE = 16000 # 采样率 一秒内对声音信号的采集次数,常用的有8kHz, 16kHz, 32kHz, 48kHz,
RECORD_SECONDS = 10 # 录制时间这里设定了10秒
 
 
def save_wave_file(pa, filename, data):
    wf = wave.open(filename, 'wb')
    wf.setnchannels(CHANNELS)
    # wf.setsampwidth(sampwidth)
    wf.setsampwidth(pa.get_sample_size(FORMAT))
    wf.setframerate(RATE)
    wf.writeframes(b"".join(data))
    wf.close()
 
 
def get_audio(filepath):
    isstart = str(input("是否开始录音? (是/否)")) 
    if isstart == str("是"):
        pa = PyAudio()
        stream = pa.open(format=FORMAT,
                         channels=CHANNELS,
                         rate=RATE,
                         input=True,
                         frames_per_buffer=CHUNK)
        print("*" * 10, "开始录音:请在10秒内输入语音")
        frames = []  # 定义一个列表
        for i in range(0, int(RATE / CHUNK * RECORD_SECONDS)):  # 循环,采样率 44100 / 1024 * 5
            data = stream.read(CHUNK)  # 读取chunk个字节 保存到data中
            frames.append(data)  # 向列表frames中添加数据data
        print(frames)
        print("*" * 10, "录音结束\n")
 
        stream.stop_stream()
        stream.close()  # 关闭
        pa.terminate()  # 终结
 
        save_wave_file(pa, filepath, frames)
    elif isstart == str("否"):
        exit()
    else:
        print("无效输入,请重新选择")
        get_audio(filepath)
 
 
def play():
	"""播放录制的音频"""
    wf = wave.open(r"01.wav", 'rb')
    p = PyAudio()
    steam = p.open(format=p.get_format_from_width(wf.getsampwidth()), channels=
    wf.getnchannels(), rate=wf.getframerate(), output=True)
 
    # 读数据
    data = wf.readframes(CHUNK)
 
    # 播放流
    while len(data) > 0:
        stream.write(data)
        data = wf.readframes(CHUNK)
 
    stream.stop_stream() # 暂停播放/录制
    stream.close() # 终止播放
 
    p.terminate() # 终止portaudio会话
 
 
if __name__ == '__main__':
    filepath = '01.wav'
    get_audio(filepath)
    print('Over!')
    #play()

测试了几个之后感觉,嘿,真不错诶。。。

二.语音合成

调用方式和语音识别的差不多,以下为文档中的示例代码:

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)
result  = client.synthesis('你好百度', 'zh', 1, {
    'vol': 5,
})

# 识别正确返回语音二进制 错误则返回dict 参照下面错误码
if not isinstance(result, dict):
    with open('audio.mp3', 'wb') as f:
        f.write(result)

可以自己修改不同的参数来合成不同的效果在这里插入图片描述
根据下载的Python的SDK里可以看到在调用函数时的使用方式:
在这里插入图片描述

  • 5
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值