Характеристики и форматы аудио
Любой звук — это волны разных частот и амплитуд, которые распространяются в воздухе. Чтобы получить аудиофайл, звуковые волны нужно преобразовать сначала в электрические сигналы, а потом — в двоичные данные, которые умеют обрабатывать электронные устройства.
Наибольше широко для оцифровки звуковых сигналов применяется импульсно-кодовая модуляция (PCM, Pulse-code Modulation).
Частота дискретизации и битовая глубина
Звуковые сигналы оцифровываются с помощью дискретизации — семплирования. Сигнал измеряется через равные
промежутки времени, и значение амплитуды сигнала фиксируется в момент измерения — это и есть семпл. Если сигнал
замеряется 16 000 раз за секунду, частота дискретизации (sample rate) равна 16 000 Гц.
Например, для телефонной связи обычно используется частота 8 000 Гц.
Если есть выбор, при распознавании лучше использовать аудио с частотой 16 000 Гц и выше, так как дискретизация с меньшей частотой может привести к потере точности распознавания — особенно если в аудио есть фоновые шумы.
После оцифровки сигналы переводятся в двоичную форму. Битовая глубина
(bit depth) определяет, сколько бит отводится для хранения одного семпла.
Чем больше битовая глубина и частота дискретизации, тем точнее получившийся цифровой сигнал соответствует исходному.
Сжатие и потеря качества
Аудиофайлы могут быть сжаты для хранения и передачи. Сжатие может
происходить с потерями информации (lossy) или без (lossless).
При сжатии с потерями часть данных аудиосигнала отбрасывается, и восстановить их не удастся. Не сжатое аудио наиболее приближено к исходному звуку.
Какие форматы и кодеки поддерживаются
Формат аудио — это своеобразный контейнер, в который с помощью специальной программы — кодека — записывается аудиосигнал. Для некоторых форматов кодек можно определить однозначно. Например, для формата MP3 всегда используется кодек MPEG Audio Layer III, а для FLAC могут использоваться разные кодеки.
Таблица с кодеками и примеры форматов, которые поддерживаются в VoiceKit:
| Кодеки | |||||
|---|---|---|---|---|---|
| LINEAR16 (Linear PCM) | WAV, FLAC | + | + | + | + |
| ALAW (a-law) | WAV, WMA, FLAC | + | + | + | - |
| MULAW (μ-law) | WAV, FLAC | + | + | + | - |
| OPUS | Ogg, WebM, MPEG, MP4 | + | + | - | - |
| MP3 (MPEG Audio Layer III) | MP3, MPEG, MP4 | + | - | - | - |
Также можно использовать 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
Таблица с важными значениями в выводе утилит и вариантами encoding для каждого значения:
| file | sox | ffprobe | encoding |
|---|---|---|---|
| A-law | 8-bit a-law | pcm_alaw | ALAW |
| mu-law | 8-bit u-law | pcm_mulaw | MULAW |
| Microsoft PCM, 16 bit | 16-bit Signed Integer PCM | pcm_s16le (или s16be) | LINEAR16 |
| Opus audio | Opus | opus | RAW_OPUS |
| MPEG | MPEG audio (layer I, II or III) | mp3 | MPEG_AUDIO |