树莓派笔记17: 语音机器人

本文介绍了如何使用树莓派、麦克风、音箱和百度语音服务构建语音机器人。通过图灵机器人实现对话,并可选配LED阵列显示屏增强互动。程序使用PyAudio处理音频输入输出,集成百度的语音识别和合成API,以及图灵机器人的REST API进行交互。
摘要由CSDN通过智能技术生成

利用免费的百度语音及合成服务,图灵机器人聊天服务,在加上一点简单的硬件模块,我们就可以用树莓派搭建自己的语音机器人

1 组成模块

  1. 树莓派
  2. 支持3.5mm输入的小音箱
  3. 不到20块钱的小麦克风
  4. 可以同时接入麦克风和音箱的USB声卡
  5. (不是必须) MAX7219 LED点阵屏

程序流程图
在这里插入图片描述

2 音频输入和输出

树莓派3B带有3.5MM音频输出口,所以可以直接接到自己的音箱上,但是没有音频输入接口,所以所以可以买一个可同时支持输入和输出的USB声卡,把麦克风和音箱接上。
在这里插入图片描述

3.5MM输出功能可能需要进入配置页面打开,执行sudo raspi-config命令进入系统配置,在Advanced Options -> Audio中打开3.5MM。

怎么用python程序控制音频输入和输出?可以直接利用PyAudio这个库,教程地址:http://people.csail.mit.edu/hubert/pyaudio/#examples ,教程中给出了很多example,可以看到使用起来是很简单的,它使用流对象来处理输入输出数据,并且支持非阻塞调用

可以用下面的代码来测试麦克风和音箱工作是否正常,这段程序就是接收麦克风的信号同时输出到音箱,如果工作正常就是一个话筒的效果

import pyaudio
import os
import sys
import time

#os.close(sys.stderr.fileno())

WIDTH=2
CHANNELS=2
RATE=44100

p=pyaudio.PyAudio()

def callback(in_data,frame_count,time_info,status):
    return (in_data,pyaudio.paContinue)

stream=p.open(format=p.get_format_from_width(WIDTH),
        channels=CHANNELS,
        rate=RATE,
        input=True,
        output=True,
        stream_callback=callback)

stream.start_stream()

while stream.is_active():
    time.sleep(0.1)

stream.stop_stream()
stream.close()

p.terminate()

这段程序使用非阻塞方法,指定回调函数为callback,我们可以从输入参数in_data中获取从麦克风输入的数据,在return的时候传入的数据则会输出到音箱。

3 百度语音识别和语音合成

百度提供了语音识别和语音合成的API接口,我们只要注册并创建应用就可以调用了。

在官网上创建一个应用,记住分配的AppID, API Key和Secre

  • 6
    点赞
  • 46
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值