700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 基于python语音控制大疆创新EP机器人并进行对话——第二步将录音通过百度AI识别并播放

基于python语音控制大疆创新EP机器人并进行对话——第二步将录音通过百度AI识别并播放

时间:2020-09-23 15:48:49

相关推荐

基于python语音控制大疆创新EP机器人并进行对话——第二步将录音通过百度AI识别并播放

基于python语音控制大疆创新EP机器人并进行对话——第二步将录音通过百度AI识别并播放

说一下上一篇文章的错误

上一篇文章在编程思维上有一点小问题,因为在后面我加上了进行对话,忘记改编程思维了,下面我就将一下我觉得的编程思维吧

电脑录音——通过百度AI识别成文本——将文本信息发送给EP——将文本信息发给图灵机器人——将图灵机器人返回的结果转化成MP3——将MP3播放

讲一下上一篇文章中的代码

流程:采样-》写入文件

import pyaudio #导入pyAudio的源代码文件,我们下面要用到,不用到就不用导入啦import wavedef record(): #定义函数CHUNK = 1024 FORMAT = pyaudio.paInt16 #量化位数CHANNELS = 1 #采样管道数RATE = 16000 #采样率 RECORD_SECONDS = 2WAVE_OUTPUT_FILENAME = "output.wav" #文件保存的名称p = pyaudio.PyAudio() #创建PyAudio的实例对象stream = p.open(format=FORMAT,#调用PyAudio实例对象的open方法创建流Streamchannels=CHANNELS,rate=RATE,input=True,frames_per_buffer=CHUNK)frames = [] #存储所有读取到的数据print('* recording >>>')#打印开始录音for i in range(0, int(RATE / CHUNK * RECORD_SECONDS)): #for循环,控制录音时间data = stream.read(CHUNK) #根据需求,调用Stream的write或者read方法frames.append(data)print('* stop >>>') #打印结束录音stream.close() #调用Stream的close方法,关闭流p.terminate() #调用pyaudio.PyAudio.terminate() 关闭会话wf = wave.open(WAVE_OUTPUT_FILENAME, 'wb') #写入wav文件里面wf.setnchannels(CHANNELS)wf.setsampwidth(p.get_sample_size(FORMAT))wf.setframerate(RATE)wf.writeframes(b''.join(frames))wf.close()record() #运行异常改函数

这就是代码的一个大概讲解,我们不必去记住它的细节怎么样的,我们只用记住它是干嘛的就行了,直接调用

录的音怎么样通过百度AI识别

百度语音是百度云 AI 开放平台提供的支持语音识别和语音合成的服务,注册以后就可以直接访问它的 REST API 了,并且有向普通用户提供免费的调用额度,好像是5000次。

注册成功以后,进入语音服务的控制台创建一个新的应用,记下自己的 AppID、API Key 和 Secret Key,这些是需要写到代码中的。

注册百度AI,并创建运用

在浏览器上搜索百度AI开饭平台,并进入官网。

注册

登录以后找到AI语音技术

创建运用

完成创建并记下自己的 AppID、API Key 和 Secret Key

这样我们就完成创建运用,那么接下来应该怎么样编程呢,这时候我们可以看百度AI平台的技术文档

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()# 识别本地文件client.asr(get_file_content('audio.pcm'), 'pcm', 16000, {'dev_pid': 1537,result_text = result["result"][0]print("you said: " + result_text)return result_text })

识别完之后我们还将识别的文本读变成语音,这时候我们也用到看百度语音(TTS),很多软件都有文本转语音的功能,但是百度语音的4号是好听的小姐姐声音哦。

from aip import AipSpeechAPP_ID = 'Your AppID'API_KEY = 'Your API Key'SECRET_KEY = 'Your Secret Key'client = AipSpeech(APP_ID, API_KEY, SECRET_KEY)def speak(text=""):result = client.synthesis(text, 'zh', 1, {'spd': 4,'vol': 5,'per': 4,})if not isinstance(result, dict):with open('audio.mp3', 'wb') as f:f.write(result)speak("很高兴见到你")

现在已经把文本转成语音了,下面就需要播放MP3了,我用了playsound库,所以我们要安装playsound库,pip install playsound,播放代码如下:

def speak1():playsound("audio.mp3")speak1()

这个时候我们将录音通过百度AI识别并播放的代码都将完了,完整代码

import pyaudio #导入pyAudio的源代码文件,我们下面要用到,不用到就不用导入啦import wavefrom aip import AipSpeechfrom playsound import playsoundAPP_ID = '自己的APP_ID' #新建AiPSpeechAPI_KEY = '自己的API_KEY'SECRET_KEY = '自己的SECRET_KEY'client = AipSpeech(APP_ID, API_KEY, SECRET_KEY)def record(): #定义函数CHUNK = 1024 FORMAT = pyaudio.paInt16 #量化位数CHANNELS = 1 #采样管道数RATE = 16000 #采样率 RECORD_SECONDS = 2WAVE_OUTPUT_FILENAME = "output.wav" #文件保存的名称p = pyaudio.PyAudio() #创建PyAudio的实例对象stream = p.open(format=FORMAT,#调用PyAudio实例对象的open方法创建流Streamchannels=CHANNELS,rate=RATE,input=True,frames_per_buffer=CHUNK)frames = [] #存储所有读取到的数据print('* 开始录音 >>>')#打印开始录音for i in range(0, int(RATE / CHUNK * RECORD_SECONDS)):data = stream.read(CHUNK) #根据需求,调用Stream的write或者read方法frames.append(data)print('* 结束录音 >>>') #打印结束录音stream.close() #调用Stream的close方法,关闭流p.terminate() #调用pyaudio.PyAudio.terminate() 关闭会话wf = wave.open(WAVE_OUTPUT_FILENAME, 'wb') #写入wav文件里面wf.setnchannels(CHANNELS)wf.setsampwidth(p.get_sample_size(FORMAT))wf.setframerate(RATE)wf.writeframes(b''.join(frames))wf.close()def cognitive(): #读取文件def get_file_content(filePath):with open(filePath, 'rb') as fp:return fp.read()result = client.asr(get_file_content('output.wav'), 'wav', 16000, {'dev_pid': 1537, #识别本地文件})result_text = result["result"][0]print("you said: " + result_text)return result_text def speak(text=""):result = client.synthesis(text, 'zh', 1, {'spd': 4,'vol': 5,'per': 4,})if not isinstance(result, dict):with open('audio.mp3', 'wb') as f:f.write(result) def speak1():playsound("audio.mp3")record() #录音模块result = cognitive() #百度识别结果speak(result) #将百度识别结果转化成语音speak1() #朗读百度识别结果

好了。截图就到这里结束啦,大家可以尝试一下。

参考资料

playsound库

百度AI语音识别技术文档

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。