问题标签 [speex]

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 回答
1969 浏览

apache-flex - 使用本机库的 Flash/Flex 中的声学回声消除

我必须在 Flex 视频会议应用程序中实现 AEC。我知道它不能直接在 Flash 中完成。我正在考虑编写一个在 Flex 之外执行 AEC 的本机应用程序或库。

据我所知,Adobe Connect Pro 正在使用一些执行 AEC 的外部库。我想按照这个方向做一些类似的事情。

在我的脑海里有两种可能:

1) 独立定制AEC过滤器。

自定义 AEC 过滤器将在后台运行,并将处理来自麦克风和声卡的所有数据并执行 AEC。回声信号将是要播放但在临时缓冲区中延迟的数据,如下所示:aec(input, delay_input, output)。

我不知道它是否有效,因为 Flash 麦克风输入不知道我的自定义输入,扬声器也是如此。但是在系统级别具有 AEC 的 WinXP/Vista 中是如何完成的呢?

2) AEC 过滤器与 Flex 的 NativeProcess 交互。

过滤器将由 NativeProcess 运行。Flex 应用程序会将麦克风声音、接收到的远程语音传递给过滤器并返回去除回声的语音,然后 Flex 会将其输出到扬声器。会正确吗?

如果 2) 方法没问题,那么我有以下问题:

  1. 我将从 Speex 的 AEC 开始,那么从 Flex 传递的数据应该采用什么格式?如果我选择 Flex Speex 编解码器进行声音压缩,我可以将它直接传递到 speex 库吗?
  2. 表现会好吗?我认为每个声音帧缓冲区调用 NativeProcess 库可能会很耗时。
  3. 为什么 AS3 中没有可以直接从 Flash 使用的 AEC 实现?据我所知,要进行 AEC,您必须拥有回声数据和麦克风数据(在 Flash 10 中,可以直接访问麦克风)。肯定有一些事情正在停止这样做,但我还不知道它是什么:)
  4. 除了 Speex 之外,我可以使用一些免费的 AEC 实现或 DSP 库吗?

PS 我现在是 Flash/Flex 专家,对于一些愚蠢的问题,我深表歉意 :)

在此先感谢您的帮助, ternyk

0 投票
1 回答
1404 浏览

python - Python 中的 Speex

如何使用Speex在 python 中编码/解码?有包装纸吗?我找到了一个旧项目pySpeex,但它现在已经过时了(需要 Python 2.2)。

0 投票
1 回答
2153 浏览

apache-flex - Flash/Flex 中 Speex 编解码器的 API

通过 AIR 2 允许访问麦克风数据,可以在本地保存/处理音频。Adobe 提供了一个 WAVWriter 示例,但是否有任何 API 访问 Speex 编解码器?

0 投票
1 回答
610 浏览

python - python帮助的语音通信!

我目前正在尝试用 python 编写语音聊天程序。欢迎所有提示/技巧来做到这一点。

到目前为止,我发现 pyAudio 是 PortAudio 的包装器。所以我玩弄了它,并从我的麦克风获得了一个输入流,以回放到我的扬声器。当然只有RAW。

但是我不能通过网络发送 RAW 数据(由于大小 duh),所以我正在寻找一种对其进行编码的方法。我在网上搜索并偶然发现了这个用于 python的 speex-wrapper 。这似乎是真的,相信我,确实如此。

您在 pyAudio 中看到,您可以设置要从输入音频缓冲区中获取的块的大小,在链接上的示例代码中,它设置为 320。然后当它被编码时,每个块大约 40 个字节的数据,我猜这是可以接受的。现在解决问题。

我启动了一个示例程序,它只获取输入流,对块进行编码,解码并播放它们(由于测试不通过网络发送)。如果我只是让我的计算机空闲并运行这个程序,它会很好用,但是一旦我做某事,即启动 Firefox 或其他东西,音频输入缓冲区就会全部堵塞!它只是增长然后它全部崩溃并在缓冲区上给我一个溢出错误..

好的,那为什么我只占用 320 字节的流?我可以只占用 1024 字节之类的东西,这样可以减轻缓冲区的压力。但。如果我给 speex 1024 字节的数据进行编码/解码,它要么崩溃,要么说那对于它的缓冲区来说太大了。或者它对其进行编码/解码,但声音非常嘈杂且“断断续续”,就好像它只编码了 1024 块的一小部分,其余的是静态噪声。所以声音听起来像直升机,哈哈。

我做了一些研究,似乎 speex 一次只能转换 320 字节的数据,而且宽带可以转换 640 字节。但这是标准吗?我该如何解决这个问题?我应该如何构建我的程序以使用 speex?我可以使用一个中间缓冲区,它将所有可用数据从缓冲区中读取,然后将其分成 320 位并对其进行编码/解码。但这需要更长的时间,而且似乎是一个非常糟糕的问题解决方案。

因为据我所知,没有其他 Python 编码器可以对音频进行编码,因此它可以通过网络以可接受的小包发送,或者?我已经在谷歌上搜索了三天。

还有这个pyMedia库,我不知道这种软件转换成mp3/ogg是否好。

在此先感谢您阅读本文,希望任何人都可以帮助我!(:

0 投票
1 回答
3928 浏览

java - 在 Java 中组合多个声音流

我有许多以 PCM(PCM_SIGNED 8000.0 Hz,16 位,单声道,2 字节/帧,little-endian)编码的语音流,我想通过网络发送。为了节省带宽,我目前使用 JSpeex 对流进行编码。但是,为了节省更多带宽,我想(如果可能)在使用 JSpeex 编码之前将这些多个流组合成一个流。我的 DSP 知识严重缺乏,我想知道如何在 Java 中组合流?

0 投票
4 回答
2408 浏览

flash - Adobe flash : 从文件播放 Speex 音频

我非常努力地寻找一个示例来展示如何在 Flash 中播放 speex 编码的音频。我尝试了以下代码 -

可在 -

http://www.adobe.com/devnet/flashplayer/articles/hd_video_flash_player_03.html _

我用 .flv 视频和 AAC 编码的音频文件测试了上面的代码,它工作得很好。但是当我尝试 stream_ns.play("sample.spx") 我得到一个流未找到异常。

我是否为 speex 音频使用了错误的容器 (.spx)。是否支持从文件播放 speex 音频?请帮忙!

(如果你能提供一个例子,那就太好了。)

0 投票
1 回答
138 浏览

qt - 为 symbian 编译 libspeex

我想在我的诺基亚 Qt 应用程序中使用 libspeex 库。我如何为此目的编译 speex,以及如何将它添加到我的 qt 项目中?

0 投票
0 回答
671 浏览

c++ - 链接 c 库错误。COMDAT 符号“.exc$T”与节名“.rdata”不匹配

我使用碳化物 C++ 为 symbian 编译了 speex 库。编译以零错误/警告完成。

我在我的 QT 应用程序中使用已编译的库。编译 QT 应用程序会出现以下错误 -

警告:COMDAT 符号 '.exc$T' 与节名 '.rdata' 不匹配(它确实是一个错误,而不是警告。单词 warning 只是错误字符串的一部分。)

我在 cygwin 上执行了“nm speex.lib”。在输出中,我可以看到相同的字符串 - 警告:COMDAT 符号“.exc$T”与节名“.rdata”不匹配。(所以我猜这是库中的一个警告,当与 QT 一起使用时它会变成一个错误)。

我不明白这个错误的含义。谷歌搜索不是很有帮助!请帮忙!

0 投票
1 回答
1966 浏览

java - 帮助创建 Speex Voip 服务器和客户端

我正在尝试创建一个 Speex Voip 客户端和服务器。我已经掌握了基础知识,并且通过 UDP 在本地计算机上工作正常。我正在使用 JSpeex 来实现可移植性。我正在寻找有关创建客户端和服务器的提示。你怎么认为?

JSpeex 库每次调用只能编码 320 字节,因此发送到服务器的数据包很小(在我的情况下约为 244 字节)。客户端在发送之前等待大约 1 或 2 KB 的编码数据准备好,还是让服务器处理缓冲数据包会更好吗?

此外,关于如何实现缓冲数据的任何帮助都会很好。

我有一些在本地机器上工作的东西。

客户:

服务器:

0 投票
2 回答
1653 浏览

command-line - 如何从 FLV 中提取音频?

我需要从使用 FMS 录制的 FLV 文件中提取音频。我使用了在我的 Flash 应用程序中编码的 SPEEX,它将音频和视频流式传输到 FMS。

我曾尝试使用 FFMPEG,但没有成功。这是我的 FLV 的 -i 输出:

FFmpeg 版本 SVN-rUNKNOWN,版权所有 (c) 2000-2007 Fabrice Bellard 等人。配置: --enable-gpl --enable-pp --enable-swscaler --enable-pthreads --enable-libvorbis --enable-libtheora --enable-libogg --enable-libgsm --enable-dc1394 --disable -debug --enable-shared --prefix=/usr libavutil 版本:1d.49.3.0 libavcodec 版本:1d.51.38.0 libavformat 版本:1d.51.10.0 构建于 2010 年 4 月 23 日 15:11:13,gcc: 4.2.4 (Ubuntu 4.2.4-1ubuntu3) [flv @ 0xb7ed7110]不支持的音频编解码器 (b) [flv @ 0xb7ed7110]不支持的音频编解码器 (b) 输入 #0,flv,来自“m.flv”:持续时间:00: 00:05.0,开始:0.000000,比特率:N/A 流#0.0:视频:flv,yuv420p,288x203,1000.00 fps(r) 流#0.1:音频:0x000b,11025 Hz,单声道

我需要一个命令行实用程序,因为这将从服务器执行。

提前致谢。