2012-03-21 3 views
0

Я пытаюсь преобразовать PCM 8 бит 8 кГц моно файл DSP TrueSpeech 1 бит 8 кГц Mono с использованием NAudio, и я получаю следующее сообщение об ошибке:Как конвертировать аудио PCM в TrueSpeech с помощью NAudio

Первый шанс исключение типа «NAudio.MmException» произошло в NAudio.dll AcmNotPossible call 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

две причины, это может быть происходит:

  1. не имеют TrueSpeech кодировщик. Я не думаю, что более новые версии Windows включают TrueSpeech - это фактически устарело. Вы можете запустить приложение NAudioDemo, чтобы узнать, какие кодеки ACM находятся на вашем компьютере.

  2. Ваш формат ввода не может преобразовать в целевой формат за один шаг. Вы уверены, что ваш вход - PCM. Также я ожидал бы, что кодек TrueSpeech хочет 16-битный вход не 8 бит.

Существует третья причина, это может произойти, хотя я не думаю, что это влияет на TrueSpeech и то, что WaveFileWriter.CreateWaveFile предполагает, что AverageBytesPerSecond является кратен BlockAlign, что не всегда верно.

+0

Большое вам спасибо за ваш ответ. Я вижу, что кодек DSP Group TrueSpeech не отображается в списке доступных кодеков. Я думал, что он установлен, но я думаю, что я установил только для чтения/воспроизведения файлов DSP, а не для их создания? Это возможно? Любые идеи, где я могу получить кодировщик? Я сделал несколько поисков в Интернете и ничего не придумал. – user1284603

Смежные вопросы