Как создать волну STREAM из необработанных аудиосэмплов в C #? - PullRequest
4 голосов
/ 18 мая 2010

Как создать волну STREAM из необработанных аудиосэмплов в C #?

1 Ответ

2 голосов
/ 18 мая 2010

Вот хороший пример проекта для чтения и записи WAV-файлов на C #:

http://www.codeproject.com/KB/audio-video/Concatenation%5FWave%5FFiles.aspx

Предполагая, что ваш "необработанный звук" представляет собой массив коротких (2-байтовых) целых чисел, это простая задача. Заголовок файла WAV составляет 44 байта (см. Примечание), поэтому сначала вы записываете заголовок (используя код в образце), а затем данные.

Примечание: не все файлы WAV являются "каноническими", что означает, что они не все имеют 44-байтовый заголовок, за которым следуют данные. Формат WAV на самом деле является форматом RIFF, что означает, что они могут содержать все виды различных данных, а заголовок необязательно в начале. Однако ничего из этого не имеет значения, поскольку вы просто пишете WAV-файлы.

Обновление: Если программа распознавания голоса ожидает поток (в отличие от пути к файлу), легко создать MemoryStream, например:

byte[] bytes = System.IO.File.ReadAllBytes("c:\whatever.wav"); 
System.IO.MemoryStream stream = new System.IO.MemoryStream(bytes); 

Или вы можете вообще избежать Файлового ввода-вывода и создать свой WAV-файл в виде массива байтов в памяти и создать из него MemoryStream.

...