2016-08-28 10 views
1

Do WAV файлы разрешают любое произвольное число bitsPerSample?Создание WAV-файла с произвольными битами на выборку?

Мне не удалось заставить его работать с чем угодно, чем 8. Я не уверен, как определить blockAlign с одной стороны.

Dim ss As New Speech.Synthesis.SpeechSynthesizer 
Dim info As New Speech.AudioFormat.SpeechAudioFormatInfo(AudioFormat.EncodingFormat.Pcm, 5000, 4, 1, 2500, 1, Nothing) ' FAILS 
ss.SetOutputToWaveFile("TEST4bit.wav", info) 
ss.Speak("I am 4 bit.") 
My.Computer.Audio.Play("TEST4bit.wav") 

ответ

1

AFAIK нет, 4-битного формата PCM не неопределенных, это не имело бы большой смысл иметь 16 уровней громкости звука; качество было бы ужасным.

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

формула: blockAlign = channels * (bitsPerSample/8)

Таким образом, для моно 4-битном было бы: blockAlign = 1 * ((double)4/8) = 0.5

Обратите внимание на использование double быть необходимо не до конца с 0.

Но если вы посмотрите на определение единицы измерения блока ниже, то действительно не имеет смысла выравнивать байты 0.5, нужно будет работать на уровне бит (болезненно и бесполезно, потому что при этом качестве, -сжатый ИКМ бы просто звук попало):

wBlockAlign

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

Ссылка:

http://www-mmsp.ece.mcgill.ca/Documents/AudioFormats/WAVE/Docs/riffmci.pdf страница 59

Обход:

Если вам действительно нужно 4 бита, переключатель в формате ADPCM.

+0

Спасибо. Кажется, файлы WAV определяют «ADPCM» как допустимый вариант, однако перечисление .NET в формате AudioFormat.EncodingFormat имеет только «Pcm», «ALaw» и «ULaw». Означает ли это, что я не могу генерировать файлы ADPCM WAV из .NET? – mcu

+0

Я не думаю, что вы можете, но посмотрите на эту библиотеку: http://stackoverflow.com/questions/4917346/algorithm-for-converting-pcm-to-ima-adpcm – Aybe

+0

Итак, 'bitsPerSample' имеет быть кратным 8? – mcu

 Смежные вопросы

  • Нет связанных вопросов^_^