Международная конференция разработчиков
и пользователей свободного программного обеспечения

Системы распознавания речи с открытым исходным кодом

Даниил Бойко, Минск, Belarus

LVEE Winter 2018

We provide brief overview and comparison of three open-source speech-recognition systems: CMUSphinx, Kaldi, DeepSpeech.

Введение

Сейчас существует огромное разнообразие коммерческих систем распознавания речи:

  • Google
  • Amazon Alexa
  • IBM Watson
  • Siri
  • Yandex

Они часто свободны для использования и предлагают открытые API (ссылки). Качество распознавания такими системами тоже довольно высокое. Какие же у них есть недостатки и зачем возится с системами с открытыми исходниками?

  • Перечисленные выше системы работают через интернет, соответственно, если нет сети они не работают
  • Нет пользовательского контроля: как мы увидим, качество распознавания зависит от используемой языковой модели (в разных контекстах разная вероятность разных слов, etc). Стандартные системы используют усредненную модель языка, либо модель, разработанную для их задач, а не для наших
  • Пересылка данных через сеть может вносить большие задержки при плохом качестве связи
  • Проблемы с приватностью

В этом докладе мы рассмотрим три свободные системы распознавания речи и попробуем сравнить их качество:

  1. CMU Sphinx
  2. Kaldi
  3. Mozilla DeepSpeech

CMU Sphinx

CMU Sphinx (если кратко, то просто Sphinx) – группа систем распознавания речи разработанных университетом Карнеги Меллон. Она включает в себя серию систем распознавания (Sphinx 2 – 4) и акустическую тренировочную модель (SphinxTrain).

В 2000 компонент системы распознавания речи Sphinx 2 был опубликован как открытый код, а в 2001 компонент Sphinx 3. На данный момент активно разрабатывается Sphinx 4 (написанный на Java, удобный для встраивания в серверные системы) и PocketSphinx (написанный на C и удобный для встраиваемых систем). Распространяется под лицензией BSD.

В этом докладе мы будем в основном рассматривать PocketSphinx.

Установка

Pocketsphinx доступен в качестве пакета в большинстве линуксов.
Для работы ему также необходимы файлы языковой модели, файлы акустической модели и словарь произношения (фонетический словарь).

Акустическая модель — задает способ отображения потока речи (представленных так называемыми кепстральными коэффициентами ) в фонемы (обозначения звуков речи, которые используются в словарях произношения). В pocketsphinx используются скрытые марковские модели (HMM) в качестве акустической модели.

Словарь произношения — содержит транскрипцию произношения слов. Отображает слово в набор фонем.

Языковая модель — задает вероятности разных слов и словосочетаний, которые будут встречаться в произносимом тексте. Очень сильно зависит от тематики текста.

Для английского языка языковые модели доступны из дистрибутива. Для большинства других языков (в т.ч. и для русского) файлы языковой, акустической модели и словари доступны на http://www.voxforge.org

Запуск

С командной строки запускается так (онлайновый режим, работа с микрофона):

ALSA_OSS_PCM_DEVICE="hw:CARD=MS,DEV=0" aoss pocketsphinx_continuous -hmm ru-RU-adapt/ -dict msu_ru_nsh.dic -lm <some language model> -inmic yes

-hmm задает путь к директории акустической модели
-lm путь к языковой модели
-dict путь к словарю произношения

Оффлайновый режим (транскрипция текста, запуск на wav файле):

pocketsphinx_continuous -infile sample.wav > decode.txt

Kaldi

Kaldi – это набор инструментов для распознавания речи, написанный на языке C++, имеющий лицензию Apache v2.0. В больше степени Kaldi предназначена для исследования распознавания речи.

Одной из целью Kaldi было иметь современный и гибкий код, написанный на C++, который можно было бы легко расширять и изменять.

Kaldi включает следующие возможности:

  • Обширная поддержка линейной алгебры – включена матричная библиотека, которая оборачивает стандартные процедуры BLAS и LAPACK.
  • Расширяемая конструкция – алгоритмы написаны наиболее универсальным способом.
  • Открытая лицензия – код находится под лицензией Apache 2.0 которая является одной из наименее ограничительных лицензий.
  • Полные рецепты – цель Kaldi предоставить полные рецепты построения систем распознавания речи, которые работают из широко доступных баз данных. Это важный аспект Kaldi, так как код публично доступен под лицензией, которая разрешает изменения и переиздание. Kaldi призывает людей выпускать свой код вместе с каталогом скриптов аналогично тому, как делает сама Kaldi

Некоторые особенности системы Kaldi:

  • Код Kaldi весь или почти весь тщательно оттестирован
  • Код Kaldi легок для понимания – несмотря на то что инструментарий Kaldi очень большой, разработчики старались, чтобы каждую часть кода можно было бы разобрать без особых усилий. Некоторые участки кода дублировались специально для того, чтобы код был понятнее.
  • Код Kaldi легко использовать повторно и рефакторить – разработчики старались сделать код настолько менее связным на сколько это возможно. В общем случае это значит, что какой-либо файл содержит директив #include настолько мало, на сколько это возможно.
  • Сейчас Kaldi содержит скрипты для большинства стандартных задач.

Установка

Git clone https://github.com/kaldi-asr/kaldi

В склонированном репозитории есть файл INSTALL, который содержит инструкции по компиляции в нем написано следующее:

  1. go to tools/ and follow INSTALL instructions there.
  2. go to src/ and follow INSTALL instructions there.

Запуск

Вместе с системой распознавания Kaldi предоставляет большое количество примеров использования системы. Все примеры находится в папке egs.

Оффлайновый режим (транскрипция текста, запуск на wav файле):

Есть специальный скрипт в примерах, который предназначен для распознавания wav файла. Он находится по следующему пути: egs/apiai_decode/s5/recognize-wav.sh. Для распознавания этот скрипт запускается передавая ему путь к wav файлу. Например:

./recognize-wav.sh sample.wav

Mozilla DeepSpeech

DeepSpeech – это движок с открытым исходным кодом, для преобразования речи в текст. Для обучения используются модель, обученную методами машинного обучения, на основе глубоких речевых исследованиях Байду. DeepSpeech использует проект TensorFlow чтобы облегчить реализацию

Установка

Весь проект находится на github по адресу: https://github.com/mozilla/DeepSpeech#getting-the-pre-trained-model

Для того, чтобы установить:
pip install deepspeech
или
pip install deepspeech-gpu
или
git clone https://github.com/mozilla/DeepSpeech

Скачиваем модель для распознавания:
wget -O – https://github.com/mozilla/DeepSpeech/releases/download/v0.1.1/deepspeech-0.1.1-models.tar.gz | tar xvfz -

Запуск

Оффлайновый режим (транскрипция текста, запуск на wav файле):

deepspeech models/output_graph.pb my_audio_file.wav models/alphabet.txt

Сравнение систем

Метрики качества

WER – это производная от величины называемой «расстояние Левенштейна», которая вычисляется на уровне слов, а не на уровне фонем. Расстояние Левенштейна – это минимальное количество операций вставки одного символа, удаления одного символа и замены одного символа на другой, необходимых для превращения одной строки в другую.

WER = (S + D + I)/N = (S + D + I)/(S + D + C)

  • S – число операций замены слов
  • D – число операций удаления слов
  • I – число операций вставки слов
  • C – количество правильно распознанных слов
  • N – общее количество слов

SER – это общая метрика для определения точности системы распознавания. SER представляет собой показатель отношения количества неправильно распознанных предложений к количеству всех предложений.

SER = Sв / S

  • Sв – количество предложений распознанных без ошибок
  • S – общее количество предложений

SF – это общая метрика для определения скорости распознавания системы. SF представляет собой показатель отношения времени распознавания к длительности распознаваемого сигнала.

SF = Tрасп / T

  • Tрасп – время распознавания сигнала
  • T – длительность, измеряется в долях реального времен

Результаты сравнений

CMU Sphinx
(pocketsphinx)
Kaldi DeepSpeech
WER, % 42.01 22.81 29.96
SER, % 84.24 76.00 84.00
SF, % 34.83 149.31 215.65
Язык C/Java C++ Python
Структура Модульная Модульная Модульная
Документация Подробная онлайн
документация, видео
уроки на YouTube
Подробная онлайн
документация
Подробная онлайн
документация
Поддерживаемые
ОС
Linux, Mac OS,
Windows, Android
Linux, Windows Linux, Mac OS,
Windows, Android
Интерфейс Консольный, API Консольный Консольный
Языки Множество языков, в
том числе
экзотические
Английский Английский
Лицензия BSD Apache v2.0 (BSD
подобная)
Mozilla Public License
2.0 (BSD подобная)

Abstract licensed under Creative Commons Attribution-ShareAlike 3.0 license

Назад