Speech AI с Python & Google API
- пятница, 10 марта 2017 г. в 03:14:47
Совсем недавно пришла в голову идея сделать "говорилку" на русском языке. В голове была простенькая схема наподобие:
1) Распознать речь с микрофона
2) Придумать более — менее разумный ответ.
В этом пункте можно сделать много интересного.
Например реализовать управление чем — нибудь физическим и не очень.
3) Преобразовать этот самый ответ в речь и воспроизвести.
Самое интересное, что для всех этих пунктов нашлись библиотеки под Python, чем я и воспользовался.
В итоге получилась связка, практически не зависящая от выбранного в качестве разговорного языка.
Эта библиотека представляет из себя обвертку над многими популярными сервисами / библиотеками распознавания речи.
Т.к. из всех представленных в списке библиотеки сервисов первым заработал Google Speech Recognition, им я и воспользовался в дальнейшем.
Библиотека использует методы машинного обучения. Обучение происходит на наборах данных в формате диалогов.
Процесс обучения в библиотеке chatterbot
В качестве источников данных для обучения могут выступать файлы такого простого формата
По сути они представляют из себя набор диалогов в виде:
- Вопрос
- Ответ
- ...
- Ответ
Для английского языка там есть хороший набор обучающих классов, один из которых берет диалоги из Ubuntu Dialog Corpus, а другой из Twitter'a.
К сожалению, для русского языка я не нашел альтернатив Ubuntu Dialog Corpus (такого же объема). Хотя тот же TwitterTrainer должен работать.
В порядке эксперимента я попробовал использовать при обучении диалоги из первого тома Воины и Мира.
Получилось забавно, но малоправдоподобно, т.к. диалоги там зачастую направленные на определенных персонажей романа.
Так как без большого количества данных сложно получить из бота интересного собеседника, в данный момент поиск хорошей базы для диалогов продолжается.
Еще библиотека chatterbot предоставляет набор "Логических модулей" (LogicAdapter). При помощи которых можно например фильтровать ответ, научить бота считать или говорить текущее время.
Библиотека довольно гибкая, позволяет писать свои классы для обучения и логические модули.
Эта библиотека умеет преобразовывать строку в mp3 файл с речью. Т.к. за этой библиотекой стоит Google, то на выбор имеется много языков, включая русский.
Доступен по ссылке: GHub
Сразу хочу посоветовать создать отдельное виртуальное окружение для python.
Например при помощи conda.
conda create --name speech_ai
source activate speech_ai
conda install python=3.5
Для экспериментов с вышеописанным набором библиотек подойдет:
Пакеты ставить по инструкциям с сайтов:
Также при установке SpeechRecognition иногда нужно помочь одной зависимости (PyAudio):
sudo apt-get install python-pyaudio python3-pyaudio
pip3 install pyaudio
chatterbot советует использовать MongoDB для работы в production.
По умолчанию в качестве хранилища данных используется Json файл, что приводит к многократному замедлению работы при обучении на средних по размеру выборках.
Из мыслей: