José Madureira Ответов: 1

Конкатенация wav fales C# (генерируется + записывается)


Good night dear!

Please, as I do to join audios being recorded 1.wav and 2.wav generated by a text for spech API (microsoft azure). I tried a code snippet below it works for two recorded audios, but for this example it does not perform the audio creation 3.wav (WaveFileWriter.CreateWaveFile16 ("3.wav", mixer);).

I believe the problem is a difference in the "bit rate" of the files, could that be? How can I fix it?



using NAudio.Wave;
using NAudio.Wave.SampleProviders;

using (var reader1 = new AudioFileReader("1"))
using (var reader2 = new AudioFileReader("2.wav"))
{
   var mixer = new MixingSampleProvider(new[] { reader1, reader2 });
   WaveFileWriter.CreateWaveFile16("3.wav", mixer);
}


Что я уже пробовал:

- Объединение Волновых Файлов С Помощью C# 2005[^]

1 Ответов

Рейтинг:
7

Luc Pattyn

WAV-файл содержит заголовок плюс множество звуковых сэмплов; заголовок содержит некоторые параметры, применимые ко всем сэмплам, включая количество каналов, количество бит на сэмпл и частоту дискретизации.

Вы можете объединять звуковые сэмплы из разных файлов до тех пор, пока информация в заголовке совпадает (за исключением длины, конечно).

Когда заголовки не совпадают, требуется некоторое преобразование. Я никогда не делал таких преобразований, однако рекомендую вам прочитать, понять и, возможно, использовать (некоторые из них) код в этой статье:

Класс файлов C# WAV, микширование звука и некоторые легкие звуковые манипуляции[^]

И вам придется следить за проблемами громкости, так как один файл намного громче другого...

:)


Garth J Lancaster

+5 - хорошая находка (ссылка) Люк

José Madureira

Большое вам спасибо за вашу помощь!

Я попытался запустить решение, но оно дало ошибку:
-Test2Speech.WAVFileAudioMergeException: "частота дискретизации аудиофайлов различается". "