2010-05-18 4 views
4

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

+0

Определить «необработанное аудио» – Jake

+0

@ Jake: как насчет «raw audio» = звуковые дорожки для 99% MPEG-файлов в Интернете? – MusiGenesis

+0

Вы хотите прочитать WAV-файл с помощью C#? – anishMarokey

ответ

2

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

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

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

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

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

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

Или вы можете избежать File I/O в общем, и создайте ваш WAV-файл в качестве массива байтов в памяти в первую очередь и создайте из него MemoryStream.

+0

Большое спасибо за ваш ответ! Я читал о каноническом формате WAV и т. Д. Код/проект в вашей ссылке хорош для этого. Как насчет потока, можете ли вы рассказать о вещах? Кроме того, этот файл (если, наконец, файл, а не поток ?!) будет читаться программой распознавания голоса, поэтому заголовок и т. Д. Как-то имеет значение. – refugee

+0

@refugee: Я предполагаю, что программа распознавания голоса принимает поток в качестве входа и постоянно контролирует поток для новых данных. Вероятно, вам нужно включить более подробную информацию об этой программе и о том, какой тип ввода она ожидает. Заголовок WAV * файла * содержит значение, указывающее размер следующих данных - если программа ожидает поток с открытым концом, это не будет применяться. Возможно, ваша программа распознавания голоса ожидает первоначального вызова, который сообщает ему, в каком формате будут находиться потоковые данные, а затем фактическая потоковая передача данных. – MusiGenesis