我有一个合勤USB Omni56K铎调制解调器并要发送和接收它的语音流,但要达到足够的质量,我可能需要实施一些“合勤ADPCM”编码,因为普通的PCM提供过小的采样率传输甚至中高质量的语音,并且它不通过USB或者工作(可能是因为即使是这种比特率过高在它的USB转串口转换器)。

在所有微软WAV相关的库尽可能多编解码器通过它理论上支持一个这个神秘的编解码器的数字,但我发现没有实现。

有人可以提供在任何语言或实现也许一些文档?编写定制μ律解码算法将不会是一个问题,我

感谢。

有帮助吗?

解决方案

我不知道合勤ADPCM从ADPCM其他口味如何变化,但各种ADPCM实现可以通过一些谷歌搜索中找到。

不过,对于我的帖子的真正原因是ADPCM为何选择。 ADPCM是自适应差分脉冲编码调制。该所传递的数据,这意味着在样本的差异,而不是当前值(为什么你看到这么大的压力,这也是)。在一个干净的环境,没有一点损失(即磁盘驱动器),这是好的。然而,在流环境中,其通常假设比特可被周期性地错位。对数据的任何损坏位,你会听到静态或其他音频文物非常迅速,通常情况下,相当厉害。

ADPCM的复位机构并非编制为主,这意味着音频问题可能要持续取决于编码器的一段延长的时间。复位代码是通常一组0(16浮现在脑海,但它已经有好几年我写我自己的端口)。

ADPCM在电话环境通常将一12位PCM样本到4比特ADPCM抽样(未坏)。至于音质...不坏的电话交谈和口头语言,但大多数人,在盲测,可以很容易地检测到质量下降。

在你最后一句,你扔一个曲线球进的问题。你开始提muLaw。 muLaw是PCM实现,需要一个12位样本,并使用对数标度为8位样本转换它。这是TDM(电话)典型的压缩机制在北美networkworks(世界上大多数国家的其余部分使用了类似的算法称为A-规则)。

所以,我很困惑什么你实际上是试图找到。

您也提到的Microsft和WAV实现。你可能知道,但为了以防万一,那WAV只是围绕着提供格式,采样信息,渠道,规模和其他有用信息的音频数据的包装。无WAV,AU或参与其他包装,muLaw和ADPCM通常呈现为原始数据。

另外一个尖端如果要实现ADPCM。正如我所指出的,它们使用4个比特来表示一个12位样本。他们通过双方具有乘数表摆脱这一点。您的基于4比特值的表的变化位置(换言之,该值是针对一个步长大小既多个和用于找出新的步长)。我见过各种算法使用略有不同的表(不知道为什么,但你通常看到的发送和接收信号,慢慢地偏离了偏置)。一位上了年纪,流行的声音包是比我通常从电话硬件厂商锯不同。

和,对于更无用琐事,有ADPCM的多种口味。方差涉及表,源样本规模和目的采样大小,但我从来没有必要与他们合作。只是记录的口味,当我做了我上网搜索规范在电话中使用的各种音频格式,我找到了。

其他提示

通过ffmpeg -f u16le -i - -f wav -acodec adpcm_ms -配管的PCM将可能的工作。

http://ffmpeg.org/

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top