Как конвертировать звук PCM в TrueSpeech с помощью NAudio - PullRequest
0 голосов
/ 22 марта 2012

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

Первое случайное исключение типа NAudio.MmExceptionпроизошло в NAudio.dll 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);
            }
        }

1 Ответ

0 голосов
/ 22 марта 2012

Это может произойти по двум причинам:

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

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

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

...