精华内容
下载资源
问答
  • python录音

    2018-09-20 09:56:08
    python录音源代码,录音格式为wav格式..
  • 所以今天我们总结一下用在树莓派上使用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 录音_python录音

    2020-12-16 11:46:07
    #!/usr/bin/envpython#-*-coding:utf-8-*-#Date:2018-12-0219:04:55importwaveimportrequestsimporttimeimportbase64frompyaudioimportPyAudio,paInt16importwebbrowserframerate=16000#采...

    #!/usr/bin/env python

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

    # Date    : 2018-12-02 19:04:55

    import wave

    import requests

    import time

    import base64

    from pyaudio import PyAudio, paInt16

    import webbrowser

    framerate = 16000  # 采

    num_samples = 2000  # 采样点

    channels = 1  # 声道

    sampwidth = 2  # 采样宽度2bytes

    FILEPATH = 'speech.wav'

    base_url = "https://openapi.baidu.com/oauth/2.0/token?grant_type=client_credentials&client_id=%s&client_secret=%s"

    APIKey = "A0YzbOlHhA7P3w8pKpeaPH3r"

    SecretKey = "L8Y8c1MaQj0uNHMcjdrYKGLYyhQGZOpQ"

    HOST = base_url % (APIKey, SecretKey)

    def getToken(host):

    res = requests.post(host)

    return res.json()['access_token']

    def save_wave_file(filepath, data):

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

    wf.setnchannels(channels)

    wf.setsampwidth(sampwidth)

    wf.setframerate(framerate)

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

    wf.close()

    def my_record():

    pa = PyAudio()

    stream = pa.open(format=paInt16, channels=channels,

    rate=framerate, input=True, frames_per_buffer=num_samples)

    my_buf = []

    # count = 0

    t = time.time()

    print('正在录音...')

    while time.time() 

    string_audio_data = stream.read(num_samples)

    my_buf.append(string_audio_data)

    print('录音结束.')

    save_wave_file(FILEPATH, my_buf)

    stream.close()

    def get_audio(file):

    with open(file, 'rb') as f:

    data = f.read()

    return data

    def speech2text(speech_data, token, dev_pid=1537):

    FORMAT = 'wav'

    RATE = '16000'

    CHANNEL = 1

    CUID = '*******'

    SPEECH = base64.b64encode(speech_data).decode('utf-8')

    data = {

    'format': FORMAT,

    'rate': RATE,

    'channel': CHANNEL,

    'cuid': CUID,

    'len': len(speech_data),

    'speech': SPEECH,

    'token': token,

    'dev_pid': dev_pid

    }

    url = 'https://vop.baidu.com/server_api'

    headers = {'Content-Type': 'application/json'}

    # r=requests.post(url,data=json.dumps(data),headers=headers)

    print('正在识别...')

    r = requests.post(url, json=data, headers=headers)

    Result = r.json()

    if 'result' in Result:

    return Result['result'][0]

    else:

    return Result

    def openbrowser(text):

    maps = {

    '百度': ['百度', 'baidu'],

    '腾讯': ['腾讯', 'tengxun'],

    '网易': ['网易', 'wangyi']

    }

    if text in maps['百度']:

    webbrowser.open_new_tab('https://www.baidu.com')

    elif text in maps['腾讯']:

    webbrowser.open_new_tab('https://www.qq.com')

    elif text in maps['网易']:

    webbrowser.open_new_tab('https://www.163.com/')

    else:

    webbrowser.open_new_tab('https://www.baidu.com/s?wd=%s' % text)

    if __name__ == '__main__':

    flag = 'y'

    while flag.lower() == 'y':

    print('请输入数字选择语言:')

    devpid = input('1536:普通话(简单英文),1537:普通话(有标点),1737:英语,1637:粤语,1837:四川话\n')

    my_record()

    TOKEN = getToken(HOST)

    speech = get_audio(FILEPATH)

    result = speech2text(speech, TOKEN, int(devpid))

    print(result)

    if type(result) == str:

    openbrowser(result.strip(','))

    flag = input('Continue?(y/n):')

    展开全文
  • python录音,生成wav参考:python如何编写一个录音软件?——————————————安装pyaudio包brew install portaudiopip install pyaudiobingo!——————————————不需要界面#coding=utf8import ...

    python录音,生成wav

    参考:

    python

    如何编写一个录音软件?

    ——————————————

    安装pyaudio包

    brew install portaudio

    pip install pyaudio

    bingo!

    ——————————————

    不需要界面

    #coding=utf8

    import sys, threading

    import pyaudio, wave

    import time

    CHUNK = 1024

    FORMAT = pyaudio.paInt16

    CHANNELS = 1

    RATE = 16000

    WAVE_OUTPUT_FILENAME = "output_20s.wav"

    RECORDING = False

    def record_thread(fileName, stream, p):

    print('recording')

    starttime = time.time()

    waveFile =

    wave.open(fileName, 'wb')

    waveFile.setnchannels(CHANNELS)

    waveFile.setsampwidth(p.get_sample_size(FORMAT))

    waveFile.setframerate(RATE)

    while starttime+20 >

    time.time():

    waveFile.writeframes(stream.read(CHUNK))

    waveFile.close()

    print('end')

    p = pyaudio.PyAudio()

    stream = p.open(format=FORMAT,

    channels=CHANNELS,

    rate=RATE,

    input=True,

    frames_per_buffer=CHUNK)

    record_thread(WAVE_OUTPUT_FILENAME,stream,p)

    其中到什么时候终止录音?

    while语句—— while starttime+20 > time.time():

    这很low

    应该用到多线程

    共享变量,一个线程控制时间,另一个线程做录音,共享的变量起到signal的作用

    下一步往这个实现

    展开全文
  • 所以今天我们总结一下用在树莓派上使用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语音识别结合起来。

    感谢你阅读文章!

    展开全文
  • # -*- coding: utf-8 -*-import pyaudioimport numpy as npfrom scipy import fftpackimport wave# 录音# 录音必须安装portaudio模块,否则会报错# ...
  • python实现录音功能(可随时停止录音),书单,请输入,本文,数字,时间为python实现录音功能(可随时停止录音)易采站长站,站长之家为您整理了python实现录音功能(可随时停止录音)的相关内容。本文实例为大家分享了python...
  • # -*- coding: utf-8 -*-import pyaudioimport numpy as npfrom scipy import fftpackimport wave# 录音# 录音必须安装portaudio模块,否则会报错# ...
  • # -*- coding: utf-8 -*-import pyaudioimport numpy as npfrom scipy import fftpackimport wave# 录音# 录音必须安装portaudio模块,否则会报错# ...
  • 本文实例为大家分享了python实现录音功能的具体代码,供大家参考,具体内容如下# -*- coding: utf-8 -*-import pyaudioimport timeimport threadingimport waveclass Recorder():def __init__(self, chunk=1024, ...
  • import scipy.io.wavfile as wavfilepath = "sound/origin.wav"filepath_write = "sound/generate.wav"rate, data = wav.read(filepath)wav.write(filepath_write, rate, data)用 python 录音、播放语音:...
  • 原标题:树莓派学习手记——使用Python录音...所以今天我们总结一下用在树莓派上使用Python录音的过程。准备硬件树莓派上自带的3.5mm接口只能作为语音输出口,不能接麦克风。所以我们需要另外购买USB声卡,某宝上5元...
  • 点击数:692(在苹果系统下,如果文章中的图片不能正常显示,请升级Safari浏览器到最新版本,或者使用Chrome、Firefox浏览器打开。...这里我们介绍一种使用Python(3.x)中的PyAudio软件包来实现录音的方法...
  • 本文实例为大家分享了python实现录音功能的具体代码,供大家参考,具体内容如下# -*- coding: utf-8 -*-import pyaudioimport timeimport threadingimport waveclass Recorder():def __init__(self, chunk=1024, ...
  • 本文实例为大家分享了python实现录音功能的具体代码,供大家参考,具体内容如下# -*- coding: utf-8 -*-import pyaudioimport timeimport threadingimport waveclass Recorder():def __init__(self, chunk=1024, ...
  • def savead(): rec.save("1.wav") root=Tk() Button1=tkinter.Button(root, text ="开始录音", command =startad) Button1.grid(row=0,column=0,padx=20,pady=20) Button2=tkinter.Button(root, text ="结束录音", ...
  • 树莓派学习手记——使用Python录音

    千次阅读 2018-09-18 19:32:36
    所以今天我们总结一下用在树莓派上使用Python录音的过程。 准备硬件 树莓派上自带的3.5mm接口只能作为语音输出口,不能接麦克风。所以我们需要另外购买USB声卡,某宝上5元左右就能买到,当然你还需要一个麦克风。总...
  • 1、关于pyaudio的使用,请参看前一篇博文:2、关于wav文件的操作,参看博文:3、录音的过程与播放使用的函数类似,可以参考使用手册:4、python代码#!usr/bin/env python#coding=utf-8import numpy as npfrom ...
  • 在做这个程序的时候,遇到好多坑1 使用 sounddevice时 python 无法导入D:\Program Files (x86)\python\Lib\site-packages\_sounddevice_data报 :Failed to execute script xxx错误使用 pyinstaller -D xxx.py 进入...
  • 2019独角兽企业重金招聘Python工程师标准>>> import waveimport numpyfrom pyaudio import PyAudioimport matplotlib.pyplot as plt# 只读方式打开WAV文件wf = wave.open('./output.wav', 'rb')# 创建...
  • 树莓派使用python录音,停止说话时结束 欢迎使用Markdown编辑器 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 807
精华内容 322
关键字:

python录音

python 订阅