问题标签 [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.

0 投票
1 回答
888 浏览

python - 如何使用 Python 一次播放两个声音?

我正在寻找一个循环系统(受Marc Rebillet的启发,看看他),并且正在努力让 2 种声音自己播放。

我已经开始使用 sounddevice,因为它是我发现的第一个音频模块,但我不确定是否有其他更好的音频模块。

这段代码最终只播放了 recordTwo,并没有将它们叠加在一起。同样,我希望能够同时播放多个声音。感谢您的任何帮助!

0 投票
0 回答
423 浏览

python - 在没有输入的情况下使用 Python 同时录制 3 个麦克风

我必须同时录制 3 个麦克风,并且它们之间的延迟尽可能短。这将允许我计算麦克风之间声音的TDOA,以便我可以精确定位源位置。

但是,我不断收到 PulseAudio 引发的输入溢出错误,这使得数据无法使用,因为麦克风捕获的该块中的帧被丢弃。

到目前为止,我已经尝试通过更改块大小来解决这个问题,甚至在某一时刻将其设置为我的速率的 2 倍。最初我使用的是PyAudio,但我的代码的当前版本运行sounddevice

为了同时开始所有三个录制,我一直在使用多处理,每个进程都包含自己的输入流,但即使在一个进程中运行所有 3 个流也会导致溢出。

我也尝试过在有或没有回调的情况下运行流,但这没有任何区别。与将数据写入内存或直接写入磁盘相同。

理想情况下,我希望不再有输入溢出,但此时我完全不知道如何防止它们。我是否应该切换到 ALSA 而不是 PulseAudio?

我真的很感激我能得到的任何帮助:)

0 投票
0 回答
413 浏览

python - 如何在 python 中调整一些音频?

我希望在sample不改变音频速度的情况下将变量中包含的音频音高转换到特定频率。

这是我到目前为止的代码。

我该怎么做呢?

提前致谢。

0 投票
1 回答
607 浏览

python - 如何在 sounddevice 中停止 stream.write 函数

是否可以在缓冲区完全消耗之前停止 stream.write 函数?当我尝试这样做时,声音停止了,但 stream.write 函数永远不会返回。

这是一个工作示例,说明我想如何使用一个小类来播放纯音而不阻塞主线程。

我可以播放给定持续时间的声音,但是如果我使用stream.close()该函数手动停止流,则不会返回(print('end')消息永远不会显示,线程也不会完成)

我必须改用回调吗?在那种情况下,我应该如何用 numpy 数组填充缓冲区?我阅读了文档中的代码示例,但我不知道该怎么做。

0 投票
1 回答
37 浏览

python - 如何将相应的样本添加在一起?

假设 x 有三个样本:2、3、4 y 有四个样本:5、6、7、8 在编码方面,我如何添加这些样本以获得 7、9、11、8

0 投票
1 回答
2856 浏览

python - 使用 Python 录制或播放音频无法在 Mac 上运行:没有错误和没有声音

我正在尝试仅使用内置麦克风和扬声器在 Mac(Catalina) 上的 Python 3.7 上使用音频。我的问题是,对于我尝试过的任何代码,在录制时我什么都没有收到,而在播放声音时什么也没有。我尝试了这个问题的答案:首先我尝试了这样的 PyAudio:

这给我一个无声的文件。

然后我尝试使用 SoundDevice:

Wich 返回一个用零填充的数组:Plot 的屏幕截图。两者都没有引起任何错误或警告。

之后我尝试播放 440 Hz 的简单 Sin-Wave,扬声器保持沉默。

相同的代码,在我朋友的 mac 上运行没有问题。麦克风和扬声器也工作正常。在系统偏好设置中,我允许每个应用程序使用麦克风。

这个似乎也有类似的问题。也试过这段代码没有结果。:(

我不知道我还能尝试什么来解决这个问题。

0 投票
0 回答
160 浏览

python - 我们可以使用 python yield 并为 .wav 格式的音频数据创建一个生成器对象并将它们取回吗?

我想将我的数据(音频)从我的电脑流式传输到服务器。在此过程中,我最终将文件保存在服务器上。我想要一些关于如何使用流式传输到服务器的数据而不将数据保存在服务器上的建议。我开始了解 python 生成器。我在网上看过很多教程,但最后都是用列表和其他数据处理数据。我没有找到与此相关的任何内容。如果您能在这方面帮助我,我将不胜感激。

0 投票
0 回答
1533 浏览

python - 在 Python 中检测音频流中的噪声

我的目标是能够使用 Python 检测通过 PC 扬声器发出的特定噪音。这意味着以下内容,在伪代码中:

  1. 声音正在通过扬声器播放,例如游戏等应用程序
  2. 我的“要检测的音频”声音发生了,我想检测到它并采取行动

例如,我想检测的特定声音可以在这里找到

如果我把它分解,我相信我需要两件事:

  1. 一种对正在流式传输到音频设备的音频进行采样的方法——也许基于此?或潜在的声音设备 - 但我无法通过查看他们的 api来确定如何完成这项工作?
  2. 一种将每个样本与我的“要检测的音频”声音文件进行比较的方法。

检测不需要精确 - 它只需要接近。比如会有很多其他的噪音同时发生,所以它更能在各种声音的音频流中检测到“要检测的音频”的足迹。

对此进行调查后,我发现了这篇关于 SO 的帖子以及这篇关于 Chromaprint 的有趣文章中提到的技术。Chromaprint 文章使用 fpcalc 生成指纹,但因为我的“音频检测”在 1 - 2 秒左右,fpcalc 无法生成指纹。我需要一些可以在更小的时间空间工作的东西。

我的问题是 - 有人可以帮助我解决我的问题的两个部分:

  1. 如何使用 python 对 PC 上的音频设备进行采样
  2. 我应该如何尝试这种比较(最好有一个小例子)

提前谢谢了。

0 投票
0 回答
733 浏览

python - 使用 Python 如何对通过音频环回发送到扬声器的所有音频进行采样

使用 python - 我希望能够以 2 秒的时间块对通过计算机上的输出音频设备播放的音频进行采样。

我的目标是能够使用 Python 检测通过 PC 扬声器发出的特定噪音,这是这样做的第一步。

我查看了sounddevice 文档,但似乎无法确定实现此行为的正确方法,文档似乎没有涵盖这一点。

请问有人可以帮忙吗?

看来我正在寻找某种形式的 python 中的音频回溯记录。

0 投票
0 回答
153 浏览

python - Python无法录制音频

我知道那里有类似的问题,但我还没有找到这个问题的答案。

我的(尽管不是原创的)目标是通过 Python 创建一个虚拟助手并最终在 Raspberry Pi 上运行。我从最简单的方式开始使用 Python 录制/播放音频,然后自然而然地找到pyaudio了(以及一系列其他库,speechrecognition/ sounddevices/ 等)。然而,我的问题是,我似乎连录音都做不到。

首先,我运行以下脚本以查看可用的设备:

然后,我使用设备索引来识别我0 Built-in Microphone在以下脚本中用于录制 () 的内容,该脚本应录制 3 秒剪辑并将其保存到test1.wav

然而,输出print(frames)是一个字节字符串列表,类似于:

这向我表明,python 脚本实际上从未访问过麦克风,并且仅在 3 秒内没有记录任何内容。

有人在这里有什么建议吗?任何事情都会有所帮助,现在已经坚持了 6 个多小时。我正在运行 macOS Mojave 10.14 作为仅供参考。

编辑:
我可以确认它已本地化为我在此 Mac 上的设置。我能够将完全相同的代码传输到另一台机器上并且它工作正常。关于什么可能使 python 无法访问麦克风的任何想法?