我正在尝试使用NAudio将PCM 8位8 KHz单声道文件转换为DSP TrueSpeech 1位8 kHz单声道,我收到以下错误:
NAudio.dll中出现“NAudio.MmException”类型的第一次机会异常 AcmNotPossible调用acmStreamOpen
据我所知,我可能会缺少一个中间步骤 - 任何见解都会受到赞赏。这是我正在使用的代码:
WaveFormat outWaveFormat;
outWaveFormat = new TrueSpeechWaveFormat();
Debug.Print("Sample Rate: " + outWaveFormat.SampleRate); //displays "8000"
Debug.Print("Bit Rate: " + outWaveFormat.BitsPerSample); //displays "1"
FileInfo f = new FileInfo(inputFile);
String outputFileName = this.txtDest.Text + @"\" + f.Name;
using (WaveFileReader reader = new WaveFileReader(inputFile))
{
try
{
using (WaveStream convertedStream = new WaveFormatConversionStream (outWaveFormat, reader))
{
WaveFileWriter.CreateWaveFile(outputFileName, convertedStream);
}
}
catch (Exception ex)
{
Debug.Print(ex.Message);
}
}
答案 0 :(得分:0)
可能发生的两个原因:
您没有TrueSpeech编码器。我认为Windows的新版本不再包含TrueSpeech - 它实际上已经过时了。您可以运行NAudioDemo应用程序以查看计算机上的ACM编解码器。
您的输入格式无法一步转换为目标格式。你确定你的输入是PCM。另外我希望TrueSpeech编解码器想要16位输入而不是8位。
第三个原因可能会发生,虽然我认为它不会影响TrueSpeech,而且WaveFileWriter.CreateWaveFile假定AverageBytesPerSecond是BlockAlign的精确倍数,但并非总是如此。