Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
14
Добавлен:
11.03.2025
Размер:
3.77 Mб
Скачать

ПЕРСПЕКТИВЫ РАЗВИТИЯ И ПРИМЕНЕНИЯ СОВРЕМЕННЫХ ТЕХНОЛОГИЙ

УДК 004

СОЗДАНИЕ ГОЛОСОВОГО ПОМОЩНИКА НА ЯЗЫКЕ PYTHON

Белицкий И.М.

Студент Сибирский государственный автомобильно-дорожный университет Научный руководитель: Зырянова С.А. к.т.н., доцент Сибирский государственный

автомобильно-дорожный университет

Аннотация: В статье рассматривается создание голосового помощника на языке Python, описываются распознавание меток и их декодирование, принцип связи между модулем распознавания речи и декодером для превращения распознанной речи в строковые команды.

Ключевые слова: голосовой помощник, распознавание меток в речи, python, модуль поиска, потоки, очередь.

CREATING A VOICE ASSISTANT IN PYTHON

Belitskiy I.M.

Scientific adviser: Zyryanova S.A.

Abstract: The article discusses the creation of a voice assistant in Python, describes the recognition of labels and their decoding, the principle of communication between the speech recognition module and the decoder for turning recognized speech into string commands.

Key words: voice assistant, speech tag recognition, python, search module, streams, queue

Виртуальный голосовой помощник, созданный компанией «Яндекс», распознаёт естественную речь, имитирует живой диалог, даёт ответы на вопросы пользователя и, благодаря запрограммированным навыкам, решает прикладные задачи. «Алиса» работает на смартфонах и компьютерах, в автомобилях и в «Яндекс.Станции»[1].

76

МЦНП «Новая наука»

ПЕРСПЕКТИВЫ РАЗВИТИЯ И ПРИМЕНЕНИЯ СОВРЕМЕННЫХ ТЕХНОЛОГИЙ

Внастоящее время голосовые помощники все больше и больше входят в нашу жизнь. Компании вкладывают большие деньги в разработку своих голосовых помощников. В одиночку такие проекты с нуля создать нереально, но можно попробовать создать что-то похожее, используя «open source».

Автором был создан один из модулей голосового помощника на языке Python с использованием библиотеки распознавания речи «vosk»: модуль меток.

Расстояние Левенштейна используется для вычисления расстояния между двумя последовательностями слов. Оно вычисляет минимальное количество правок, которые нам нужно изменить в данной строке. Эти изменения могут быть вставкой, удалением или заменой.

Рассмотрим описание созданного модуля поиска параметров в сказанной фразе. Например, поиск «завтра, сегодня, сейчас». В Алисе от Яндекса и в других голосовых помощниках такие функции имеются .

Шаблон описания команды и значения имеет следующий вид (рисунок 1, рисунок 2). Перебор и сравнение с фразой осуществляются в словаре «dict_word» (рисунок 1) во вложении «lang» с помощью одного из вариантов алгоритма Левенштейна. В данном проекте используется библиотека fuzzywuzzy и функция partial_ratio, данная функция переводится как «частичное соотношение».

Вкортеже lang могут быть любые слова, главное, чтобы они были в словаре «vosk». Будем использовать два цикла for: один перебирает множества, а другой все то, что находится в множествах. Если распознана фраза, которая соответствует шаблону, то записывается индекс. Например, индекс «0» множества. Далее dict_word во вложении cmd передает индекс множества. По индексу "0" находится «tomorrow», и строка записывается в переменную и передается «dict_word_cmd_value» (рисунок 2) во вложении «word_time». В ней идёт описание команды «tomorrow»: так как это завтра, то

вфункцию передается описание метки со значением value, равным 1.

Всловаре «funcs» (рисунок 3) перечислены все функции, имеющиеся в созданном голосовом помощнике, например «test_dict_2». В «word_list» могут через запятую перечисляться все варианты фразы для распознавания функции. В «label_dict_word_values» есть список и в нем «word_time», это значит, что слова которые обозначают время, будут искаться декодером, а

цвета, например, в данной функции искаться не будут.

В «label_dict_word_value_in_values» есть словарь со значениями «tomorrow», «now», и это значит что для данной функции допустимы только эти значения,

77

МЦНП «Новая наука»

ПЕРСПЕКТИВЫ РАЗВИТИЯ И ПРИМЕНЕНИЯ СОВРЕМЕННЫХ ТЕХНОЛОГИЙ

а «yesterday» уже не будет распознаваться. «type_label_dict_word»:«global»

параметр, означающий вариант поиска значения в глобальном словаре. Параметр может быть локальным, в этом случае значения содержатся в описании функции.

Распознавание речи запущено в отдельном потоке «демоне». Чтобы связать два потока, нужна очередь FIFO. В python есть стандартный модуль Queue(). В ней также имеется очередь LIFO, но в данном проекте удобнее использовать FIFO. Пока в очередь Queue передаются данные, второй поток читает данные. Когда перестают передаваться данные в поток, второй поток останавливается и ожидает данные.

Для данного проекта это является достоинством, так как в одном потоке обрабатывается распознанная фраза, например, декодер функций или декодер меток, а второй поток ожидает, пока человек скажет что-либо.

Рис. 1. Пример описания словаря меток

Рис. 2. Пример описание характеристик меток

78

МЦНП «Новая наука»

ПЕРСПЕКТИВЫ РАЗВИТИЯ И ПРИМЕНЕНИЯ СОВРЕМЕННЫХ ТЕХНОЛОГИЙ

Рис. 3. Пример описание параметров функции

В данной статье были рассмотрены реализации декодирования меток с распознанной речи и связь потока с библиотекой распознавания речи и основного потока.

Список литературы

1.Алиса (голосовой помощник) [Электронный ресурс] – URL: https://ru.wikipedia.org/wiki/Алиса_(голосовой_помощник) (дата обращения:

5.12.2021)

2.Расстояние Левенштейна [Электронный ресурс] – URL: https://ru.wikipedia.org/wiki/Расстояние_Левенштейна (дата обращения:

5.12.2021)

©Белицкий И.М., Зырянова С.А., 2021

79

МЦНП «Новая наука»