会说话的汤姆猫很多人都玩过,对着它说话,它就会用猫的音调重复你说的话。这篇文章就是介绍如何使用树莓派来实现这个功能。

测试设备:

树莓派3B+

ReSpeaker 2-Mics Pi HAT(USB的麦克风应该也可以)

耳机/音箱(需要带插头的)

1、ReSpeaker硬件安装

ReSpeaker是直接扣在树莓派上的,将树莓派的针脚全部插入到ReSpeaker中。

2、ReSpeaker驱动安装

通过SSH连接到树莓派后,首先更新包源,然后安装git,下一步会使用git下载代码:

sudo apt-get updatesudo apt-get upgradesudo apt-get install git

从github获取麦克风驱动源代码:

git clone https://github.com/respeaker/seeed-voicecard.git

进入源代码目录,安装驱动:

cd seeed-voicecardsudo ./install.shreboot

安装成功后需要重启,然后分别执行aplay -l和arecord -l列出所有的声音播放设备和声音录制设备:

pi@raspberrypi:~ $ aplay -l**** List of PLAYBACK Hardware Devices ****card0: ALSA [bcm2835 ALSA], device 0: bcm2835 ALSA [bcm2835 ALSA]

Subdevices:7/7Subdevice #0: subdevice #0Subdevice #1: subdevice #1Subdevice #2: subdevice #2Subdevice #3: subdevice #3Subdevice #4: subdevice #4Subdevice #5: subdevice #5Subdevice #6: subdevice #6card0: ALSA [bcm2835 ALSA], device 1: bcm2835 ALSA [bcm2835 IEC958/HDMI]

Subdevices:1/1Subdevice #0: subdevice #0card1: seeed2micvoicec [seeed-2mic-voicecard], device 0: bcm2835-i2s-wm8960-hifi wm8960-hifi-0[]

Subdevices:1/1Subdevice #0: subdevice #0pi@raspberrypi:~ $ arecord -l**** List of CAPTURE Hardware Devices ****card1: seeed2micvoicec [seeed-2mic-voicecard], device 0: bcm2835-i2s-wm8960-hifi wm8960-hifi-0[]

Subdevices:1/1Subdevice #0: subdevice #0

如果都看到了card 1: seeed2micvoicec,则说明安装成功。

3、ReSpeaker驱动安装问题

如果安装成功请跳过这一步。

我这里第一次安装没有成功,报了一个错误:

Error! echoYour kernel headersfor kernel 4.14.50-v7+cannot be found at/lib/modules/4.14.50-v7+/build or /lib/modules/4.14.50-v7+/source.

大概意思是说找不到linux内核的头文件,这个去目录下找确实没有,可能是由于官方镜像升级内核时遗漏了些东西,最终按照这篇文章解决了:https://github.com/respeaker/seeed-voicecard/issues/83

大概步骤是:

(1)升级系统内核(如果没安装rpi-update,则需要先安装):

sudo rpi-update

安装成功后重启。

(2)更新linux headers(如果没安装rpi-source,则需要先安装):

sudo rpi-source --skip-gcc

(3)删除老版本的linux headers:

删除/lib/modules/文件夹下的老版本,比如我这里安装的最新版本是: 4.14.54-v7+,把非4.14.54开头的文件夹删掉就行了。

(4)重新安装驱动:

sudo ./install.sh

安装成功后重启,再执行aplay -l和aarecord -l确认是否安装成功。

4、测试ReSpeaker

执行录音和播放命令:

arecord -f cd -Dhw:1 | aplay -Dhw:1

将扬声器的插头插入ReSpeaker的播放器接口。

现在说话,耳机中应该能够听到重复的声音。

ReSpeaker上还支持APA102 LED,可以根据接收到的声音有闪灯的效果。

这里用到了pip,这是python的一个包安装工具,需要先安装:

wget https://bootstrap.pypa.io/get-pip.py

python get-pip.py

pip-V  #查看pip版本

然后安装运行:

sudo pip installspidev

git clone https://github.com/respeaker/mic_hat.git

cd mic_hat

python pixels.py

现在说话的时候等应该会闪。

5、安装PyAudio

虽然aplay和arecord可以实现播放和录音的功能,但是如果要实时检测声音的话需要用PyAudio(可能也有别的库,这里选一个常用的)。

因为我这里用了python3,所以需要python3版本的PyAudio:

sudo apt-get install portaudio19-dev python-all-dev python3-all-dev

pip3install pyaudio

6、安装SoundTouch

这个程序可以对音频进行一些处理,我们这里用来做变声。

在树莓派上需要源代码编译安装这个程序:

sudo wget https://gitlab.com/soundtouch/soundtouch/-/archive/soundtouch-2.0.0/soundtouch-soundtouch-2.0.0.tar.gz

sudo tar -xvf soundtouch-soundtouch-2.0.0.tar.gz

cd soundtouch-soundtouch-2.0.0

sudo apt-get install automake autoconf libtool build-essential

./bootstrap

./configuremake

make install

安装之后会在/usr/local/lib中生成类库文件,但是这个目录下的文件不能自动发现,建议将这个目录增加到/etc/ld.so.conf中:

include ld.so.conf.d/*.conf

/usr/local/lib #增加的行

然后运行 ldconfig 加载配置。

7、运行汤姆猫程序

这是一个用python3写的程序,先安装几个依赖库:

sudo pip3 install numpy

然后在/home/pi下创建一个目录tomcat:

cd /home/pimkdirtomcat

cd tomcat

然后创建 tomcat.py,这个是会说话的汤姆猫的主程序。其中大概的流程是:

持续监控麦克风声音,如果达到某个阈值就开始录制声音,如果声音低于某个阈值就结束录音,然后保存声音,然后变声,然后播放;播放完毕后,继续监控麦克风声音。

现在上传这个文件到tomcat目录中就可以运行了。

chmod +x ./tomcat.py

./tomcat.py

现在说句话试试,你应该能够听到汤姆猫美妙的回声了(记得连上耳机或音箱哦)。

原文出处:https://www.cnblogs.com/bossma/p/raspberrypi-implement-a-talking-tom-cat.html

汤姆猫代码python_用树莓派实现会说话的汤姆猫相关推荐

  1. OC:不会说话的汤姆猫(2014年12月)未添加音频

    代码下载地址:http://download.csdn.net/detail/ytuzhangziyao/8313977 1.第一种方法 /* 不会说话的汤姆猫 1.图片名放在button的title ...

  2. 【成长记录】iOS小程序-不会说话的汤姆猫

    做一个不会说话的汤姆猫,原理其实很简单,只是把连续的帧动画连续起来播放,但是在Xcode中实现起来很简单,不像是安卓那么复杂,只是Xcode中的方法封装的很实用很简单. 先看看,慢慢说起来~~~ 其实 ...

  3. 用c语言描述普里姆算法和克鲁斯卡尔算法,克鲁斯卡尔算法+普里姆算法 详解

    克鲁斯卡尔算法: [1]克鲁斯卡尔算法 普里姆算法是以某顶点为起点,逐步找各顶点上最小权值的边来构建最小生成树. 克鲁斯卡尔算法是直接以边为目标去构建. 因为权值是在边上,直接去找最小权值的边来构建生 ...

  4. tomcat出现5个using_当猫咪出现这5个迹象,主人就要给猫咪换猫粮了

    养宠的朋友们你们知道吗?猫咪最好是要定期换粮,这样才有助于猫咪营养平衡,并且避免猫咪对单一食物感到厌烦哦! 但是应该多久给猫咪换一次粮呢? 如果你家猫咪出现这5个迹象时,那就是提醒你需要更换猫粮了! ...

  5. 猫咪藏在哪个房间python作业_猫咪生气躲进房间,众人找到后,猫咪一脸疑问:听说你们在找我...

    以前,养猫的人不多,而且养猫的方式也不一样,人们每天忙得都顾不上和猫玩耍,观察它们.所以就说猫咪养不熟,高冷什么的,这就是因为不了解所以产生的误解. 如今,养猫的人越来越多,而且人们的空闲时间也多了, ...

  6. 光猫可以直接接交换机吗 交换机能直接连光猫吗

    交换机能直接连光猫吗.先连光猫好还是交换机,先接哪个,根据你的需要接.先后次序改变,功能与性能略有区别.一般是先接路由器,端口不够,再接交换机或集线器. 如果通了几路IPTV,则要先接交换机,后接路由 ...

  7. 猫的计算机相关的网络语言,辟谣:猫咪的语言是喵?教你读懂“猫言猫语”,让你明白猫的内心...

    "我们一起学猫叫,一起喵喵喵~"歌词里唱的很动听,可是养过猫的主子们应该会很难引起共鸣,毕竟在家也没真的听主子们喵过多少次,兽医小明在这里辟个谣哦,猫咪的叫声可不只是喵喵叫. 猫咪 ...

  8. 我家一只1岁大黑白相间的中华田园猫丢了,你能帮我写一则寻猫启事吗?我家住在一楼,小猫的尾巴尖缺失了一节...

    当然可以帮您写一则寻猫启事.以下是一则可能的范例: 寻猫启事 我家一只1岁大的中华田园猫走失了,非常担心它的安危.小猫身上黑白相间,尾巴尖缺失了一节,非常容易辨认.我们家住在一楼,希望附近的好心人能够 ...

  9. 3小时越洋电话,以太猫创始人Benny Giang首次向中国媒体全面透露以太猫的那些事(含独家原型手稿) | 人物志...

    一只猫把区块链游戏推上巅峰,在链圈路人皆知.一只只独一无二的小猫,凭借可爱.蠢萌的造型,一次次的刷新着成交的记录.在国内,大小公司布局区块链,养宠成为了「上链」的第一步,十二生肖都不够用了. 作为区块 ...

  10. 树莓派退出python的代码_Python实现树莓派WiFi断线自动重连的实例代码

    实现 WiFi 断线自动重连.原理是用 Python 监测网络是否断线,如果断线则重启网络服务. 1.Python 代码 autowifi.py,放在 /home/pi 目录下: #!/usr/bin ...

最新文章

  1. 零基础学Python(第九章 循环控制【break】与【continue】)
  2. linux live cd ubuntu,在Windows 7上体验Ubuntu Live CD
  3. android是语言吗,android – 内容描述应该是多种语言吗?
  4. Mapreduce的排序、全排序以及二次排序
  5. 字节跳动暑期日常实习前端面试
  6. [Wireshark]_002_玩转数据包
  7. java学生管理系统项目实训报告
  8. liunx版pgadmin3 source code安装
  9. 修改AspNetPager的CustomInfoHTML,添加自定义样式
  10. no output folder解决方案
  11. 哔哩哔哩视频下载神器
  12. 模拟将本地文件上传至外服务器
  13. C技能树:运算符优先级与求值顺序
  14. python画笑脸图案-如何用Python画滑稽笑脸!
  15. [位压] 高精度加法
  16. Larry wall - Perl之父
  17. 【转载】用cx_Freeze把Python代码打包成单个独立的exe可执行文件
  18. 防止网站被恶意镜像或反向代理方法
  19. go每日新闻--2021-01-03
  20. 管易云·奇门和金蝶云星空接口打通对接实战

热门文章

  1. 【SequoiaDB 学习笔记】巨杉分布式数据库初接触
  2. 职场新人如何快速赚到自己的第一桶金?
  3. UVC Extension Unit 相关资料整理
  4. python爬取酷狗音乐的mv地址_python爬取酷狗音乐排行榜
  5. 拒绝iap cracker
  6. 学一点Wi-Fi:WEP
  7. 407. 接雨水 II【我亦无他唯手熟尔】
  8. Kteer软件 创建.ktr文件
  9. 五大主流浏览器和内核
  10. #微信公众号互联登录-01#