Преобразование 32-битной формы волны в 16-битную форму волны

Я захватывал звук, используя режим захвата шлейфа. Захваченный сигнал является 32-битным сигналом. Я изо всех сил пытаюсь преобразовать это в 16-битную форму сигнала, чтобы кодеры вроде lame могли справиться с этим (он говорит, что формат неподдерживаемых данных: 0x0003).

Я пытался переместить биты (не моя сильная сторона) в самом волновом потоке с 32 бит на 16 бит, но результат все еще звучит искаженным.

Класс Wave32To16Stream в этом случае кажется взорванным: if (sourceStream.WaveFormat.Encoding! = WaveFormatEncoding.IeeeFloat) генерирует новое ApplicationException («Поддерживается только 32-битная плавающая точка»);

В идеале я хотел бы просто записать прямо в 16 бит, разве нет способа установить битовую глубину захвата? Если нет, может ли кто-нибудь помочь мне с преобразованием волнового потока?

Пример захваченного сигнала можно найти здесь:http://dl.dropbox.com/u/454409/test.wav (10mb)

Я также согласился бы на какой-то способ кодирования этого файла в mp3 с помощью lame, я пробовал каждую перестановку параметров, которую только мог придумать, чтобы заставить ее принять файл волны. Что интересно, Audacity (который использует lame_enc для кодирования mp3s) смог создать mp3 из сигнала (но, возможно, Audacity автоматически преобразует его в 16 бит, прежде чем передать его в lame).

Ответы на вопрос(3)

Ваш ответ на вопрос