zoukankan      html  css  js  c++  java
  • 用树莓派实现会说话的汤姆猫

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

    测试设备:

    树莓派3B+

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

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

    1、ReSpeaker硬件安装

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

    2、ReSpeaker驱动安装

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

    sudo apt-get update
    sudo apt-get upgrade
    sudo apt-get install git

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

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

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

    cd seeed-voicecard
    sudo ./install.sh
    reboot

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

    复制代码
    pi@raspberrypi:~ $ aplay -l
    **** List of PLAYBACK Hardware Devices ****
    card 0: ALSA [bcm2835 ALSA], device 0: bcm2835 ALSA [bcm2835 ALSA]
      Subdevices: 7/7
      Subdevice #0: subdevice #0
      Subdevice #1: subdevice #1
      Subdevice #2: subdevice #2
      Subdevice #3: subdevice #3
      Subdevice #4: subdevice #4
      Subdevice #5: subdevice #5
      Subdevice #6: subdevice #6
    card 0: ALSA [bcm2835 ALSA], device 1: bcm2835 ALSA [bcm2835 IEC958/HDMI]
      Subdevices: 1/1
      Subdevice #0: subdevice #0
    card 1: seeed2micvoicec [seeed-2mic-voicecard], device 0: bcm2835-i2s-wm8960-hifi wm8960-hifi-0 []
      Subdevices: 1/1
      Subdevice #0: subdevice #0
    pi@raspberrypi:~ $ arecord -l
    **** List of CAPTURE Hardware Devices ****
    card 1: seeed2micvoicec [seeed-2mic-voicecard], device 0: bcm2835-i2s-wm8960-hifi wm8960-hifi-0 []
      Subdevices: 1/1
      Subdevice #0: subdevice #0
    复制代码

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

    3、ReSpeaker驱动安装问题

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

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

    Error! echo
    Your kernel headers for 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 install spidev
    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
    pip3 install pyaudio

    6、安装SoundTouch

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

    在Windows上可以直接下载:https://www.surina.net/soundtouch/download.html

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

    复制代码
    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
    ./configure
    make
    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/pi
    mkdir tomcat
    cd tomcat

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

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

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

    chmod +x ./tomcat.py
    ./tomcat.py

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

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

    您的资助是我最大的动力!
    金额随意,欢迎来赏!
    款后有任何问题请给我留言。

    如果,您认为阅读这篇博客让您有些收获,不妨点击一下右下角的推荐按钮。
    如果,您希望更容易地发现我的新博客,不妨点击一下绿色通道的关注我。(●'◡'●)

    如果对你有所帮助,赞助一杯咖啡!打             付款后有任何问题请给我留言!!!

    因为,我的写作热情也离不开您的肯定与支持,感谢您的阅读,我是【Jack_孟】!

  • 相关阅读:
    easyExcel入门
    UML-从需求到设计--迭代进化
    UML-操作契约总结
    102. Binary Tree Level Order Traversal
    98. Validate Binary Search Tree
    95. Unique Binary Search Trees II
    96. Unique Binary Search Trees
    94. Binary Tree Inorder Traversal
    84. Largest Rectangle in Histogram
    92. Reverse Linked List II
  • 原文地址:https://www.cnblogs.com/mq0036/p/15666032.html
Copyright © 2011-2022 走看看