问题标签 [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.
objective-c - Speex 编码/解码导致嘶嘶声(Objective-c)
当我绕过 speex 编码/解码步骤时,原始音频输出是正确的。我想要的是对从我的录制回调中捕获的整个缓冲区进行编码、解码并发送回播放循环。我不确定的几项是:
- 为 enc_buffer 和 dec_buffer 分配什么大小
- 在 speex_bits_read_from(SpeexBits* bits,char* bytes,int len) 中指定什么长度
- 在 int speex_bits_write(SpeexBits* bits,char* bytes,int max_len) 中指定的最大大小
这是我的 speex 编解码器初始化:
我的编码/解码方法:
他们是这样称呼的:
其中“bufferList”是从我的录制/播放回调返回的。有人可以验证我正在正确填充缓冲区吗?我在这里看到了一个类似的问题,但看不到我的代码中哪里可能做错了:
编码/解码产生的噪音是颗粒状的静态嘶嘶声,但它不是完全随机的信息——当我对着麦克风吹气时,我可以在噪音后面听到它。
任何帮助解决这个问题将不胜感激。一旦我把所有事情都整理好,我可能最终会写博客,似乎很多人在设置这个编解码器时遇到了各种琐碎的问题。
android - speex 和 jspeex 解码
Jspeex 有一种解码方法,如下所示:
作为输入,我给出了一个长度不确定的字节数组,但方法只是正确地填充了我的输出缓冲区。换句话说,我给出了一堆彼此相邻的帧,但是解码器可以处理连续的帧。但是有些机器速度很慢,所以我决定将 speex 与 jni 包装器一起使用。同样,我们有一个方法如下所示:
以上 jni 包装的解码方法只接受单帧。所以我的问题是我们如何使用 jni 包装的 speex 对 jspeex 做完全相同的事情。
PS:我试图将连续帧分成单独的帧,但连续帧的长度与 number_of_frames X length_of_a_frame 不匹配。
对不起我的真棒(?)英语,提前谢谢。
c - 如果 T 的第一个字段是 C,是否将 struct T* 转换为 struct C* 未定义的行为?
在尝试调试我使用 Speex 时遇到的问题时,我注意到它(不仅是 Speex,还有一些示例代码)执行以下操作:
- 从初始化函数返回指向 EncState 的指针
- 将该指针转换为 void 指针
- 存储空指针
- (别处)
- 将 void 指针转换为指向 SpeexMode 的指针
- 取消引用指针
碰巧 的定义以EncState
type 的字段开头SpeexMode *
,因此指向第一个字段的指针和指向 struct 的指针的整数值恰好相同。取消引用恰好在运行时起作用。
但是......语言真的允许这样做吗?如果编译它,编译器是否可以自由地做它想做的任何事情?如果 C`,将结构T*
转换为结构C*
未定义的行为T''s first field is a
?
ios - 在 xCode for iOS 上编译 Speex
我正在尝试为 iPhone 应用程序编译和使用 Speex 编解码器。我使用了几个教程: http ://codeforfun.wordpress.com/2010/04/29/compile-speex-for-iphone/
还尝试用这个建议编译它: Cross -Compiling speex library for ios
并将“SDKROOT”更改为“iphoneos”
所有这些都让我遇到了一个问题,即我无法真正创建二进制文件。我想我什么都试过了!我认为问题在于缺少makefile。我已将原始 Makefile.in 更改为“makefile”,现在 xCode 可以找到它,但它仍然无法正常工作。
我得到的错误是:d:警告:找不到选项'-L ... / CSource / libspeex / .libs'的目录架构armv7s的未定义符号:“_speex_nb_mode”,引用自:MainViewController中的-[MainViewController viewDidLoad]。 ○
请帮忙!
ogg - 在 iOS 上使用 Ogg 打包 Speex
我正在使用 libogg 和 libogg,我已成功将这些库添加到我的 iPhone xCode 项目中,并使用 Speex 对我的声音进行编码。问题是我无法弄清楚如何用 ogg 打包这些音频数据包。有人知道这种数据包的外观或有我可以使用的参考代码吗?
我知道在 Java 中它非常简单(你有一个专门的功能)但在 iOS 上却不是。请帮忙。
c# - .Wav Speex 标头内容问题
我已经安装了 Speex Voice ACM Codec 1.0.1.1 编解码器,它们似乎有不同的 .wav 标头,然后是此 NSpeex(C#) 包中的 C# 代码中描述的标头。
我可以读取使用“Speex Voice ACM Codec 1.0.1.1”创建的 .wav 文件,并成功解码它们,但是当我创建 .wav 文件时,“Speex Voice ACM Codec 1.0.1.1”无法识别我的标题。我检查了十六进制编辑器,“Speex Voice ACM Codec 1.0.1.1”创建的 .wav 标头中有一些字节,我没有创建,它们与 NSpeex.PcmWaveWriter 类中的不同。
所以,我同意这部分:
但是,其余的不是 NSpeex.PcmWaveWriter 类的代码。
在十六进制编辑器中,我在“Speex Voice ACM Codec 1.0.1.1”创建的 .wav 文件中看到(在上述部分之后):
但我不知道那是什么以及如何创建 .wav 标头以与“Speex Voice ACM Codec 1.0.1.1”兼容。同样,我可以解码他们的 .wav 文件,并创建我可以解码的 .wav 文件,但该编解码器似乎无法识别我的 .wav 标头。
Speex 应该是“开源”的,有人可以透露 .wav (speex) 标头中的秘密字节吗?
flash - flash 是否支持 Opus 编解码器?
我用谷歌搜索了这个,但没有得到明确的答案。
据我了解,.FLV 容器格式目前支持以下音频格式:
MP3、ADPCM、线性 PCM、Nellymoser、Speex、AAC、G.711(保留供内部使用)
但是 Speex 已过时,已被提供的 Opus 取代Speex 的所有功能加上额外的 SILK 算法实现等
那么 Flash 支持 OPUS 吗?
android - 回声消除:麦克风作为语音输入,MP3 作为输出
我目前正在开发一个应用程序,它正在观察麦克风的输入,但同时必须能够通过扬声器播放特定的 MP3 歌曲。我目前面临的问题是,当我播放 MP3 时,麦克风当然会识别到这一点,并且由于音量增加,会返回更多数据。
我需要取消 MP3 的回声,我尝试过 Android 自己的 AcousticEchoCanceller,但它不起作用,因为它甚至在我的 Nexus 7 和我的 Nexus 4 上都不可用。现在我来 speex,但我不是真的熟悉 NDK,但我不知道如何将其嵌入到我现有的代码中。
所以我发现了这个:https ://github.com/mutantbob/ndk-speex NDK-Speex with Java wrapper classes,但不幸的是这些类似乎只用于 Speex 格式的编码和解码声音,这似乎不会取消任何回声。我已经阅读了有关扩展 Java 包装器以添加回声消除的信息,但我找不到正确的起点,有人能指出我正确的方向吗?还是我应该采取不同的途径实现我的目标?
javascript - 在 JavaScript 中将音频从 getUserMedia() 编码为 .OGG
所以我有这个我正在处理的 HTML5 项目,我正在将 iOS 应用程序转换为基于 Web 的应用程序。伴随应用程序内容创建的一部分是录音,我试图在不使用插件的情况下在 JavaScript 中复制它;到目前为止,我已经能够从 getUserMedia() 录制音频,并通过 Recorder.js 将其转换为 WAV。
然而,现在我有点迷路了。我目前有两个单独的视图,一个用于录制内容,一个用于回放,但我不知道如何将从 Recorder.js 导出的音频放入我的 JSON 有效负载中进行播放(我想避免强制服务器上传或客户端下载)。
所以我想我的具体问题是,我如何获取 Recorder.js 制作的 blob 对象(我几乎一无所知)并将其转换为原始数据,或者以某种方式通过 JSON 发送文件?
更新:我决定尝试使用 speex.js 工具 ( https://github.com/jpemartins/speex.js ) 来编码 .OGG(比 .WAV 小得多)。但是,我不确定如何使用它。演示页面似乎对我不起作用,并且尝试调用.encode()
Speex 对象的函数似乎并没有真正对数据进行编码,我只在对象字段中得到零。有谁知道我可以学习如何使用这种工具的任何资源?
ios - 我在哪里可以找到适用于 iOS 的预编译 Ogg、Speex 和 Vorbis 库?
我需要用 i386、armv7 和 armv7s(最难找到)编译它们。
我在这里找到了只有 Speex 的编译(我还没有测试过):http: //iosdeveloperzone.com/2013/04/09/precompiled-speex-libraries-for-ios/
有谁知道我在哪里可以得到它或如何得到它?