• Авторизация в API
  • Распознавание речи
    • gRPC API
    • Как использовать
  • Синтез речи
    • gRPC API
    • Как использовать
  • Отложенное распознавание речи из длинных аудио
    • gRPC API
    • API загрузки файлов
  • Характеристики и форматы аудио

Характеристики и форматы аудио

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

Любой звук — это волны разных частот и амплитуд, которые распространяются в воздухе. Чтобы получить аудиофайл, звуковые волны нужно преобразовать сначала в электрические сигналы, а потом — в двоичные данные, которые умеют обрабатывать электронные устройства. Наиболее широко для оцифровки звуковых сигналов применяется импульсно-кодовая модуляция (PCM, Pulse-code Modulation).

Частота дискретизации и битовая глубина

Оцифровка звуковых сигналов осуществляется путем дискретизации (семплирования). Сигнал измеряется через равные промежутки времени, и значение амплитуды сигнала фиксируется в момент измерения — это и есть семпл. Если сигнал замеряется 16 000 раз за секунду, частота дискретизации (sample rate) равна 16 000 Гц. Например, для телефонной связи обычно используется частота в 8 000 Гц.

Если есть выбор, при распознавании лучше использовать аудио с частотой 16 000 Гц и выше, т. к. дискретизация с меньшей частотой может привести к потере точности распознавания (особенно, если в аудио есть фоновые шумы).

После оцифровки сигналы переводятся в двоичную форму. Битовая глубина (bit depth) определяет, сколько бит отводится для хранения одного семпла.

Чем больше битовая глубина и частота дискретизации, тем точнее получившийся цифровой сигнал соответствует исходному.

Сжатие и потеря качества

Аудиофайлы могут быть сжаты для хранения и передачи. Сжатие может происходить с потерями какой-либо информации (lossy) или без потерь (lossless). При сжатии с потерями часть данных аудиосигнала отбрасывается, и восстановить их не удастся. Несжатое аудио наиболее приближено к исходному звуку.

Какие форматы и кодеки поддерживаются

Формат аудио — это своеобразный контейнер, в который с помощью специальной программы — кодека — записывается аудиосигнал. Для некоторых форматов кодек можно определить однозначно. Например, для формата MP3 всегда используется кодек MPEG Audio Layer III, в то время как для FLAC могут использоваться разные кодеки.

В таблице ниже указаны кодеки и примеры форматов, которые поддерживаются в Tinkoff VoiceKit:

КодекиПримеры форматовБез потерьБез сжатия
LINEAR16 (Linear PCM)WAV, FLAC++
ALAW (a-law)WAV, WMA, FLAC+-
MULAW (μ-law)WAV, FLAC+-
OPUSOgg, WebM, MPEG, MP4--
MP3 (MPEG Audio Layer III)MP3, MPEG, MP4--

Вы также можете использовать raw-файлы, которые содержат необработанные аудиосигналы. Если аудио находится в контейнере (WAV, Ogg и т. п.), перед распознаванием его нужно декодировать (кроме MP3 — его можно передавать как есть). Метод синтеза речи возвращает raw-файл — если необходимо, запакуйте полученные семплы в нужный формат.

Как правильно указать
encoding

Следующие рекомендации помогут принять решение о том, какое значение

encoding
для ваших аудиофайлов нужно указать:

  1. Посмотрите на расширение файла:
    • .mp3 — указывайте
      MPEG_AUDIO
      ;
    • .opus — указывайте
      RAW_OPUS
      .
  2. Воспользуйтесь специальными утилитами, чтобы проверить свойства аудио. Примеры запуска утилит для файла

    test.wav
    с выводом:

    • утилита
      file
      :
      1
      2
      $ file test.wav     
      test.wav: RIFF (little-endian) data, WAVE audio, ITU G.711 mu-law, mono 48000 Hz
    • утилита

      sox
      :

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      $ 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:

      1
      2
      3
      4
      5
      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
      выбрать соответственно этим значениям:

    filesoxffprobe
    encoding
    A-law8-bit a-lawpcm_alaw
    ALAW
    mu-law8-bit u-lawpcm_mulaw
    MULAW
    Microsoft PCM, 16 bit16-bit Signed Integer PCMpcm_s16le (или s16be)
    LINEAR16
    Opus audioOpusopus
    RAW_OPUS
    MPEGMPEG audio (layer I, II or III)mp3
    MPEG_AUDIO

Обратная связь

Нам важна любая обратная связь!
Пишите все, что думаете о нашем сервисе, а мы прочитаем и ответим

ivanov@tinkoff.ru
0/500