简要说明
最近两天需要做一个python的小程序, 就是实现人与智能机器人(智能对话接口)的对话功能,目前刚刚测试了一下可以实现, 就是能够实现个人与机器的智能对话(语音交流)。
总体的思路
大家可以设想一下, 如果要实现人与机器的智能对话, 肯定要有以下几个步骤:
-
计算机接收用户的语音输入
-
将用户输入的语音输入转化为文本信息
-
调用智能对话接口, 发送请求文本信息, 获取接口返回的智能回答文本信息
-
将回答文本信息转化为语音格式输出
这里可以安装很多现成的库函数, 辅助我们系统的实现。
需要准备的环境
以下是需要安装的一些python依赖包
-
pip install pyaudio 安装pyaudio依赖包, 用于录音、生成wav文件
-
pip install baidu-aip 安装百度AI的sdk, 调用语音技术接口将音频识别为文本数据返回
-
pip install pyttsx3 安装pyttsx3依赖包, 将文本信息以音频的格式播放出来
接下来我会逐步实现以上每个功能,最后再组合起来。
接收用户的语音输入,并将其存为音频文件
import time
import wave
from pyaudio import PyAudio, paInt16
framerate = 16000 # 采样率
num_samples = 2000 # 采样点
channels = 1 # 声道
sampwidth = 2 # 采样宽度2bytes
FILEPATH = '../voices/myvoices.wav' #该文件目录要存在
#用于接收用户的语音输入, 并生成wav音频文件(wav、pcm、mp3的区别可详情百度)
class Speak():
#将音频数据保存到wav文件之中
def save_wave_file(self, filepath, data):
wf = wave.open(filepath, 'wb')
wf.setnchannels(channels)
wf.setsampwidth(sampwidth)
wf.setframerate(framerate)
wf.writeframes(b''.join(data))
wf.close()