以编程方式将G729音频转换为WAV PCM

问题描述:

我有G729编码的音频文件。我需要以编程方式将它们转换为WAV PCM(16位8kHz单声道)流程中的其他功能。我有一个可执行文件,将为我做到这一点。但是每次我转换时产生这个外部进程对资源来说太重了。特别是如果我需要并行完成其中的很多。 寻找一个.NET库或代码,让我在我的过程中调用它。以编程方式将G729音频转换为WAV PCM

请点击此链接:The VoiceAge Open G.729 Implementation。他们还提供G729解码器和编码用C写的

+0

有没有人知道你在哪里可以找到这个副本?我一直在看网站几个月,他们的代码链接已经关闭。 http://www.voiceage.com/media/G729.zip – thaspius 2013-04-03 13:43:55

根据*,G.729包含多项专利并获得Sipra许可,所以您可能不会有太多的运气找到合适的文章。除非你解码大量非常小的文件,否则产生一个新进程的代价不应该比解码的代价大,所以我会说使用你的可执行文件。

就资源而言,是的,与使用线程相比,产卵过程需要更多的资源。但是,这应该并不重要,只要你在你的机器中有核心就可以产生尽可能多的进程。产生更多的流程只会浪费资源,并不会带来任何额外的并行性。

*说:“G.729包含多家公司的专利,并且由Sipro许可(http://www.sipro.com/)。在许多国家,使用G.729可能需要许可费和/或专利使用费。

但我想你已经在你的应用程序中考虑过了。

如果你绝对必须在进程中,一个解决方案(不是说它是最好的)可以使用LGPL下的LibAVCodec。

在免费使用的参考实现:http://www.readytechnology.co.uk/open/ipp-codecs-g729-g723.1/

注意别人提出的专利问题,但事实上,参考实现只能运行在英特尔处理器和您需要向英特尔支付费用,才能使用其IPP库作为商业产品的一部分分发代码。

如果您的系统上有G729的ACM编解码器,那么您可以使用NAudio将其转换为PCM。请使用NAudio附带的NAudioDemo应用程序,它将向您显示您系统上可用的ACM编解码器,并使用它们解码文件。

当谈到g729转换器时,首先提示我的是ITU G729-A标准。一种相当麻烦的方法是先将g729转换为pcm,然后在wav文件的前面添加一个wav标头。该构造一个.wav从国际电联官方g729a(并且正式不支持多线程...)lib高度参与这个想法,我想你必须考虑并发性以及如何在g729a库中用一堆静态变量进行正确编程。我曾经涉及一个像OP descibes这样的小项目,我基本上将巨大的g729文件分割成g729块,并以合理的并发编程方式单独解码它们...

如果您只想查看所需的编解码器文件,然后去GSopt并下载最新版本的i t(你可以click here直接打开下载页面)。

下载后,解压缩文件打开的文件夹并运行EXE,现在从浏览按钮中选择文件,文件加载后将显示其所有信息。(如果文件没有在browse dialogue box中显示,只需从browse file dialogue中选择All Files(*.*)