使用NAudio解码mu-law音频
我正在尝试使用NAudio将mu-law编码音频解码为pcm音频。 我的服务是POST原始mu-law编码的音频字节,我从NAudio得到一个错误,数据没有RIFF标题。 我需要以某种方式添加它吗? 我正在使用的代码是:
WaveFileReader reader = new WaveFileReader(tmpMemStream); using (WaveStream convertedStream = WaveFormatConversionStream.CreatePcmStream(reader)) { WaveFileWriter.CreateWaveFile(recordingsPath + "/" + outputFileName, convertedStream); }
我也将原始数据保存到磁盘并在Matlab中进行解码,这没有问题。 谢谢。
由于您只有原始的mu-law数据,因此无法在其上使用WaveFileReader。 而是创建一个inheritance自WaveStream的新类。
在其Read
方法中,从tmpMemStream返回数据。 作为WaveFormat
返回一个mu-law WaveFormat。
这是一个你可以使用的通用助手类:
public class RawSourceWaveStream : WaveStream { private Stream sourceStream; private WaveFormat waveFormat; public RawSourceWaveStream(Stream sourceStream, WaveFormat waveFormat) { this.sourceStream = sourceStream; this.waveFormat = waveFormat; } public override WaveFormat WaveFormat { get { return this.waveFormat; } } public override long Length { get { return this.sourceStream.Length; } } public override long Position { get { return this.sourceStream.Position; } set { this.sourceStream.Position = value; } } public override int Read(byte[] buffer, int offset, int count) { return sourceStream.Read(buffer, offset, count); } }
现在,您可以像以前一样继续创建转换后的文件,并将RawSourceWaveStream作为输入传递:
上述就是C#学习教程:使用NAudio解码mu-law音频分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
var waveFormat = WaveFormat.CreateMuLawFormat(8000, 1); var reader = new RawSourceWaveStream(tmpMemStream, waveFormat); using (WaveStream convertedStream = WaveFormatConversionStream.CreatePcmStream(reader)) { WaveFileWriter.CreateWaveFile(recordingsPath + "/" + outputFileName, convertedStream); }
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/998415.html