精华内容
下载资源
问答
  • 最近研究了下讯飞的语音识别、文字转...实验环境硬件:树莓派3b一台、usb声卡一个、麦克风一个操作系统:Raspbian with Desktop3.5mm音频输出当时买树莓派的时候并没有购买hdmi的转接线,因此音频信号只能从3.5mm...

    最近研究了下讯飞的语音识别、文字转语音的接口,还有snowboy唤醒,利用这个可以用来做很多有意思的事情,比如语音播报,语音操控等等。我们先来搞定声音的输入输出,即麦克风跟3.5mm接口的输出设置。

    实验环境硬件:树莓派3b一台、usb声卡一个、麦克风一个

    操作系统:Raspbian with Desktop

    2e8eed5070ed

    3.5mm音频输出

    当时买树莓派的时候并没有购买hdmi的转接线,因此音频信号只能从3.5mm接口输出。貌似官方提供的系统版本已经不需要手动去设置就从3.5mm接口输出信号了。如果无法从3.5mm接口输出音频信号,请参考:

    安装声卡与麦克风

    树莓派板子上没有音频输入接口,因此我们只能通过外置的声卡来解决这个问题,声卡最好是免驱的。usb声卡某宝上一个5块钱还包邮。另外还需要购置一个麦克风,也就几块钱而已。到手后将声卡接到派上,麦克风接到声卡上,音箱依旧接在板载的3.5mm插口上。

    2e8eed5070ed

    配置声卡

    因为派上面没有音频输入,所以系统并没有配置默认的录音设备,我们需要修改配置文件让usb声卡作为默认的音频输入。

    1、在用户目录下编辑文件~/.asoundrc,如果没有这个文件就新建一个pi@raspberrypi:~ $ nano ~/.asoundrc

    2、将文件内容改为:pcm.!default {

    type asym

    playback.pcm {

    type plug

    slave.pcm "hw:0,0"

    }

    capture.pcm {

    type plug

    slave.pcm "hw:1,0"

    }

    }

    配置内容的意思就是音频输入使用声卡1(也就是usb声卡),输出使用声卡0,即板载声卡。

    使用麦克风录音

    完成上面的步骤之后就可以使用rec来录音了pi@raspberrypi:~ $ rec test.wav

    正常的话应该类似于下图这样:

    2e8eed5070ed

    对着麦克风随便吼几句,按ctrl+c停止录音,然后播放测试一下是否有声音。pi@raspberrypi:~ $ aplay test.wav�

    正常的话能从音箱听到刚才录制的声音。

    设置麦克风增强

    录音测试结果发现录入的声音很小,而且得靠得很近,可以设置麦克风增加稍稍加强一些,但是会带来一定的噪音。pi@raspberrypi:~ $ alsamixer

    2e8eed5070ed

    按F6选择USB声卡

    2e8eed5070ed

    2e8eed5070ed

    按F5显示所有选项

    2e8eed5070ed

    将两个Mic项调到100即可。

    关注微信公众号及时获取更新文章,欢迎大家跟我交流技术与想法:

    2e8eed5070ed

    展开全文
  • 树莓派 + USB麦克风 >>> 录音

    千次阅读 2019-11-21 14:51:36
    前言 又到期末了,课程设计又来了,我打算搞一个简易版家庭语音助手,然后前几天在搞百度的语音识别和语音合成,...检查树莓派是否正确识别麦克风 麦克风插上树莓派,然后输入: lsusb 或者输入: arecord -l 可...

    一、前言

    又到期末了,课程设计又来了,我打算搞一个简易版家庭语音助手,然后前几天在搞百度的语音识别和语音合成,正好今天淘宝买的麦克风到了,我就开始搞拾音部分
    在这里插入图片描述


    关于语音识别和语音合成可参见:
    树莓派 >>> 接入百度AI 开放平台实现智能语音识别
    百度语音合成

    二、开始

    1)检查树莓派是否正确识别麦克风

    麦克风插上树莓派,然后输入:

    lsusb
    

    在这里插入图片描述
    或者输入:

    arecord -l
    

    在这里插入图片描述

    可以看到正确识别了。

    2)安装一些辅助软件

    首先更新软件列表:

    sudo apt-get update
    

    然后安装sox

    sudo apt-get install sox
    

    其使用可参考:
    sox安装及常用命令
    SoX — 音频处理工具里的瑞士军刀

    3)录音

    对于arecord 的使用可输入arecord --help 获得。

    录音:

    arecord -D "plughw:1,0" -f dat -c 1 -r 16000 -d 5 test.wav
    

    这段代码中:

    参数 说明
    -D “plughw:1,0” plughw:1,0的1指的是第一个外部设备,因为树莓派内部没有声卡,所以只能使用外部的usb麦克风
    -f dat 根据帮助手册中得知,使用这个参数能够获得16bit 的编码
    -c 1 通道数1
    -r 16000 采样率16k
    -d 5 持续(录音)时间5s

    最后生成的test.wav 文件就是我们的录音文件

    以上参数选择是根据百度语音识别所需格式配置,大家有其他需求的话,可以自行修改。

    tips

    大家可以注意到,这里是使用软件进行录音的,要是我们需要在python 代码中进行录音的话,可以采用如下方式:

    import os
    os.system('arecord -D "plughw:1,0" -f dat -c 1 -r 16000 -d 5 test.wav')
    

    三、踩坑

    要是大家在录音的过程中发现录音质量及其差噪声震耳欲聋,请换一下电源,例如把原先供电的排插换成电池等。
    这个问题搞了我三个小时,直到我换了一个其他供电方式的树莓派后。。。

    四、结束

    在这里插入图片描述
    百度语音识别,正确识别

    展开全文
  • 我的树莓派同时了两个usb设备,一个的是麦克风,另一个的相机,系统识别相机是卡1,麦克风是卡2。所以python使用pyaudio包录音的时候自动选择默认的录音设备会出问题,应该是识别的设备不正确,导致录音出来全...

        我的树莓派同时接了两个usb设备,一个接的是麦克风,另一个接的相机,系统识别相机是卡1,麦克风是卡2。所以python使用pyaudio包录音的时候自动选择默认的录音设备会出问题,应该是识别的设备不正确,导致录音出来全是电流声,根本录不进去,网上找了很多方法,修改alsa设置(~/.asound.conf    /usr/share/alsa/alsa.conf等),修改pyaudio设置等都没有用。

    最后总结出来还是得用shell,方便快捷地解决。

    首先 在终端运行arecord -l,我的显示如下,Sound Device是 card2。

    card 1: CAMERA [HBVCAM CAMERA], device 0: USB Audio [USB Audio]
      Subdevices: 1/1
      Subdevice #0: subdevice #0
    card 2: Device [USB PnP Sound Device], device 0: USB Audio [USB Audio]
      Subdevices: 0/1
      Subdevice #0: subdevice #0
    

    然后在终端运行:

    arecord --device=plughw:2,0 --format S16_LE --rate 44100 -c 2 -d 5 /home/pi/test.wav

    就可以录音。

    这里的plughw:2,0 对应card2,device0,-c是声道,-d是录音时长,/home/pi/test.wav是保存的录音文件。

    我是直接在python里调用shell脚本实现录音:

    import time
    import subprocess
    
    arecord --device=plughw:2,0 --format S16_LE --rate 44100 -c 2 -d 5 /home/pi/test.wav
    p = subprocess.Popen(args,shell=True)
    print("开始5秒录音")
    time.sleep(5)
    print("结束录音")

    如果需要降采样到单通道16000hz等,可以用下边这个函数:

    def downsample_wav(src, dst, inrate=44100, outrate=16000, inchannels=2, outchannels=1):
        import os, wave, audioop
        if not os.path.exists(src):
            print('Source not found!')
            return False
    
        if not os.path.exists(os.path.dirname(dst)):
            os.makedirs(os.path.dirname(dst))
    
        try:
            s_read = wave.open(src, 'r')
            s_write = wave.open(dst, 'w')
        except:
            print('Failed to open files!')
            return False
    
        n_frames = s_read.getnframes()
        data = s_read.readframes(n_frames)
    
        try:
            converted = audioop.ratecv(data, 2, inchannels, inrate, outrate, None)
            if outchannels == 1:
                converted = audioop.tomono(converted[0], 2, 1, 0)
        except:
            print('Failed to downsample wav')
            return False
    
        try:
            s_write.setparams((outchannels, 2, outrate, 0, 'NONE', 'Uncompressed'))
            s_write.writeframes(converted)
        except:
            print('Failed to write wav')
            return False
    
        try:
            s_read.close()
            s_write.close()
        except:
            print('Failed to close wav files')
            return False
    
        return True

    降采样代码来自https://www.cnblogs.com/eniac1946/p/9051227.html

    如果有更好的解决方法欢迎交流。

    展开全文
  • 1.在树莓派上,安装麦克风 2.提供一个java springboot的项目,打包好以后,放到树莓派中,运行,项目提供出restful风格的接口,对麦克风的录制与暂停进行控制。 3.实时播放麦克风的声音。 这样做,是为了后面对...

    试验目标:


          1.在树莓派上,安装麦克风

          2.提供一个java springboot的项目,打包好以后,放到树莓派中,运行,项目提供出restful风格的接口,对麦克风的录制与暂停进行控制。

          3.实时播放麦克风的声音。

          这样做,是为了后面对声音进行识别控制做好基础。

     

    定义与范围划分:


        1.载体:小车底盘,轮子等非电子类物品统称为载体。

        2.控制中心:树莓派称为控制中心

        3.电子部件: 麦克风

        4.软件部分:java语言与其操作系统划分为软件部分

    =================================================

    一.准备


        思路:通过java web程序,通过接口的方式,控制麦克风录制与播放功能。并将录制文件放到磁盘存储起来。

    1.控制中心


    树莓派4b(对树莓派的使用不熟悉或者对java不熟悉的同学请关注专栏,可以提供一些指导)

    代码编写与管理平台(方便网页控制)

    2.电子设备 


    麦克风

    3.软件与程序 


    centos7 32位

    java的运行编译环境jdk8

    录制麦克风声音程序

    4.载体


    二.电路连接示意图
     

    三.程序部分

    注:由于直接读取音频,不要读取gpio针脚,所以无需通过pi4j,简单通过java的音频api就可以控制麦克风的录制等功能,
    项目地址:https://github.com/jiaozg22/global-fairy-top-pi4j.git

     

    项目框架:   spring boot

    中 间  件:    maven,git,jdk8

    测试工具:   jmeter

     

    为了详细讲解代码部分,将项目进行拆分为以下几部分:pom文件,接口,核心类文件,测试文件

     

    package top.fairy.global.globalfairytoppi4j.action;
    
    import org.apache.logging.log4j.LogManager;
    import org.apache.logging.log4j.Logger;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RequestMethod;
    import org.springframework.web.bind.annotation.RestController;
    import top.fairy.global.globalfairytoppi4j.sound.RecordAndPlay;
    
    /**
     * @author jiao_zg22
     * @version 1.0
     * @description 接口
     * @date 2021/4/23 20:15
     */
    @RestController
    @SpringBootApplication
    @RequestMapping(value = "/sound")
    public class SoundController {
        private static final Logger logger = LogManager.getLogger();
    
    
        @RequestMapping(value = "/record/start", method = RequestMethod.POST)
        public String record() {
            logger.info("音频录制开始");
    
            new Thread() {
                @Override
                public void run() {
    
                    try {
                        RecordAndPlay.play();
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                }
            }.start();
    
    
            return "音频录制结束";
        }
    
        @RequestMapping(value = "/record/stop", method = RequestMethod.POST)
        public String recordStop() {
            logger.info("音频录制停止");
    
            new Thread() {
                @Override
                public void run() {
    
    
                    try {
                        RecordAndPlay.stop();
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                }
            }.start();
    
    
            return "音频录制停止";
        }
    }
    

     

    package top.fairy.global.globalfairytoppi4j.sound;
    
    
    import javax.sound.sampled.AudioSystem;
    import javax.sound.sampled.AudioFormat;
    import javax.sound.sampled.SourceDataLine;
    import javax.sound.sampled.DataLine;
    import javax.sound.sampled.FloatControl;
    import javax.sound.sampled.TargetDataLine;
    
    /**
     * @author jiao_zg22
     * @version 1.0
     * @description 接口
     * @date 2021/4/23 19:22
     */
    public class RecordAndPlay {
        static volatile boolean stop = false;
    
        public static void main(String[] args) {
            play();
            try {
                Thread.sleep(10000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            stop();
        }
    
    
        //播放音频文件
        public static void play() {
            try {
                AudioFormat audioFormat =
    //                    new AudioFormat(AudioFormat.Encoding.PCM_SIGNED, 44100F,
    //                    8, 1, 1, 44100F, false);
                        new AudioFormat(AudioFormat.Encoding.PCM_SIGNED,44100F, 16, 2, 4,
                                44100F, true);
                DataLine.Info info = new DataLine.Info(TargetDataLine.class, audioFormat);
                TargetDataLine targetDataLine = (TargetDataLine) AudioSystem.getLine(info);
                targetDataLine.open(audioFormat);
                final SourceDataLine sourceDataLine;
                info = new DataLine.Info(SourceDataLine.class, audioFormat);
                sourceDataLine = (SourceDataLine) AudioSystem.getLine(info);
                sourceDataLine.open(audioFormat);
                targetDataLine.start();
                sourceDataLine.start();
                FloatControl fc=(FloatControl)sourceDataLine.getControl(FloatControl.Type.MASTER_GAIN);
                double value=2;
                float dB = (float)
                        (Math.log(value==0.0?0.0001:value)/Math.log(10.0)*20.0);
                fc.setValue(dB);
                int nByte = 0;
                final int bufSize=4100;
                byte[] buffer = new byte[bufSize];
                while (nByte != -1 && !stop ) {
                    //System.in.read();
                    nByte = targetDataLine.read(buffer, 0, bufSize);
                    sourceDataLine.write(buffer, 0, nByte);
                    System.out.println(stop);
                }
    
                sourceDataLine.stop();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    
    
        //播放音频文件
        public static void stop() {
            stop = true;
        }
    }
    

     

    4.测试文件

    链接: https://pan.baidu.com/s/17LRE2pBJ05toC3cMT-XJaQ 提取码: 9h2f  

    或者可以自己写测试接口。就是简单的post,get方式的接口

     

    五.效果

    当放开 /sound/record/start 接口的时候开始录制音频,并实时回放。

    当放开 /sound/record/stop 接口的时候,停止录制音频。

    展开全文
  • 树莓派3B+新麦克风调试

    千次阅读 2018-12-08 20:39:01
    摄像头网上随便找个教程能拍照就OK了,下来试下麦克风。  我买的麦克风长这样的,是免驱的,即插即用,方便快捷。网上也有教大家如何看麦克风驱动是否存在的命令这里我就不多收了 执行sudo arecord -D ...
  • 大家早上好, 前段时间购入了一个树莓派3b+套件,...3. 树莓派的声音输出,相对于usb麦克风,我应该选择哪一个, 1)Auto 2) 3.5mm 3)HDMI 4. 我需要安装什么样的录音工具? 恳请大家帮我掠一掠,解答一下。
  • 使用了百度的snowboy唤醒词模块,语音合成和识别,百度的物联网接口,树莓派外接麦克风等外设等等
  • 这里附上树莓派的实物图:(usb口连鼠标或者usb麦克风,那个可以连耳机的口是可以听声音,但是不能充当麦克风功能,安卓那个口连接充电器,另一个黑线连接显示屏) 第一步 换源 1.目的     为...
  • 通过usb声卡连接树莓派麦克风、音箱。 树莓派自带声卡驱动,所有需要修改树莓派默认声卡,输入aplay -l查看声卡card和device,找到使用的声卡。 如图修改默认声卡为card1 device3(我的usb声卡是card1 device3) ...
  • 树莓派 智能小车 语音控制系统

    千次阅读 2017-02-25 23:11:58
    (同上篇博客[Arduino 智能机器人 按指令行走])...麦克风树莓派专用) 耳机 环境配置 安装pycurl库sudo apt-get install python-pycurl 配置树莓派支持中文(因为要显示中文)可参考http://shumeipai.n
  • 树莓派学习手记——使用Python录音

    千次阅读 2018-09-18 19:32:36
    树莓派上自带的3.5mm接口只能作为语音输出口,不能接麦克风。所以我们需要另外购买USB声卡,某宝上5元左右就能买到,当然你还需要一个麦克风。总费用应该在20元以内。 检查硬件是否正常 使用arecord -l可以列出所有...
  • 基于树莓派的语音邮件收发一、 软硬件环境及搭建硬件需要软件环境环境搭建1. 烧录镜像2. 连接硬件3. 使用VNC远程树莓派桌面4. 百度语音识别与合成SDK安装...USB麦克风 3.5mm插孔音箱或蓝牙音箱 软件环境 ...
  • 声卡采用的是耳麦分离款免驱动USB声卡,麦克风和扬声器都是3.5mm接口,其中扬声器另外USB进行供电。 初始时遇到的问题是因为树莓派默认声卡设置不成功,预计的效果的是使用外置声卡可以进行实时语音识别的功能,...
  • 使用树莓派3B+开发智能音乐播放器

    千次阅读 2019-05-14 18:18:11
    麦克风说出歌名后,树莓派自动下载对应歌曲的MP3,默认播放搜索到的第一首歌曲。 二、硬件设备 1、树莓派3B+ 2、sony的ps3 eye麦克风一个(淘宝20块一个,带摄像头和4个麦克风阵列,USB连接) 3、蓝牙音箱 三、...
  • ReSpeaker 2-Mics Pi HAT麦克风阵列一个(引脚对齐,直接插在树莓派上) 网线一根 装有Ubuntu16.04系统的电脑一台 3.5MM耳机一根(一会儿听声音) usb线一根(给树莓派上电) 手机一台(给电脑和树莓派开热点,...
  • 【整理】树莓派初识

    2017-09-02 09:06:51
    1. 购买裸版 TF卡 16G或以上 电源 ...2. 安装2.1 散热片有三个芯片需要散热片,CPU,GPU,RAM,位置如下2.2 散热片散热片红线PIN4,黑线PIN62.3 外壳不同外壳有不同的安装方法, 总体讲,不
  • 人工智能-树莓派小车(1)——DuerOS语音唤醒

    千次阅读 热门讨论 2018-02-27 09:08:44
    购买的链接如下:树莓派,此外,还购买了16G内存卡一张,PS3Playstation3 EYE麦克风一个用于语音识别,基本的东西就是这些。 系统方面,首先采用的是百度的DuerOS Raspberry系统,方便与下来用的 Python SDK相结....
  • 之前所做的有一个特点就是需要在树莓派上连接一个USB麦克风,通过这个麦克风来进行语音的输入,但是在实际使用场景上来看,这是不合理的,因此需要一个可以远程操控智能小车的方案,因此萌发了将控制端移植到手机上...
  • 下来的部分比较有趣,是本项目提出的机器人和市场上大多数机器人不同的地方。它除了能够通过摄像头图像和超声波数据来做一些自动控制外,还使用了Respeaker的4通道麦克风阵列。使用这个模块的好处是,在摄像头所...
  • RGB LED:3个APA102 RGB LED,连接到树莓派的SPI接口 WM8960:低功耗立体声编解码器 Raspberry Pi 40针头:支持Raspberry Pi Zero,Raspberry Pi 1 B +,Raspberry Pi 2 B和Raspberry Pi 3 B POWER:用于为ReSpeaker 2-...
  • 智能时代到来,闲来无事学了点python,顺便就开始找点项目开始练手,做一个智能对话机器人玩一下,实现如下 首先要解决语音输入问题,经过一段时间的...连上树莓派,由于树莓派没有音频输入接口,所以加了一个u...
  • 【算法】music算法的总结

    千次阅读 2019-11-04 17:39:46
    使用树莓派使用麦克风阵列接收声源,在后期处理中语音文件的处理和识别需要调用voice-engine的库文件,但寄于树莓派内部如何实现其他库文件引用目前小编尚未了解,每次在树莓派自带的python软件中直接run程序,前辈...
  • 断电的情况下,装入已经激活的4G SIM卡、TF卡(可选)、插入带麦克风的耳机线(可选),再上USB线到电脑。 TCP/IP连接GPRS发数据 GPRS 调试须用开通了 GPRS 联网功能的 SIM 卡 下例以入移动 SIM 卡为例:  正
  • 香橙派4是一款开源的单板电脑,使用...麦克风端口,3.5mm和HDMI2.0音频输出口,千兆以太网口,USB3.0,USB2.0,Type-C等常规标准接口,还有调试串口,40pin树莓派兼容扩展口。本篇介绍下香橙派4在Linux系统下如何使用SPI
  • 维持现状 Erobhosele Sado,Sidney Wise,Jack Darrow和Ben Nixon 高端父母监护仪专用...下来下载opencv以运行相机 sudo apt-get install libhdf5-dev libhdf5-serial-dev sudo apt-get install python3-h5py sudo
  • python-语音识别+语音合成

    万次阅读 2018-07-21 18:53:55
    材料:树莓派3b,usb音响,蓝牙模块,usb麦克风 注意:尽量用自己的API 由于时间久远,写的一些代码可能已经不记得了 功能:打造自己的天猫精灵,百度的语音识别和语音合成 难点:编码与解码问题,可以多百度...
  • 大家知道,在Windows 10 IoT Core上,如果用户外了USB声卡、带有麦克风的摄像头之类的硬件,就会有多个音频设备可以用。但是,系统目前并没有提供直接的UI来设置音频的输入或者输出设备。经过查阅之后发现,我们...

空空如也

空空如也

1 2
收藏数 39
精华内容 15
关键字:

树莓派接麦克风