问题标签 [pyaudio]
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.
portaudio - 回拨电话之间的时间?
我有一个主要使用 PyAudio 的实验室项目,为了进一步了解它的工作方式,我做了一些测量,在这种情况下是回调之间的时间(使用回调模式)。
我计时了,得到了一个有趣的结果
(@256 块大小,44.1k fs):0.0099701;0.0000365;0.0000201;0.0201579
这种模式一直持续下去。
在两个较长的调用之间,我们有两个较短的调用,有时较长的调用更短(请注意,除了时间回调之外,我在程序中没有做任何其他事情)。
如果我们平均下来,我们会得到我们想要的回调时间:
1/44100 * 256(约5.8ms)
这是我的可视化测量:
那么有人可以解释一下引擎盖下到底发生了什么吗?
python - 使用 PyAudio 在 Python 中进行环回('你听到的')录音
再会,
我正在尝试使用 PyAudio 用 Python 记录我的扬声器输出。目前,我能够记录我的麦克风输入并将其发送给“听众”。我现在要做的是创建一个环回,所以它会记录我的扬声器的输出。我可以使用 Windows 中的“立体声混音”来做到这一点,但由于这需要跨平台,所以应该有另一种方法来做到这一点。
有人对我如何实现这一目标有一些建议吗?
这是我当前用于记录输入流的代码。
任何帮助将不胜感激!
python - 使用 pyaudio 录制 24 位音频
我需要录制 24 位音频(因为它是音频数字化的存档标准)。但是,wave 库似乎只能达到 16 位。
看起来 pyaudio 可以处理 24 位音频,但我发现的每个示例都显示 pyaudio 使用 wave 库,这意味着它必须保存 16 位。
是否可以使用 pyaudio 录制和播放 24 位音频?
python - Pyaudio 支持所有格式,尽管声卡不支持
我正在尝试确定声卡是否支持格式(速率/深度)。我发现无论指定的速率和深度如何,pyaudio 都会返回 True。如何仅显示声卡本机支持的模式?我已经在 windows、mac、ubuntu、fedora 上复制了这个。我已经包含了一个有效的代码片段来帮助解决这个问题。
python - 未绑定方法 get_sample_size() :保存 wav 文件时
我正在尝试保存一个 wav 文件。data 是一个 numpy 数组,数据类型为int16
. 当我运行我的代码时,它给了我以下错误,我不明白。
我的代码:
我的配置
大图是:
我从 wav 文件中提取了数据。我在数据数组的末尾附加图像位。现在以 wav 格式保存数据。
python - Raspberry Pi 上的 PyAudio 分段错误
我在我的 Raspberry Pi 上安装了 PyAudio,没有任何问题,但我无法运行任何示例测试。如果我运行它们中的任何一个,应用程序只会“暂停”一段时间,然后它会因分段错误而退出。
我剥离了代码,发现这两行代码产生了相同的结果:
您知道可能导致此错误的原因吗?
我认为这可能是声卡配置错误,但我测试了从声卡录制和播放声音:
它按预期工作。
谢谢你。
python - 使用声音文件作为 pyaudio 输入设备
使用 PyAudio 打开来自物理声音输入设备的输入流是相当简单的。
我想知道是否有办法将现有的声音文件作为流打开,它与声音设备流具有相同的属性?
代替
我想做
问候,托斯滕
python - 带缓冲的多处理生产者消费者音频播放器
我需要实现可以处理抖动的音频播放器。所以我需要缓冲,因此我需要最小的缓冲区大小并知道当时缓冲区中有多少元素。
但是在 python Queue qsize() 方法中没有实现。我能做些什么呢?
timing - pyaudio 将样本与系统时钟相关联?
我有一个应用程序,其中我有一些其他信号参考系统时钟(time.time()
),我想记录音频输入并找出它相对于其他信号发生的时间。
起初我尝试使用回调 API,认为当数据从声卡中可用时它们会立即发生。您会期望回调定期发生,其差异大致为样本周期 * 样本数,但正如其他人所指出的那样,情况并非如此。
我还尝试了阻塞 API,认为它可能会在数据首次可用时返回,但这似乎有同样的问题。中还有 adc 时钟的概念portaudio
,它在回调模式下给出current_time
并input_buffer_adc_time
相对于其他一些时钟,这可能会提供我需要的信息。但是这两个值通常都是零(Ubuntu 14 带有我主板的默认麦克风输入,不确定它使用的是哪个较低级别的 API),其中一个偶尔是非零的。
portaudio
如果在 中无法实现,我愿意直接使用pyaudio
,但无论如何我只需要能够弄清楚样本(不是特定样本,任何都可以)以time.time()
单位(posix 纪元时间)到 100 微秒发生或更好。似乎pyaudio
隐藏了很多选项portaudio
。
我还应该注意,这个时间安排有两个组成部分。我最感兴趣的是长期组件,例如,如果我记录一个事件,然后一个小时后记录另一个事件,根据系统时钟,我知道这两个事件相隔多远。也可能存在短期延迟效应,因此我得到的系统时间在实际事件发生后始终为 1 毫秒。一旦我让长期部分工作,我可以直接测量延迟。
编辑:我发现这篇论文讨论了这个问题。 听起来current_time
和input_buffer_adc_time
是这样做的首选方式,所以也许我应该做的事情是弄清楚如何使用实际上使这些信息有效的不同底层 API?