精华内容
下载资源
问答
  • 所以今天我们总结一下用在树莓派上使用Python录音的过程。准备硬件树莓派上自带的3.5mm接口只能作为语音输出口,不能接麦克风。所以我们需要另外购买USB声卡,某宝上5元左右就能买到,当然你还需要一个麦克风。总...

    有的时候我们想让树莓派能够录音,以实现语音控制等功能。所以今天我们总结一下用在树莓派上使用Python录音的过程。

    准备硬件

    树莓派上自带的3.5mm接口只能作为语音输出口,不能接麦克风。所以我们需要另外购买USB声卡,某宝上5元左右就能买到,当然你还需要一个麦克风。总费用应该在20元以内。

    检查硬件是否正常

    使用arecord -l可以列出所有录音设备,一般输出如下:

    arecord -l

    List of CAPTURE Hardware Devices

    card 1: Device [USB Audio Device], device 0: USB Audio [USB Audio]

    Subdevices: 1/1

    Subdevice #0: subdevice #0

    同样地,aplay -l可以列出所有播放设备,输出中也能找到形如 Device [USB Audio Device] 的设备。

    我们可以直接在命令行执行Linux自带的录音/播放命令,测试硬件是否正常:

    arecord -D hw:1,0 -t wav -c 1 -r 44100 -f S16_LE test.wav

    aplay -D hw:0,0 test.wav

    arecord 是录音命令,其中 hw:1,0 表示 card 1: Device [USB Audio Device], device 0: USB Audio [USB Audio] 的 card 1 , device 0 ,如果你的USB声卡录音设备不是 card 1 , device 0 ,还请进行相应修改。另外,录音过程需要手动按CTRL + C结束。

    aplay 是播放命令,其中 hw:0,0 表示树莓派板载音频接口,如果你把耳机插在USB声卡接口,还请进行相应修改,如改成 hw:1,0 。

    *如果你发现录制的音频内没有声音,只有细微的杂音,但 arecord -l 和 aplay -l 列出的设备中确实有USB声卡。那么你可以尝试着把麦克风接口拔出来一些,只插进去2/3,或许能够解决你的问题。笔者不是很明白其中的缘由,如果你有什么想法恳请留言告知。

    安装pyaudio

    在Python中执行录音命令需要pyaudio模块,直接用pip命令安装:

    pip install pyaudio

    如果你使用pip命令下载速度很慢,或许修改pip源可以帮到你。

    *如果你使用了virtualenv,一般会发现pyaudio安装失败。这种情况下你需要安装APT中的PortAudio开发头文件,然后安装PyAudio:

    sudo apt-get install portaudio19-dev

    pip install pyaudio

    使用Python录音

    该例程修改自官方主页例程PyAudio。

    import pyaudio

    import wave

    import os

    import sys

    CHUNK = 512

    FORMAT = pyaudio.paInt16

    CHANNELS = 1

    RATE = 44100

    RECORD_SECONDS = 5

    WAVE_OUTPUT_FILENAME = "output.wav"

    p = pyaudio.PyAudio()

    stream = p.open(format=FORMAT,

    channels=CHANNELS,

    rate=RATE,

    input=True,

    frames_per_buffer=CHUNK)

    print("recording...")

    frames = []

    for i in range(0, int(RATE / CHUNK * RECORD_SECONDS)):

    data = stream.read(CHUNK)

    frames.append(data)

    print("done")

    stream.stop_stream()

    stream.close()

    p.terminate()

    wf = wave.open(WAVE_OUTPUT_FILENAME, 'wb')

    wf.setnchannels(CHANNELS)

    wf.setsampwidth(p.get_sample_size(FORMAT))

    wf.setframerate(RATE)

    wf.writeframes(b''.join(frames))

    wf.close()

    执行后会录制一段5秒的音频,输出为同目录下的output.wav文件。

    python3 rec.py

    * 隐藏错误消息

    一般情况下,在树莓派上执行上述Python代码后,你会看到非常多的ALSA报错和JACK报错:

    ALSA lib confmisc.c:1281:(snd_func_refer) Unable to find definition 'cards.bcm2835.pcm.front.0:CARD=0'

    ......

    ......

    connect(2) call to /tmp/jack-1000/default/jack_0 failed (err=No such file or directory)

    attempt to connect to server failed

    但你会发现其实能够正常地录音。如果你不想看到这些错误消息,可以在代码中加入下述命令隐藏错误:

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

    小结

    使用Python录音很简单,你还可以在GPIO口上接入一个按钮,修改例程,实现按下按钮自动开始录音的功能。下一步的目标是把Python录音和Cloud Speech API语音识别结合起来。

    感谢你阅读文章!

    展开全文
  • 该楼层疑似违规已被系统折叠隐藏此楼查看此楼我用Python库里的pyaudio录制语音 录制频率8000的语音会报错。IOError: [Errno Invalid sample rate] -9997录制频率48000的语音 正常录制附上代码:# -*- coding: utf-8 ...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

    我用Python库里的pyaudio录制语音 录制频率8000的语音会报错。

    IOError: [Errno Invalid sample rate] -9997

    录制频率48000的语音 正常录制

    附上代码:

    # -*- coding: utf-8 -*-

    import pyaudio

    import wave

    import numpy as np

    def Monitor():

    CHUNK = 512

    FORMAT = pyaudio.paInt16

    CHANNELS = 1

    RATE = 48000

    RECORD_SECONDS = 5

    WAVE_OUTPUT_FILENAME = "cache.wav"

    p = pyaudio.PyAudio()

    stream = p.open(format=FORMAT,

    channels=CHANNELS,

    rate=RATE,

    input=True,

    frames_per_buffer=CHUNK)

    print("开始缓存录音")

    frames = []

    while (True):

    print 'begin '

    for i in range(0, 100):

    data = stream.read(CHUNK)

    frames.append(data)

    audio_data = np.fromstring(data, dtype=np.short)

    large_sample_count = np.sum( audio_data > 800 )

    temp = np.max(audio_data)

    if temp > 800 :

    print "检测到信号"

    print '当前阈值:',temp

    break

    stream.stop_stream()

    stream.close()

    p.terminate()

    wf = wave.open(WAVE_OUTPUT_FILENAME, 'wb')

    wf.setnchannels(CHANNELS)

    wf.setsampwidth(p.get_sample_size(FORMAT))

    wf.setframerate(RATE)

    wf.writeframes(b''.join(frames))

    wf.close()

    if __name__ == '__main__':

    Monitor()

    展开全文
  • 前几天,有朋友从我们淘宝店买了USB 接口的麦克风, 说是无法...哈哈10元你买不了吃亏买不了上当…接驳的方式很简单, 麦克风接入树莓派的 USB 口,然后启动树莓派, 这里我说的直接启动是在假设你已经通过烧录工具烧录...

    前几天,有朋友从我们淘宝店买了USB 接口的麦克风, 说是无法识别, 没办法录音, 经过交流发现, 实际上是咩有开启麦克风的音量.

    这篇帖子简单介绍一下怎么去利用 usb 麦克风录音,更多应用在后面给大家拓展一下.

    首先这个麦克风,超级小巧和物美价廉.哈哈10元你买不了吃亏买不了上当…

    接驳的方式很简单, 麦克风接入树莓派的 USB 口,然后启动树莓派, 这里我说的直接启动是在假设你已经通过烧录工具烧录好了操作系统.目前操作环境使用的是 Raspbian 系统.

    可以去官方下载: http://www.raspberrypi.org/downloads

    我这里测试环境是树莓派3B+, 8GBTF 卡.

    然后登陆系统,打开终端, 输入如下命令检查是否识别出了 USB 设备.

    第一个是我的2.4Ghz 的无线键鼠, 第二个就是麦克风的设备了.

    也可以通过 dmesg 看看:

    可以看到已经检测到 PnP Sound Device.

    接下来,我们看看使用什么方式去录音.你可以安装 ALSA 的录音应用软件:

    安装软件前先升级或者说更新一下软件仓库的索引信息: sudo apt-get update

    然后执行安装:

    sudo apt-get -y  install  alsa-utils   pulseseaudio

    然后直接输入:

    arecord  -L

    就列出目前你机器上可以用的声卡了.

    然后可以通过:

    arecord –device=hw:1,0 –format S16_LE –rate 44100 -c1 test.wav

    说明一下: –device=hw:1,0 是定义录音的设备. –format S16_LE 是定义 signed 16-bit (S16_LE) 音频. 码率是: 44100 Hz (--rate 44100) 后面的参数是定义为mono 格式 (-c1) , 文件名为: test.wav

    这里的录音设备1,0 是因为系统设别出来的状态决定的, subdevices 是1, subdevice是0.

    来吼一曲一人我饮酒醉, 然后录音录下来,播放看看效果如何.

    可以按下 ctrl+C 终止.

    如果想播放看看效果:

    aplay –device=plughw:1,0 test.wav

    之前我们提到了,如果麦克风音量没有开,可能会录出来的内容是无声的.

    因此可以通过 alsamixer 去调整, 这里- c 1 是设置输入输出都在一个设置层面上,就是可以在一个终端中通过面板操作所有的音频设备:

    alsamixer -c 1

    默认为00,按F5的上就可以看到这样的画面:

    Mic 就是麦克风了,现在音量很低,你需要按上调试合适的音量.

    按 Tab 键可以切换调试的设备.

    按 ESC 退出.

    再执行录音就可以了.

    后面和语音相关的应用介绍:

    可以通过命令录音,然后上传给百度语音识别的 API 接口,通过百度语音识别后, 生成 Text 文本,然后将 text 文本提交到图灵机器人后台的 API, 可以得到图灵机器人的反馈,也应该是文本,然后再将文本转语音,就是传说中的 TTS, 那样,你的树莓派就可以和天猫精灵,小米智能音响一样和你交互了.

    快去试试看吧!

    展开全文
  • 关于DOA的部分,除了原来的使用ODAS Studio的方法以外,又多加了一些使用Python代码直接进行DOA的章节。0 安装驱动别忘了用source activate doa切到专门的环境里,或者conda create -n doa python=3.6现造一个环境。...

    偶然发现seeedstudio更新了他们的英文版说明书,然而中文版还没更新[捂脸]。关于DOA的部分,除了原来的使用ODAS Studio的方法以外,又多加了一些使用Python代码直接进行DOA的章节。

    0 安装驱动

    别忘了用source activate doa切到专门的环境里,或者conda create -n doa python=3.6现造一个环境。

    安装驱动:

    1

    2

    3

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

    cd seeed-voicecard

    sudo proxychains4 ./install.sh

    sudo reboot -h now

    检查驱动:

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    21

    22

    23

    24

    25

    26

    27

    28

    29

    30

    31

    32

    33

    34

    35

    36

    37

    38

    39

    40

    41

    42

    43

    44

    45

    46

    47

    48

    49

    50

    51

    52

    53

    54

    55

    56

    57

    58

    59

    60

    61

    62

    63

    64

    65

    66

    67

    68

    69

    70

    71

    72arecord -L # 输入驱动,即录制

    null

    Discard all samples (playback) or generate zero samples (capture)

    default

    ac108

    dmixer

    ac101

    sysdefault:CARD=seeed8micvoicec

    seeed-8mic-voicecard,

    Default Audio Device

    dmix:CARD=seeed8micvoicec,DEV=0

    seeed-8mic-voicecard,

    Direct sample mixing device

    dsnoop:CARD=seeed8micvoicec,DEV=0

    seeed-8mic-voicecard,

    Direct sample snooping device

    hw:CARD=seeed8micvoicec,DEV=0

    seeed-8mic-voicecard,

    Direct hardware device without any conversions

    plughw:CARD=seeed8micvoicec,DEV=0

    seeed-8mic-voicecard,

    Hardware device with all software conversions

    aplay -L # 输出驱动,即播放

    null

    Discard all samples (playback) or generate zero samples (capture)

    default

    ac108

    dmixer

    ac101

    sysdefault:CARD=ALSA

    bcm2835 ALSA, bcm2835 ALSA

    Default Audio Device

    dmix:CARD=ALSA,DEV=0

    bcm2835 ALSA, bcm2835 ALSA

    Direct sample mixing device

    dmix:CARD=ALSA,DEV=1

    bcm2835 ALSA, bcm2835 IEC958/HDMI

    Direct sample mixing device

    dsnoop:CARD=ALSA,DEV=0

    bcm2835 ALSA, bcm2835 ALSA

    Direct sample snooping device

    dsnoop:CARD=ALSA,DEV=1

    bcm2835 ALSA, bcm2835 IEC958/HDMI

    Direct sample snooping device

    hw:CARD=ALSA,DEV=0

    bcm2835 ALSA, bcm2835 ALSA

    Direct hardware device without any conversions

    hw:CARD=ALSA,DEV=1

    bcm2835 ALSA, bcm2835 IEC958/HDMI

    Direct hardware device without any conversions

    plughw:CARD=ALSA,DEV=0

    bcm2835 ALSA, bcm2835 ALSA

    Hardware device with all software conversions

    plughw:CARD=ALSA,DEV=1

    bcm2835 ALSA, bcm2835 IEC958/HDMI

    Hardware device with all software conversions

    sysdefault:CARD=seeed8micvoicec

    seeed-8mic-voicecard,

    Default Audio Device

    dmix:CARD=seeed8micvoicec,DEV=0

    seeed-8mic-voicecard,

    Direct sample mixing device

    dsnoop:CARD=seeed8micvoicec,DEV=0

    seeed-8mic-voicecard,

    Direct sample snooping device

    hw:CARD=seeed8micvoicec,DEV=0

    seeed-8mic-voicecard,

    Direct hardware device without any conversions

    plughw:CARD=seeed8micvoicec,DEV=0

    seeed-8mic-voicecard,

    Hardware device with all software conversions

    1 测试LED

    说实话,自打买了这个麦阵列,我还从来没试过这12个LED灯[捂脸],试试吧要不感觉对不起这个板子,另外,运行demo需要gpiozero、spidev、pyusb。

    1

    2

    3

    4

    5proxychains4 git clone --depth 1 https://github.com/respeaker/pixel_ring.git

    cd pixel_ring

    proxychains4 pip install -U -e .

    proxychains4 pip install gpiozero RPi.GPIO

    python examples/respeaker_4mic_array.py

    控制LED的主要代码其实就在函数show(),直接在Python交互环境中输入下面的代码,就可以打开12点方向的灯,并渲染为白色,也就是ARGB(0, 64, 64, 64)。

    1

    2

    3

    4

    5

    6

    7

    8from pixel_ring import pixel_ring

    from gpiozero import LED

    power = LED(5)

    power.on()

    pixel_ring.set_brightness(10) # 0-100,其实会被转换为`APA102.dev.global_brightness`的0-31

    pixel_ring.pattern.show([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64, 64])

    用于控制的数组是一个48位的list,从1点钟方向开始,到12点钟方向结束,每四位控制一个LED灯,非常好操作。

    2 装DOA相关库

    添加seeed提供的apt源。(靠谱的公司啊)

    1

    2

    3echo "deb https://seeed-studio.github.io/pi_repo/ stretch main" | sudo tee /etc/apt/sources.list.d/seeed.list

    proxychains4 curl https://seeed-studio.github.io/pi_repo/public.key | sudo apt-key add -

    proxychains4 sudo apt update

    安装numpy和pyaudio:

    1

    2

    3proxychains4 conda install -y numpy

    proxychains4 sudo apt-get install -y portaudio19-dev

    proxychains4 pip install pyaudio

    安装编译工具:

    1sudo proxychains4 apt-get install -y swig python-dev libatlas-base-dev build-essential make

    安装snowboy(热词检测DOA):

    1

    2

    3

    4

    5proxychains4 git clone --depth 1 https://github.com/Kitt-AI/snowboy.git

    cd snowboy

    python setup.py build

    python setup.py bdist_wheel

    pip install dist/snowboy*.whl

    安装seeed的voice-engin:

    1

    2

    3

    4proxychains4 git clone https://github.com/voice-engine/voice-engine.git

    cd voice-engine

    python setup.py bdist_wheel

    pip install dist/*.whl

    测试ok~:

    1python ~/doa/voice-engine/examples/respeaker_6mic_array_for_pi/kws_doa.py

    如果只是想用DOA功能,可以试试seeed的老项目mic_array:

    1

    2proxychains4 git clone https://github.com/respeaker/mic_array.git

    python ./mic_array/mic_array.py

    对比了一下,跟人家introlab/odas项目差的还是比较远的。直观上看就是我们简单的靠fft实现的DOA仅仅能做到平面范围内的方位判断,仅输出一个角度(平面offset),速度慢且不支持声源跟踪等功能。而odas的声源定位项目输出两个值,一个平面offset一个法向offset,还能进行声源分辨,多声源跟踪跟踪。odas项目的理论收录在Lightweight and Optimized Sound Source Localization and Tracking Methods for Opened and Closed Microphone Array Configurations中,值得一读。

    展开全文
  • 原标题:树莓派学习手记——使用Python录音...所以今天我们总结一下用在树莓派上使用Python录音的过程。准备硬件树莓派上自带的3.5mm接口只能作为语音输出口,不能接麦克风。所以我们需要另外购买USB声卡,某宝上5元...
  • 树莓派使用python录音,停止说话时结束 欢迎使用Markdown编辑器 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法...
  • **树莓派**(型号不要求,本人使用的是3B)2. **usb麦克风**(某宝有卖,我就不打广告了) 用来录音3. **音响或者喇叭**(某宝也有卖) 用来播放以上就是需要的工具对话机器人分成5步1. 第一步:“录音”:录音我用到的是...
  • 树莓派python3.7语音助手开发笔记(4) 接下来我们要去做主体的语音识别部分了。(传送门) 新建一个Xiaobai.py 首先要想的是录音,因为要做识别的话肯定是要音频文件的,拜大佬所赐,有两种方法进行录音(但后期...
  • 所以今天我们总结一下用在树莓派上使用Python录音的过程。准备硬件树莓派上自带的3.5mm接口只能作为语音输出口,不能接麦克风。所以我们需要另外购买USB声卡,某宝上5元左右就能买到,当然你还需要一个麦克风。总...
  • 树莓派学习手记——使用Python录音

    千次阅读 2018-09-18 19:32:36
    所以今天我们总结一下用在树莓派上使用Python录音的过程。 准备硬件 树莓派上自带的3.5mm接口只能作为语音输出口,不能接麦克风。所以我们需要另外购买USB声卡,某宝上5元左右就能买到,当然你还需要一个麦克风。总...
  • 树莓派打造对话机器人 Python

    千次阅读 2017-04-09 10:40:45
    3丶树莓派 软件: 1丶python2.7(模块:pyaudio wave requests urllib urllib2 sys) 总共5步: 第一步:录音 第二步:语音识别 第三步:图灵回复 第四步:语音合成 第五步:播放 第一步 录音: 录音使用的是linux的...
  • 树莓派上最常用的录音是arecord命令,但是功能有限,不能实现检测到声音做出反应。但是pyaudio能。本文实现的功能是在树莓派上监听声音,当分贝超过阈值,将会做出反应,例子的反应是结束while循环。原理是录制一...
  • title: 单片机学习:第一篇 基于Python树莓派语音助手 tags: 树莓派,python,语音助手,百度AIP 目录 一、pyaudio录音 二、语音识别 三、与图灵机器人对话 四、语音合成 五、封装 树莓派功能十分强大,作为...
  • **树莓派**(型号不要求,本人使用的是3B) 2. **usb麦克风**(某宝有卖,我就不打广告了) 用来录音 3. **音响或者喇叭**(某宝也有卖) 用来播放 以上就是需要的工具 对话机器人分成5步 1. 第一步...
  • 因为在做一个语音识别机器人,需要用到录音模块,本来想直接用arecord命令: os.system('arecord -d 4 -r 16000 -c 1 -t wav -f S16_LE -D plughw:1,0 record.wav') 但每次运行结束后再次运行就会出现“arecord”...
  • 所以python使用pyaudio包录音的时候自动选择默认的录音设备会出问题,应该是识别的设备不正确,导致录音出来全是电流声,根本录不进去,网上找了很多方法,修改alsa设置(~/.asound.conf /usr/share/alsa/alsa.conf等...
  • 本文主要向大家介绍了机器人之树莓派打造对话机器人 Python,通过具体的内容向大家展现,希望对大家学习机器人有所帮助。工具列表1.**树莓派**(型号不要求,本人使用的是3B)2.**usb麦克风**(某宝有卖,我就不打广告了)...

空空如也

空空如也

1 2 3
收藏数 59
精华内容 23
关键字:

树莓派python录音

python 订阅