Как создать волну STREAM из необработанных образцов звука в C#?Как создать волну STREAM из необработанных звуковых образцов в C#?
ответ
Вот хороший пример проекта для чтения и записи 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
.
Большое спасибо за ваш ответ! Я читал о каноническом формате WAV и т. Д. Код/проект в вашей ссылке хорош для этого. Как насчет потока, можете ли вы рассказать о вещах? Кроме того, этот файл (если, наконец, файл, а не поток ?!) будет читаться программой распознавания голоса, поэтому заголовок и т. Д. Как-то имеет значение. – refugee
@refugee: Я предполагаю, что программа распознавания голоса принимает поток в качестве входа и постоянно контролирует поток для новых данных. Вероятно, вам нужно включить более подробную информацию об этой программе и о том, какой тип ввода она ожидает. Заголовок WAV * файла * содержит значение, указывающее размер следующих данных - если программа ожидает поток с открытым концом, это не будет применяться. Возможно, ваша программа распознавания голоса ожидает первоначального вызова, который сообщает ему, в каком формате будут находиться потоковые данные, а затем фактическая потоковая передача данных. – MusiGenesis
Определить «необработанное аудио» – Jake
@ Jake: как насчет «raw audio» = звуковые дорожки для 99% MPEG-файлов в Интернете? – MusiGenesis
Вы хотите прочитать WAV-файл с помощью C#? – anishMarokey