问题标签 [portaudio]

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 投票
2 回答
9311 浏览

python - Python : PortAudio + Opus 编码/解码

我正在使用 Pyaudio 从我的麦克风中捕获音频,并尝试使用 opus 编解码器对其进行编码/解码。我正在使用 SvartalF ( https://github.com/svartalf/python-opus ) 对 libopus 的绑定。

这是我的代码:

我必须输入chunk*2而不是chunk输入data.append(streamin.read(chunk*2))DECDATA LENGTH == DATA LENGTH*2,我不知道为什么。

输出:

没有编码/解码,第一个streamout.write(''.join(data))工作完美。使用编码/解码,streamout.write(decdata)有点工作,但混合了很多噼啪声。

我在这里做错了什么?

0 投票
1 回答
1084 浏览

c++ - 应该安装哪些软件包才能使用 ALSA 库?

我正在尝试创建一个用于录制的 C++ 应用程序,它使用 PortAudio 接口(我想使用 ALSA 而不是 JACK)。我已阅读并遵循 PortAudio网站中的教程。我已经安装了 libasound,但是当我编译时

它发生了这个错误:

我想我没有 ALSA 库,所以我使用 synaptic 包来安装它。但是关于ALSA的包太多了。你能建议我应该安装哪些软件包吗?

0 投票
2 回答
1292 浏览

c++ - 如何从无符号字符(8 位)缓冲区中读取短(16 位)整数

如标题所示,我需要从 char 缓冲区中读取短整数

缓冲区

这是AVFrame frame结构的一个字段,由对 ffmpeg 函数的调用填充

但是,我需要将此缓冲区读取为有符号 16 位整数的缓冲区,因为这是编解码器上下文 avctx->sample_fmt==AV_SAMPLE_FMT_S16 指示的样本格式

我尝试使用 memcpy 来执行此操作,但我没有成功获得合理的值,因此我尝试按照 StackOverflow 中一些相关问题的建议使用联合结构。我的代码如下: union CharToStruct{ uint8_t myCharArray[2]; 短期价值;} 现在的声音;

有了这个,这些值是合理的,但是当我使用 portaudio 将它写入设备时,我只会听到咔嗒声。我是否以错误的方式进行转换?你能帮我用一些更好的方法来做这个阅读吗?

非常感谢您的帮助

阿尔巴

0 投票
0 回答
1219 浏览

python - 用于 64 位 Linux 机器的 PyAudio

我在安装 PyAudio Python 模块时遇到了问题,出现错误:“请先构建并安装 PortAudio Python 绑定。”

我正在使用 Python 2.7 运行 Linux Mint 64 位,并尝试安装各种版本的 PyAudio 和 Portaudio,从源代码编译,使用 Pip,使用软件中心,卸载并重新启动 - 但没有运气。我在 32 位 Ubuntu 机器上运行它没有任何问题。

这个网站让我不再相信 PyAudio 甚至可以在 64 位机器上工作: http ://code.activestate.com/pypm/pyaudio/

我也尝试过不走运地移动图书馆,根据: http ://blog.marxy.org/2012/05/build-wspr-on-ubuntu-1204.html

我已经投入了很多时间来让它工作,并且没有比 3 天前更进一步 - 过去有没有人克服过这个问题,或者目前在 64 位机器上运行 PyAudio?

0 投票
2 回答
2447 浏览

c++ - 如何在 Windows 上有效地使用 PortAudio Pa_OpenStream()?

我在 Linux 上使用 PortAudio 编写了一个小型声音播放库。因为是小游戏,所以各种事情发生的时候都会有很多小声音。我通过调用 Pa_OpenStream() 为每个要播放的 wav 文件打开一个流。在 linux 上,这个调用平均需要 10 毫秒左右。但是在 Windows 上,这通常需要 40 到 70 毫秒。更糟糕的是,第一次通话需要 1.3 秒。然后偶尔会再次需要 1.3 秒。除了每次第一次通话都会发生这种情况外,我无法找到任何一致的关于它挂起的原因。Windows 构建实际上在 Wine 上运行良好。

我认为这与不同系统中使用的底层声音 API 的差异有关。但奇怪的是,尽管进行了广泛的搜索,但我在任何地方都没有找到任何信息。

这是我的播放功能:

0 投票
2 回答
844 浏览

c - PortAudio - 单声道工作,立体声故障?

这让我很难过;这在单声道中非常有效,但是当我将其更改为立体声时,它听起来断断续续且静态。这是一个交错问题还是什么(数据是交错的,顺便说一句)

编辑:将交错方法更改为更合乎逻辑的方法,但仍然无济于事......

0 投票
1 回答
915 浏览

c++ - 如何知道portaudio样本测试正弦波代码的频率

我想知道如何知道 portaudio 测试示例的关系以及如何获得频率。我想知道如何将特定频率发送到声卡?1. 如何知道代码发送到声卡的具体频率 2. 我如何发送 sin(2*pi*f*t) 和 sin((2*pi*f*t)-3.14) 这是一个延迟版本。这是代码。非常感谢任何帮助

}

错误:Pa_Terminate(); fprintf( stderr, "使用 portaudio 流时出错\n" ); fprintf(stderr, "错误号: %d\n", err ); fprintf(stderr, "错误信息: %s\n", Pa_GetErrorText( err ) ); 返回错误;}

0 投票
2 回答
2075 浏览

python - PyAudio stream_callback 意外参数

我目前正在开发一个涉及 Python 中麦克风输入的小项目,并且我正在使用PyAudio库(绑定 PortAudio)。当我尝试第一个“Wire”示例(阻塞)时,一切都完美无缺,但是当我尝试运行第二个示例“Wire(回调)”时,Python 说:

虽然它在绑定中正确定义。对此有什么帮助吗?

完整的代码是:

谢谢 !

0 投票
2 回答
2289 浏览

portaudio - 在 PortAudio 中配置多个设备:无效设备错误

此查询与 Portaudio 框架有关。在我问这个问题之前有一点背景知识:我正在开发 PortAudio 中的一个应用程序,以通过多声道(=8)设备输出音频。但是,我正在使用的设备并没有将自己暴露为单个 8 通道设备,而是在我的设备列表中显示为 4 个立体声设备。在寻找处理此问题的方法时,我了解到 PortAudio 中的 WinMME 支持多种设备。

现在,我浏览了相应的头文件(“pa_win_wmme.h”)并遵循了目前的建议。但是在调用 PA_OpenStream() 后,我得到了“无效设备”错误(错误号 -9996)。在上面提到的头文件中,他们实际上已经指定了在配置多个设备时使用的正确参数以避免此错误,但尽管遵循它们,我仍然得到错误。所以我想知道是否有人遇到过类似的问题,以及我是否错过/错误地配置了任何东西。

我在下面粘贴所需的代码片段以供参考:

设备id = 3 是通过

我希望我已经把查询说得够清楚了。如果需要,将很乐意提供更多详细信息。

谢谢。

0 投票
2 回答
861 浏览

audio - 如何检测原始声音文件中的声音

我正在开发一个软件,它可以自动记录和提取我声音中的每个单词。我使用 portaudio 库来解决它。但是我一直在检测声音:我将静音的值设置为零,所以如果有一个样本为零,它必须是声音的起点或终点。但是当我运行它时,程序创建了很多单词。我认为因为我通过portaudio读取的值是原始数据,所以不能这样处理。我对吗?我该如何解决?顺便说一句,我正在用 C++ 编码:D