Преобразование аудиосэмплов в звуковой формат файла

Я уже несколько дней пытаюсь преобразовать огромный объем данных (около 900 МБ) в звуковой формат файла. Мне дали файл .dat, содержащий 900 миллионов семплов с плавающей точкой (по одному на строку), представляющих 90 секунд музыки на частоте 10 МГц.

Я уменьшил частоту до 40 кГц, но теперь я не знаю, как я мог слушать звук, скрытый в этих байтах. Я пишу программу на C ++ в среде Linux, но если кто-нибудь знает, как выполнить эту задачу, используя Matlab, Octave, Python, Audacity, MPlayer или любой другой инструмент, пожалуйста, откликнитесь и высказайтесь 🙂 Вклады в любом количестве очень ценятся ,

head -n 5 ~ / input.dat
-2,4167
-7.5322e-016
-0,2283
0,13581
-0,51926

0

Решение

Настройте частоту дискретизации на 44100 Гц (или 48000, 22050, 11025 или 8000 Гц)

Преобразуйте аудиосэмплы в 16-разрядные целые числа со знаком (от -32768 до +32767).

Следуйте инструкциям по синтезу файлов WAV здесь:
Синтез файлов WAV с нуля — C

1

Другие решения

формат файла WAV довольно простой.

Вам просто нужно записать 44-байтовый блок заголовка, определенный в этой ссылке, после чего ваши данные преобразуются в целые числа.

1

Если у вас есть последовательность байтов и вы хотите преобразовать ее в аудио, все, что вам нужно сделать, это написать заголовок. Поскольку вы упомянули, что вы можете использовать MatLAB, Я бы посоветовал wavwrite команда. Это просто, проверено и отлично подходит для прототипирования. Вот ссылка на документацию:
http://www.mathworks.in/help/matlab/ref/wavwrite.html

Вот некоторые шаги, которые вам, возможно, придется предпринять, если вы используете wavwrite,
— Поскольку ваши входные данные с плавающей запятой, масштабируйте данные в вашем файле в пределах диапазона [-1, 1].
— Как только данные масштабируются, подключите и вызовите вызов функции.
— Воспроизвести файл WAV, используя wavplay команда.

1

WAV допускает выборку данных с плавающей точкой и широкий диапазон частот дискретизации (от 1 Гц до 4,2 ГГц с шагом 1 Гц, если память служит).

Вам не нужно беспокоиться о преобразовании в целочисленные значения. Просто установите соответствующий заголовок WAV-файла и запишите 32-разрядные числа с плавающей точкой в ​​виде двоичных данных в разделе данных.

С точки зрения хранения, частота дискретизации 10 МГц не является проблемой для файла WAV. Воспроизведение, однако, потребует преобразования в то, что может обрабатывать аппаратное обеспечение. Верхний предел в эти дни обычно составляет 96 или 192 кГц.

1
По вопросам рекламы [email protected]