- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
如何绘制来自麦克风的 matplotlib 输入信号?我尝试使用 plt.plot(frames) 进行绘图,但由于某种原因,frames 是一个字符串?
a) 为什么框架变量是字符串列表?
b) 为什么数据变量是字符串列表?
c) 它们应该代表单个样本的能量/幅度并且是整数吗?
d) 当我指定 block 大小为 1024 时,为什么数据长度为 2048?
(我猜是因为我使用 paInt16,但仍然看不出为什么它不能是 1024)
我有以下用于麦克风输入的代码:
import pyaudio
import audioop
import matplotlib.pyplot as plt
import numpy as np
from itertools import izip
import wave
FORMAT = pyaudio.paInt16 # We use 16bit format per sample
CHANNELS = 1
RATE = 44100
CHUNK = 1024 # 1024bytes of data red from a buffer
RECORD_SECONDS = 3
WAVE_OUTPUT_FILENAME = "file.wav"
audio = pyaudio.PyAudio()
# start Recording
stream = audio.open(format=FORMAT,
channels=CHANNELS,
rate=RATE, input=True,
frames_per_buffer=CHUNK)
frames = []
for i in range(0, int(RATE / CHUNK * RECORD_SECONDS)):
data = stream.read(CHUNK)
frames.append(data)
frames = ''.join(frames)
stream.stop_stream()
stream.close()
audio.terminate()
最佳答案
a) Why is frames variable a string list?
由于 b),这就是您在代码中构建它的方式。
b) Why is data variable string list?
它是一个字节字符串,即原始字节序列。这就是read()
返回。
c) Should they represent energy/amplitude of single sample and be integers?
他们是。它们只是打包在字节序列中,而不是 Python 整数中。
d) Why is length of data 2048 when I specified I want chunk size of 1024?
1024
是帧数。每个帧的长度为 2 个字节,因此您将获得 2048 个字节。
How can I plot on matplotlib input signal from microphone? I have tried to plot with plt.plot(frames) but frames is for some reason a string?
取决于你想要绘制什么。通过将字节字符串转换为 numpy 数组即可获得原始幅度:
fig = plt.figure()
s = fig.add_subplot(111)
amplitude = numpy.fromstring(frames, numpy.int16)
s.plot(amplitude)
fig.savefig('t.png')
更有用的图是 spectrogram :
fig = plt.figure()
s = fig.add_subplot(111)
amplitude = numpy.fromstring(frames, numpy.int16)
s.specgram(amplitude)
fig.savefig('t.png')
但是现在您已经有了一个 numpy
数组,您可以随意修改幅度。
关于python - 如何使用 matplotlib 绘制 pyaudio 输入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34302150/
我正在尝试运行以下 python 程序,但出现了一些错误。该程序旨在将实时语音转换为文本,它使用的是我使用 CMUSphinx 训练的声学模型。 编码: #!/usr/bin/env python i
我一直无法找到在我的机器上安装 PyAudio 的修复程序。我尝试了几种不同的解决方案,并且确实使用自制软件安装了必备库“portaudio”。我还寻找了出现在输出底部的 gcc 错误的解决方案,而这
我在学校项目中使用 pyaudio,我试图让声音一次只在一个扬声器上播放。我的代码是这样的: import pyaudio p = pyaudio.PyAduio() def play_wave(st
我有一个播放 wav 文件的非常基本的 pyaudio 代码。 open_wave = wave.open("tone_silence/l0r1d0_500.wavc",'rb') p
我使用 pyaudio 库从声卡中读取声音。我使用以下代码 stream = pyaudio.PyAudio().open(format=pyaudio.paInt16, channels=2,
我正在尝试使用 pyaudio 构建一个应用程序来记录扬声器和麦克风的声音,但我只是不知道如何同时记录它们。我尝试启用立体声混音器,但它没有成功,因为我只能听扬声器发出声音。我使用的这段代码使用 py
我正在尝试使用麦克风从盖革计数器收集数据并使用 Python 对其进行处理。但是,我使用的是大学计算机,因此不允许我安装此工作似乎必需的 PyAudio 模块 ( Python read microp
是否可以使用 pyaudio 演奏和弦? 最佳答案 当然可以! 只需生成结果并将其传递给播放器即可。 This article covers a method to do it. 以下是示例代码,以防
我在 PyAudio 网站上看到了录制固定长度录音的录音教程,但我想知道如何对非固定长度的录音做同样的事情?基本上,我想创建按钮来开始和结束录音,但我还没有找到任何关于此事的信息。有什么想法,我不是在
我正在尝试创建一个 python 程序来使用 PyAudio 和 Ubuntu 16.04 录制和循环音轨。我收到一条错误消息,提示“未找到默认输入设备”。当我查询默认设备并尝试列出所有设备时,我得到
为了录制一个 2 秒的 wav 文件,我使用了 PyAudio(带有 Pyzo)和以下经典代码来录制声音并保存它: import pyaudio import wave chunk = 1024 FO
我目前面临一个难题。我需要在法语 Windows 环境中使用 Pyaudio,并且音频设备的名称默认包含 é 或 è。 这是出现特殊字符时出现的错误: u=self.p.get_device_i
我目前正在使用PyAudio来开发轻型录音实用程序,该实用程序可以满足我计划中的应用程序的特定需求。我正在使用ASIO音频接口(interface)。我正在编写程序要做的是通过界面播放wav文件,同时
尝试使用 pip 安装 PyAudio 包显示错误,而其他包安装正常。我正在使用 python 3.7。为什么会出现此错误? C:\Users\Himanshu>pip install PyAudio
我正在 Intel Edison 开发板上试用 pyaudio,但内置测试失败了。单独录制和播放在我的设置下工作正常,但如果我尝试将输入连接到输出,则会出现错误。 File "wire_full.py
我正在使用 python 和 pyaudio 使用回调方法流式传输纯正弦音,以便稍后通过用户输入调制声音。一切都很好,除了当我运行代码时,我收到 1-2 秒的与警告消息相关的爆裂声ALSA lib p
我已经使用这个压缩包构建并安装了 PortAudio:'pa_stable_v19_20071207.tar.gz' 完成此步骤后,当我尝试通过此 URL 中的压缩包安装 PyAudio 时: htt
我一直在尝试为语音识别项目安装 PyAudio,但我尝试过的所有方法都没有奏效。我尝试安装最新版本的 python (3.7) 只是为了 noobishly 发现 pyaudio 与它不兼容,现在我正
我正在尝试创建一个简单的应用程序,该应用程序加载 wav 文件(键盘的每个音符一个)并在按下(或播放)MIDI 音符时播放特定的文件。到目前为止,我已经在两个单独的线程中使用 mido 创建了一个 m
我正在尝试使用 pyaudio 播放流音频 我正在获取一些数据,对其进行处理,然后将它们放入音频流中。 数据速率相当恒定,但有一些抖动。 我可以在日志中看到数据速率是恒定的并且处理是实时的。 Demo
我是一名优秀的程序员,十分优秀!