gpt4 book ai didi

c# - 在NAudio中解码GSM 6.10部件

转载 作者:行者123 更新时间:2023-12-03 00:50:06 26 4
gpt4 key购买 nike

如何在NAudio中即时解码GSM 6.10(全速率)编解码器音频字节数组?消息人士说,波形解码是一次处理的,我无法处理几个字节的波形(如果我错了,请修复我)。

我的情况是,我从服务器接收了GSM 6.10音频的字节数组,可以指定数组大小,但是如何解码并写入设备?

编辑:

我究竟做错了什么?
根据马克的解决方案,这应该可以工作,但我听到的只是声音失真:

        WaveOut waveO = new WaveOut();
BufferedWaveProvider waveP = new BufferedWaveProvider(new WaveFormat(8000, 16, 1));
waveO.Init(waveP);
waveO.Play();

INetworkChatCodec cod = new Gsm610ChatCodec();

new Thread(delegate()
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://www.nch.com.au/acm/8kgsm.wav");
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
using (Stream resStream = response.GetResponseStream())
{
if (resStream.CanRead)
{
byte[] buf = new byte[65];
int count = 0;
do
{
count = resStream.Read(buf, 0, buf.Length);
if (count != 0)
{
byte[] decoded = cod.Decode(buf, 0, count);
waveP.AddSamples(decoded, 0, decoded.Length);
Thread.Sleep(50);
}
}
while (count > 0);
}
}
}).Start();

最佳答案

您可以使用AcmStream类进行此操作,以Gsm610WaveFormat作为源格式,并以8kHz 16位单声道作为输出格式。 NAudio源代码中的网络聊天演示演示了如何进行实时解码。

关于c# - 在NAudio中解码GSM 6.10部件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22435784/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com