问题标签 [python-sounddevice]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - sounddevice 找不到 PortAudio 库
我一直在使用一个使用sounddevice
模块播放音频的 python 程序。该程序在我的办公室电脑(运行Ubuntu 17.10)中运行良好,但在我的家用电脑(运行Linux Mint 18.3)中运行良好。它会产生以下错误:
我该如何解决这个问题?
python - 在使用 sounddevice 播放声音时使用 event.getKeys 存储反应时间
我编写了一个实验,向参与者展示了一系列视觉刺激(刺激持续时间:100 毫秒,试验持续时间:500 毫秒)。在视觉刺激开始的同时,会播放 100 毫秒的声音。一些视觉刺激是目标,参与者在检测到目标时应按空格键。我想知道参与者对目标的反应时间。所以我使用 event.getKey 存储按下空格键的全局时间。我存储了一个全局时间来比较试验开始的时间和按下空格键的时间。我这样做是因为我的试验间隔很短,并且参与者可能会在接下来的试验中对目标做出反应。
当我注释掉声音的 sd.play 时,代码似乎可以工作,但是一旦播放声音,反应时间似乎就会消失,并且它总是在目标试验之后将其存储在试验中(即使我知道我按下了空格键在目标试验期间)。
以前有人遇到过这个问题吗?
以下是该过程的代码:
=========== 编辑 ============ 下面我粘贴整个实验的 MCVE 版本:
python - 现场录音延迟
我是使用 python 进行音频处理的菜鸟。我从互联网上获得了以下 python 代码来执行实时录音。每当我使用以下代码进行录制时,录制的音频文件的开头都会有一个零块。录制不会立即开始,它会在录制开始之前添加零。
我希望录制立即发生,我在开始时运行没有任何零的代码。任何帮助表示赞赏。
python - Python Sounddevice 回调 time.inputBufferAdcTime 返回 0
我的最终目标是同时输出一个 wav 文件并在麦克风上录制,并在绘图上将两者叠加显示。这不需要低延迟,但它确实需要两个图以正确表示实时发生的事情的方式重叠。如果我将麦克风线连接到扬声器线,则图表应该相对良好地排列在一起。
由于似乎有一定的延迟,我的解决方案是使用回调给出的时间变量。这应该让我在绘制它以调整延迟时适当地改变情节。我收到了 DAC 时间和当前时间的适当值,但 ADC 时间给了我 0。
python - 如何更新 Sounddevice 的采样率?
我正在使用 sd.Stream 同时从麦克风输出声音和录音。我需要能够同时获取输入和输出以进行实时音频处理,这就是我使用 Stream 的原因。如果我使用的所有文件都使用相同的采样率,这很好。如果我有一些不具有相同采样率的音频文件,我需要能够更改 Stream 使用的采样率。
我的第一次尝试是关闭finished_callback 中的流:
然后在 update_plot 中重新打开一个流:
重新打开流似乎根本没有任何效果。我相信这样做的原因是在我之前使用的新流之后我没有任何阻塞(plt.show)。在这部分我不能有任何阻碍,因为这是我更新我的情节的地方。有没有办法在它已经打开后更改流的采样率,或者有另一种方法来完成我想要做的事情?
python - Python SoundDeviceStream 写入/读取下溢/溢出错误
使用运行 Raspbian GNU/Linux 8 (jessie) 的 Raspberry Pi Model B+,带有蓝色“Snowball”USB 麦克风和连接到 3.5 毫米插孔输出的有源扬声器。尝试运行pushtotalk.py
来自GassistPi的 Google Assistant 示例。样本运行但会产生多个下溢错误和断断续续的音频输出。Git 搜索发现了这个类似的问题,并指出了缓冲区参数设置(此处audio_helpers.py
为完整代码)和可能的 CPU 问题。下面的代码片段显示了参数设置以及产生错误消息的代码。在这里查看了python-sounddevice的更详细的解释但它超出了我的范围(才刚刚开始学习 Python!)。寻找一个简洁(且相对简单)的问题答案,是什么决定了参数设置的值以及如何修改代码/参数以防止/减少下溢错误?
代码片段 #1 audio_helpers.py 示例中的参数设置:
代码片段 #2 audio_helpers.py 示例中的错误报告代码:
最后是运行时的警告输出pushtotalk.py
更新OK,稍加修改我已经设法通过注释掉代码来减少断断续续的音频输出,该代码audio_helpers.py
会为下溢和溢出条件生成警告消息输出。似乎当检测到下溢/溢出情况时,logging.warning 正在输出到终端(stdout
?),这导致音频播放暂时中断。您仍然可以在音频输出中检测到轻微的断断续续,但比以前要好得多。理想情况下,与其阻止警告消息的输出,不如从一开始就阻止发生下溢/溢出情况!
下面的代码片段显示了在 中注释掉的两个 logging.warning 函数audio_helpers.py
。该文件位于/home/pi/env/lib/python3.5/site-packages/googlesamples/assistant/grpc
我的设置中。
Doc-String """ 的使用现在更改为 # 用于注释掉的部分
更新 2
在@Matthias 的建议中,详细说明了如何pushtotalk.py
启动以及使用 switch 的结果--audio-block-size
--audio-block-size
我还尝试了从 1024 到 65536的(有效二进制)值,也尝试了0 来衡量。所有产生相同的原始结果或运行时错误。
python - 一旦音量低于 python-sounddevice 的阈值就停止录制
我目前有一些 python 代码不断记录 4 秒的音频块:
但是,我不想有固定的 4 秒块,而是想sounddevice
记录直到音量降至音频阈值以下(即,当拿着麦克风的人停止说话时),然后再次开始收听。
本质上,我想模仿像sox
's这样的命令的行为rec recording.wav silence 1 0.1 3% 1 3.0 3%
,它就是这样做的。
有没有简单的方法来做到这一点sounddevice
?
python - Python,测量来自sund卡的声音
我已经工作了几个小时,试图找出一种在没有麦克风的情况下从应用程序中测量音量的方法。
我首先尝试使用 PyAudio,但所有示例都是使用麦克风作为扬声器声音的捕获设备,但由于我没有麦克风,这变得很难。
然后我找到了 python-sounddevice ,它似乎应该可以工作,但我在尝试获取声音时不断出错。
这是我使用的代码:
我打印设备,所以我会在这里打印它们:
这是我得到的错误:
也许我以错误的方式接近这个,通道是 0 进 2 出,我尝试将其作为默认值。
python - 无法使用 sounddevice 录制声音
我无法sounddevice
在 python 中使用录制音频。此代码以前在旧版本的 Mac OS 上工作。
python3代码如下:
输出是
尽管此处未显示所有值,但我已确认它们都为零。当声音正确记录时,这些值中的大多数都是非零的。
我已确认设备设置正确:
这与 Mac OS 中的权限有关吗?我正在使用莫哈韦沙漠。
谢谢你。
python - Sounddevice ValueError:无法将输入数组从形状 (2048) 广播到形状 (2048,1)
我知道这似乎是 ValueError 帖子中的另一篇,但请听我说完,并了解我已尝试使用 Google 搜索并浏览 StackOverflow 社区,以寻找可行的解决方案来解决我的问题。
我目前正在尝试将我的解调样本传递给sounddevice模块并使用它的回调函数实时播放它。
错误:
文件“rtl-fm-cont.py”,第 120 行,在 audio_callback outdata[:] = data ValueError: could not broadcast input array from shape (2048) into shape (2048,1)
我在下面附上了这段代码的完整输出:
输出:
您的帮助将不胜感激。先感谢您。