Характеристики и форматы аудио
Любой звук — это волны разных частот и амплитуд, которые распространяются в воздухе. Чтобы получить аудиофайл, звуковые волны нужно преобразовать сначала в электрические сигналы, а потом — в двоичные данные, которые умеют обрабатывать электронные устройства.
Чаще всего для оцифровки звуковых сигналов применяется импульсно-кодовая модуляция (PCM, Pulse-code Modulation).
Частота дискретизации и битовая глубина
Звуковые сигналы оцифровываются с помощью дискретизации — семплирования. Сигнал измеряется через равные промежутки времени и значение амплитуды сигнала фиксируется в момент измерения — это и есть семпл. Если сигнал замеряется 16 000 раз за секунду, частота дискретизации (sample rate) равна 16 000 Гц. Например, для телефонной связи обычно используется частота 8 000 Гц.
Если есть выбор, при распознавании лучше использовать аудио с частотой 16 000 Гц и выше, так как дискретизация с меньшей частотой может привести к потере точности распознавания — особенно если в аудио есть фоновые шумы.
После оцифровки сигналы переводятся в двоичную форму. Битовая глубина (bit depth) определяет, сколько бит отводится для хранения одного семпла.
Чем больше битовая глубина и частота дискретизации, тем точнее получившийся цифровой сигнал соответствует исходному.
Сжатие и потеря качества
Аудиофайлы могут быть сжаты для хранения и передачи. Сжатие может происходить с потерями информации (lossy) или без (lossless).
При сжатии с потерями часть данных аудиосигнала отбрасывается, и восстановить их не удастся. Не сжатое аудио наиболее приближено к исходному звуку.
Какие форматы и кодеки поддерживаются
Формат аудио — это своеобразный контейнер, в который с помощью специальной программы — кодека — записывается аудиосигнал. Для некоторых форматов кодек можно определить однозначно. Например, для формата MP3 всегда используется кодек MPEG Audio Layer III, а для FLAC могут использоваться разные кодеки.
Также можно использовать RAW-файлы, которые содержат необработанные аудиосигналы. Если аудио находится в контейнере (WAV, Ogg и так далее), перед распознаванием его нужно декодировать — кроме MP3: его можно передавать, как есть.
Метод синтеза речи возвращает RAW-файл — если нужно, запакуйте полученные семплы в нужный формат.
Как правильно указать encoding
Чтобы понять, какое значение encoding нужно указать для ваших аудиофайлов:
Посмотрите на расширение файла:
.mp3— указывайтеMPEG_AUDIO;.opus— указывайтеRAW_OPUS;.aac— указывайтеADTS_AAC.
Воспользуйтесь специальными утилитами, чтобы проверить свойства аудио. Примеры запуска утилит для файла
test.wavс выводом:Утилита
file:$ file test.wav
test.wav: RIFF (little-endian) data, WAVE audio, ITU G.711 mu-law, mono 48000 HzУтилита
sox:$ soxi test.wav
Input File : 'test.wav'
Channels : 1
Sample Rate : 48000
Precision : 14-bit
Duration : 00:00:34.31 = 1646649 samples ~ 2572.89 CDDA sectors
File Size : 1.65M
Bit Rate : 384k
Sample Encoding: 8-bit u-lawУтилита
ffprobeиз ffmpeg:ffprobe -i
Input #0, wav, from 'test.wav':
Duration: 00:00:34.31, bitrate: 384 kb/s
Stream #0:0: Audio: pcm_mulaw ([7][0][0][0] / 0x0007), 48000 Hz, 1 channels, s16, 384 kb/s