- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用覆盆子pi接收麦克风输入,并添加一种效果,以对麦克风输入实时输出低通音频滤波器效果。他们那里有许多python音频库,例如声音pi / py音频。如果有人可以帮助我实现这一目标。
亲切的问候。
最佳答案
我没有树莓派,但是我已经在Windows上尝试了类似python的方法。我假设您可以修改此程序以适合您的需求。
为此,您将需要安装pyaudiopip install pyaudio
可以从here下载的python sounddevice
该程序:
记录麦克风的音频
用限制器限制音频
播放修改后的音频
绘制原始和修改后的音频
Python代码
from pyaudio import PyAudio, paContinue, paFloat32
from time import sleep
from numpy import array, random, arange, float32, float64, zeros
import matplotlib.pyplot as plt
import sounddevice as sd
################################### Constants ##################################
fs = 44100 # Hz
threshold = 0.8 # absolute gain
delay = 40 # samples
signal_length = 1 # second
release_coeff = 0.5555 # release time factor
attack_coeff = 0.5 # attack time factor
dtype = float32 # default data type
block_length = 1024 # samples
############################# Implementation of Limiter ########################
class Limiter:
def __init__(self, attack_coeff, release_coeff, delay, dtype=float32):
self.delay_index = 0
self.envelope = 0
self.gain = 1
self.delay = delay
self.delay_line = zeros(delay, dtype=dtype)
self.release_coeff = release_coeff
self.attack_coeff = attack_coeff
def limit(self, signal, threshold):
for i in arange(len(signal)):
self.delay_line[self.delay_index] = signal[i]
self.delay_index = (self.delay_index + 1) % self.delay
# calculate an envelope of the signal
self.envelope *= self.release_coeff
self.envelope = max(abs(signal[i]), self.envelope)
# have self.gain go towards a desired limiter gain
if self.envelope > threshold:
target_gain = (1+threshold-self.envelope)
else:
target_gain = 1.0
self.gain = ( self.gain*self.attack_coeff +
target_gain*(1-self.attack_coeff) )
# limit the delayed signal
signal[i] = self.delay_line[self.delay_index] * self.gain
################### Record Audio from Microphone #########################
print "Recording Audio"
signal = sd.rec(signal_length * fs, samplerate=fs, channels=1, dtype=dtype)
sd.wait()
print "Audio recording complete , Play Audio"
################################# Play the Audio ###############################
original_signal = array(signal, copy=True, dtype=dtype)
limiter = Limiter(attack_coeff, release_coeff, delay, dtype)
def callback(in_data, frame_count, time_info, flag):
if flag:
print("Playback Error: %i" % flag)
played_frames = callback.counter
callback.counter += frame_count
limiter.limit(signal[played_frames:callback.counter], threshold)
return signal[played_frames:callback.counter], paContinue
callback.counter = 0
pa = PyAudio()
stream = pa.open(format = paFloat32,
channels = 1,
rate = fs,
frames_per_buffer = block_length,
output = True,
stream_callback = callback)
while stream.is_active():
sleep(0.1)
stream.close()
pa.terminate()
############################## Plot results ####################################
plt.figure()
plt.plot(original_signal, color='green', label='original signal')
plt.plot(signal, color='red', label='limited signal')
plt.legend()
plt.show(block=True)
############################## End Program ####################################
Python 2.7.9 (default, Dec 10 2014, 12:24:55) [MSC v.1500 32 bit (Intel)] on win32
Type "copyright", "credits" or "license()" for more information.
>>> ================================ RESTART ================================
>>>
Recording Audio
Audio recording complete , Play Audio
>>>
关于python - Python麦克风输入和低通滤镜效果实时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35764018/
我想开发一个虚拟麦克风驱动程序。请不要说任何关于 DirectShow 的事情——那不是“方式”。我需要一个适用于任何软件(包括 Skype 和 MSN)的解决方案。而 DirectShow 不符合这
我想使用媒体记录器从我的android应用程序记录音频。我已将音频源设置为麦克风,这使我可以从麦克风进行录制。但是我也很乐意检测是否连接了任何外部麦克风。如果是这样,那么它应该从中录制音频。 例如:如
在此先感谢您的帮助。 我正在开发一个用于研究目的的 Android 应用程序,需要禁用软输入键盘上的语音到文本按钮。这样做的原因是由于我正在开发的应用程序使用麦克风而出现的并发问题。我知道对于一般的应
目前,我正在启动主程序,该程序控制何时启动扬声器和麦克风线程。从那里,我还可以控制设备(USB耳机)上的静音/取消静音等。音频线程位于音频类的单独文件中。 此代码有效。现在,它以预设的特定循环计数捕获
OSX 10.10.3 ,也可以在10.8上重现 系统偏好设置中音频输入的当前状态是: 输入音量设置为0 当我对着麦克风讲话时,我看到条形音箱的没有动画 是否可以从AppleScript中的该状态恢复
我的问题:我目前有一个声音文件,其中包含我录制的特定声音。我希望能够识别该声音何时再次播放超过2秒钟。音量对我来说并不重要,我希望能够识别出何时播放该特定音符。例如,该文件保存了音符A(la)的录音,
这个标题可能看起来很荒谬,但我有问题。我有服务捕获线路,并将文件作为声音文件保存在系统上(该服务不是我开发的,我必须使用它)。 所以我想编写程序来选择声音文件(*.wav、*.mp3 等),然后该声音
我正在尝试编写一个java程序通过UDP发送实时麦克风数据,然后在VLC中接收数据。我基本上使用与 this post 中相同的代码将流打包并发送出去。当我在 VLC 中接收数据时,我什么也没得到。我
我有一个 IP 语音应用程序,我只想通过单击按钮将内置麦克风静音。我该怎么做? 最佳答案 您真的不需要将麦克风静音,对吗?只是停止处理传入的音频。这不是 SDK 需要为您做的事情,而是您需要做的事情。
软呢帽上的 qt5.7 检查了这个audio-to-chart example并发现 QIODevice::writeData 用于读取麦克风输入。由于它有效并且正在绘制来自麦克风的数据,因此该功能显
我想做的是: 在工具栏中添加一个按钮(麦克风图像)。 点击该按钮后,iOS 默认语音听写应该会被调用。 > 查询:我假设我们不能调用默认语音听写但想确认。他们是否有任何解决方法或任何方法来通过单击工具
我正在尝试编写一个 DirectShow 音频捕获过滤器,它可以被 Microsoft Lync 客户端识别为 Microphone 源。这些是我已经采取的步骤: 过滤器派生自CSource;它的输出
在我目前的工作中,我们正在开发一个使用 WebRTC 技术的应用程序。 我们想要测试我们的应用程序与 30 位用户的实时工作情况——一个包含视频、声音和麦克风的电话 session (一切都必须正常)
这可能是一个非常愚蠢的问题,因为我对 AudioKit 和一般的 IOS 音频真的很陌生。我想要实现的是从我的麦克风录制一个剪辑(或只是一个简单的文件记录)。 我不希望我的应用程序将输入(从麦克风)直
我正在尝试使用 AVAudioEngine 获取实时麦克风输入的 float 据。进行一次fft和fft之后的特殊算法。 当我编译代码时,我在控制台上变成了这个输出:0x000000000000000
我需要一种方法来通过 PulseAudio(通过 bash)获取麦克风的当前“响度”。我指的是麦克风拾取的声音音量。 我想复制一个音量计,就像您在 pavucontrol 中看到的那样。 最佳答案 在
如果另一个程序正在使用我计算机的摄像头/麦克风,我正在尝试检查 python (ubuntu)。 我想到了访问相机/麦克风时正在使用哪些系统调用。 我知道正在使用系统调用“access”和“open”
我正在做一个项目,我需要用户能够录制屏幕、音频和麦克风。目前我只能让它识别屏幕和音频。 首先,我捕获屏幕和其中的音频并将其保存到变量中。然后我正在捕获该变量以显示视频组件。 invokeGetDisp
根据官方documentation Android 10 (API level 29) and higher imposes a priority scheme that can switch the
我正在尝试开发一个应用程序来记录双方(麦克风和扬声器)的通话。我已经看到有一个应用程序 vrecorder 为 android 1.6 提供这个 vrecorder。 现在我想为 android 2.
我是一名优秀的程序员,十分优秀!