问题标签 [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-3.x - python-sounddevice 不会检测音频接口上的所有输入通道(windows)
我使用的是 Focusrite Scarlett 18i20 音频接口,我需要使用至少 4 个输入来记录脉冲响应。我在 Windows 10 PC 上运行,使用 python (anaconda) 和 sounddevice。
当我使用 sounddevice.query_devices() 时,它会将设备列为“1 Focusrite USB (Focusrite USB Au, MME (2 in, 0 out)”。
我的问题是该设备实际上有 8 个模拟输入通道,我至少需要其中的 4 个。输出也是如此,它看到 2 但应该是 8。如何让 sounddevice 识别它们?这是驱动问题吗?
python - 如何实时更改python sounddevice中的麦克风数据
我使用 sounddevice(Python 3.6.3,Win 7)实时播放麦克风中的声音。
我做了我的 X 全局。
我实际上需要独立于右声道在左声道中单独改变音量。想象一下它是“indata * x”。我知道如何通过使用数字常量来永久地做到这一点,但不知道如何在循环中实时做到这一点。数据不变。也许我必须在一个循环后停止流,但我不知道怎么做。我是新手。如果可能的话,我不想使用函数或映射。感谢您的理解:) 我也想使用 PyAudio,但我不知道如何访问左右声道数据来改变每个声道的音量:
python - 当数据类型为 32 位浮点数时,录制的声音会变得嘈杂/失真
我通过python和pyaudio在我的电脑上录制了麦克风的声音。当声音以 16 位整数作为其数据类型记录时,它可以正常工作。但是,当它以 32 位浮点数作为其数据类型记录时,它不起作用。
请看下面的代码。如果 FORMAT 设置为 pyaudio.paInt16 它可以按我的意愿工作。但是,当它设置为 pyaudio.paFloat32 时它不起作用,如下所示;
非常感谢您提前提供的建议和帮助!
更新;
我已经测试了 sounddevice 并且代码如下;
结果与 pyaudio 相同。它在 int16 时有效,但在 32 位浮动作为 dtype 时会产生噪音和声音失真。
python - Sounddevice 的 wait() 方法不适用于短声音
对于一个包括移动机器人手臂的项目,我需要一个类似“Geiger-Müller 计数器”的基于距离的警报。为此,我编写了一个 python 模块并尝试添加可能性,如果机器人手臂位于物体的左侧,则声音仅在左侧扬声器上,右侧模拟。为此,我查看了 sounddevice 库,其中可以进行简单的通道映射。从下面的代码片段 1 中可以看出,就像在文档中一样,我正在调用 sd.play() 并等待 sd.wait() 直到声音结束。
当我使用长度为 6 秒的样本声音时,一切正常。但是,如果我使用所需的声音,则发出短促的哔声(不到 1 秒),代码不起作用。脚本在约 1 秒后结束,没有任何声音。我可以通过添加睡眠语句(在代码中注释掉)来解决这个问题。
但是对于上下文,我需要一个小于 0.5 秒的播放窗口。有谁知道我该如何解决这个问题或解决这个问题?
我尝试改用 pyaudio,但无法将单声道 .wav 文件转换为立体声字节数组,以便在左/右扬声器上动态切换音频。(code-snippet2)但我总是遇到错误(“asscii 编解码器无法解码 pos 2 上的字节:序数不在范围内(128)”)
片段1:
片段2:
python - 如何在 python 中录制未确定持续时间的音频并允许暂停和恢复功能?
我正在编写一个 Python 应用程序来将音频录制为 WAV 文件,直到用户按下pause或stop。暂停音频后,用户还应该能够恢复录制。此外:
- 该应用程序无法预先知道录音会持续多长时间
- 该应用程序应避免内存不足(因为录音可能很长)。例如,它可以实时写入 WAV 文件,以防止将不断增长的录音存储在内存中。
解决这个问题的好方法是什么?您能否为您的解决方案提供一些代码片段?
使用python-sounddevice,我可以stop()
和start()
流来模仿“暂停”功能。我可以指定一个 numpy 数组作为记录的输出。但:
- 我不知道阵列有多大(因为我不知道记录时长)
- 当数组填满时我会怎么做?
python-sounddevice 和 sound-file可以在不知道大小的情况下支持录音。但:
- 我将如何结合“暂停”和“恢复”功能?声音文件只有
read
和write
方法。 - 有没有比使用 a 更好的方法来停止流
KeyBoardInterrupt
? - 我可以在每次“暂停”后创建不同的录音并在用户单击“停止”后合并 WAV 文件吗?
- 我尝试使用
Threading.Event()
阻止录制线程来模仿暂停功能,但录制一直在写入文件
sound-device
我的尝试
和sound-device
方法sound-file
:
python - 如何同时录制 2 个音频源?
我想录制音轨并将其保存为 2 个不同的 .wav 文件。音轨应延迟 ca 保存。6 秒,每个 .wav 应为 12 秒长。
我试图用多处理和 pyaudio 来做,但我无法让它工作
请注意,我是 python 的初学者,这是我在 stackoverflow 上的第一篇文章!
编辑:我想出了一些似乎运行良好的代码。它有 0.144 秒的延迟。我对这段代码的改进感到高兴。此代码使用线程而不是多处理。
python-3.x - 如何让声音文件在两个不同的设备上播放?
我正在尝试将声音文件播放到两个不同的设备,所以我尝试了多处理和线程模块,但它没有产生想要的结果
起初,我想执行同时播放文件两次的函数,但后来我意识到这是不可能的,所以我想在一个非常小的时间窗口内执行这两个函数。我尝试了线程和多处理模块来创建两个进程。在我尝试简单地执行它并立即返回播放功能以便它可以执行下一个播放但它只是一个接一个地播放它们之后
我希望它几乎同时播放我为两个不同设备指定的文件的两倍,但相反,它一次只播放一个
python - 运行时声音设备未找到 PortAudio 库 [WINDOWS]
问题:与Linux
的这个问题类似,我在OSError: PortAudio library not found
打包我的应用程序pyinstaller
并执行.exe
. (注意,当我通过 shell 运行我的未打包应用程序时,我没有遇到任何问题。这只发生在我使用 pyinstaller 打包它时)。
尽管portaudio
通过包管理器安装似乎适用于 Linux,但这似乎不是 Windows 的选项,因为sounddevice 文档说,“如果您使用的是 Mac OS X 或 Windows,该库将使用 pip 自动安装”和只做一个pip search portaudio
返回包装器
问题
我需要做什么才能sounddevice
在我的 Windows 环境中工作?为什么它可以在我的 shell 中工作,但在打包应用程序后却不行?
完全错误:
构建输出
- 运行 pyinstaller 构建的选定输出:
安装包:
- 请注意,
cffi
根据要求,存在 、 和sounddevice
。未列出,但我认为它包含在 中,就像文档说 (?)setuptools
portaudio
sounddevice
python - 为什么在使用 WASAPI 和 sounddevice 库录制设备时会出现“无效设备”错误?
我正在尝试编写一个脚本来录制来自 4 通道音频设备的 USB 音频。我正在使用 Python 3.7 和“sounddevice”库。编译后的代码给了我一个错误。
使用以下代码,我找到了我要记录的设备的设备号:
这将打印出所有音频设备的列表。我要录制的是设备 20:
然后我使用此代码从该设备记录:
但是,每当我尝试从中录制音频时,都会出现此错误:
我在 2 通道 MME 设备和 2 通道 Windows DirectSound 设备上测试了此代码。它适用于他们两个。但它不适用于我的 4 通道 WASAPI 设备。
python-3.x - Sounddevice:未找到 portaudio 库
很像这个问题:PortAudio library not found by sounddevice during runtime [WINDOWS]。
python 脚本工作得很好,但是当我使用 pyinstaller 将它打包成可执行程序时,它返回了OSError: PortAudio library not found
. 所以我按照上面提供的链接的答案去寻找portaudio.dll。
我能找到的唯一与 portaudio 相关的 .dll 文件libportaudio64bit.dll
是最初位于E:\python\Lib\site-packages\_sounddevice_data\portaudio-binaries
.
[问题]:我不确定这是否是我需要的。如果是,我应该把它放在哪里?
[注意]:我尝试将它放入\env\Lib\site-packages
文件夹并重新打包它。仍然返回OSError。