В этом руководстве разберем создание голосового бота использующего технологии нейронных сетей на языке Python. Бот может распознавать человеческий голос в реальном времени с вашего устройства, например с микрофона ноутбука, и произносить осознанные ответы, которые обрабатывает нейронная сеть.
Бот состоит из двух основных частей: это часть обрабатывающая словарь и часть с голосовым ассистентом.
Всю разработку по написанию бота вы можете вести в IDE PyCharm, скачать можно с официального сайта JetBrains.
Все необходимые библиотеки можно установить с помощью PyPI прямо в консоле PyCharm. Команды для установки вы можете найти на официальном сайте в разделе нужной библиотеки.
Проблема возникла только с библиотекой PyAudio в Windows. Помогло следующее решение:
Как подключить пульт с голосовым поиском? Голосовое управление Android смарт-приставкой
pip install pipwin pipwin install pyaudio
Дата-сет
Дата-сет — это набор данных для анализа. В нашем случае это будет некий текстовый файл содержащий строки в виде вопросответ.
Все строки текста перебираются с помощью функции for , при этом из текста удаляются все ненужные символы по маске, находящейся в переменной alphabet . Каждое значение строки раздельно заносится в массив dataset .
После обработки текста все его значения преобразуются в вектора с помощью библиотеки для машинного обучения Scikit-learn. В этом примере используется функция CountVectorizer() . Далее всем векторам присваивается класс с помощью классификатора LogisticRegression() .
Когда приходит сообщение от пользователя оно так же преобразуется в вектор, и далее нейросеть пытается найти похожий вектор в датасете соответствующий какому-то вопросу, когда вектор найден, мы получим ответ.
Голосовой ассистент
Для распознавания голоса и озвучивания ответов бота, используется библиотека SpeechRecognition. Система ждет в бесконечном цикле, когда придет вопрос, в нашем случае голос с микрофона, после чего преобразует его в текст и отправляет на обработку в нейросеть. После получения текстового ответа он преобразуется в речь, запись сохраняется в папке с проектом и удаляется после воспроизведения. Вот так все просто! Для удобства все сообщения дублируются текстом в консоль.
При дефолтных настройках время ответа было достаточно долгим, иногда нужно было ждать по 15-30 сек. К тому же вопрос принимался от малейшего шума. Помогли следующие настройки:
voice_recognizer.dynamic_energy_threshold = False voice_recognizer.energy_threshold = 1000 voice_recognizer.pause_threshold = 0.5
И timeout = None, phrase_time_limit = 2 в функции listen()
После чего бот стал отвечать с минимальной задержкой.
Возможно вам подойдут другие значения. Описание этих и других настроек вы можете посмотреть все на том же сайте PyPI в разделе библиотеки SpeechRecognition. Но настройку phrase_time_limit я там почему-то не нашел, наткнулся на нее случайно в Stack Overflow.
Не работает голосовой поиск? Посмотри это видео. Восстанавливаем голосовой поиск. Xiaomi Mi Box S !
Текст дата-сета
Это небольшой пример текста. Конечно же вопросов и ответов должно быть гораздо больше.
приветпривет как делавсё прекрасно как деласпасибо отлично кто тыя бот что делаешьс тобой разговариваю
Код Python
import speech_recognition as sr from gtts import gTTS import playsound import os import random from sklearn.feature_extraction.text import CountVectorizer from sklearn.linear_model import LogisticRegression # Словарь def clean_str(r): r = r.lower() r = [c for c in r if c in alphabet] return ».join(r) alphabet = ‘ 1234567890-йцукенгшщзхъфывапролджэячсмитьбюёqwertyuiopasdfghjklzxcvbnm’ with open(‘dialogues.txt’, encoding=’utf-8′) as f: content = f.read() blocks = content.split(‘n’) dataset = [] for block in blocks: replicas = block.split(‘\’)[:2] if len(replicas) == 2: pair = [clean_str(replicas[0]), clean_str(replicas[1])] if pair[0] and pair[1]: dataset.append(pair) X_text = [] y = [] for question, answer in dataset[:10000]: X_text.append(question) y += [answer] vectorizer = CountVectorizer() X = vectorizer.fit_transform(X_text) clf = LogisticRegression() clf.fit(X, y) def get_generative_replica(text): text_vector = vectorizer.transform([text]).toarray()[0] question = clf.predict([text_vector])[0] return question # Голосовой ассистент def listen(): voice_recognizer = sr.Recognizer() voice_recognizer.dynamic_energy_threshold = False voice_recognizer.energy_threshold = 1000 voice_recognizer.pause_threshold = 0.5 with sr.Microphone() as source: print(«Говорите «) audio = voice_recognizer.listen(source, timeout = None, phrase_time_limit = 2) try: voice_text = voice_recognizer.recognize_google(audio, language=»ru») print(f»Вы сказали: «) return voice_text except sr.UnknownValueError: return «Ошибка распознания» except sr.RequestError: return «Ошибка соединения» def say(text): voice = gTTS(text, lang=»ru») unique_file = «audio_» + str(random.randint(0, 10000)) + «.mp3» voice.save(unique_file) playsound.playsound(unique_file) os.remove(unique_file) print(f»Бот: «) def handle_command(command): command = command.lower() reply = get_generative_replica(command) say(reply) def stop(): say(«Пока») def start(): print(f»Запуск бота. «) while True: command = listen() handle_command(command) try: start() except KeyboardInterrupt: stop()
Пример одного из самых популярных голосовых помощников — это яндекс алиса.
Если вам понравилась статья, вы можете отблагодарить автора любой суммой, какую сочтете для себя приемлемой:
Источник: it-blog.ru
Как голосом управлять компьютером: обзор лучших программ
Голосовой ассистент — программа, распознающая человеческую речь и способная выполнять определённые действия в ответ на команду. Сегодня представлено большое количество голосовых помощников, разрабатываемых как крупными, так и небольшими компаниями.
Typle
Typle — это простое для понимания со стороны пользователя и лёгкое в плане расходования ресурсов ПК приложение. Посредством голосового управления через Typle можно запускать программы и документы локально, работать с интернет-ресурсами онлайн. Слова на русском распознаются достаточно точно, но для лучшего результата понадобится качественный широкополосный микрофон.
Скачать Typle можно с официальной страницы разработчика. После инсталляции и запуска, настройка приложения сводится к следующему:
-
Создайте нового пользователя, щёлкнув по вкладке «Добавить» в шапке окна программы. Введите имя и ключевую фразу. Нажмите кнопку «Добавить» в окне Users:
Speaker
Так же как и Typle, Speaker предельно простая в освоении и не расходующая много ресурсов компьютера программа. Голосовое управление осуществляется в фоновом режиме, то есть приложение никаким образом не мешает и не отвлекает пользователя от работы.
Speaker выступает в роли посредника между юзером и ПК при различных действиях с файлами, он меняет раскладку клавиатуры, перезагружает, выключает устройство и т. п. При этом интерфейс программы не перегружен, он выделяется минимализмом, но несколько необычен.
Утилиту можно скачать с официального сайта или с других проверенных интернет-ресурсов. Установленный Speaker настраивается довольно просто:
-
Прежде всего выберите способ распознавания голоса, кликнув по небольшой кнопке справа. Это может быть реакция программы на нажатие средней кнопки мыши или клавиши Ctrl, либо активация голосом (рекомендуется при стабильном и быстром интернет-соединении). После настройки нажмите кнопку в виде плюса.
К сожалению, программа не очень быстро реагирует на голосовые команды, время реакции достигает 2-3 секунды, что отражается на общей производительности и может порядком раздражать.
Laitis
Программу для голосового управления компьютером Laitis можно скачать с официального сайта с одноимённым названием. Имеются платная (стабильная) и бесплатная (бета) версии приложения. Второй вариант работает ничуть не хуже первого, но потенциально может сопровождаться мелкими багами.
После загрузки и установки программы её необходимо настроить:
-
Во время первого запуска вам будет предложено установить расширение для вашего веб-браузера. Это необходимо для работы голосового помощника с сайтами. Если не собираетесь работать в интернете, нажмите «Пропустить»:
«Горыныч»
Ещё один голосовой помощник с поддержкой русского языка. «Горыныч» обрабатывает пользовательские запросы в режиме реального времени и ищет по ним информацию в сети. Кроме того, умеет работать с программами и файлами локально в Windows.
Вы можете вводить информацию как текстом, так и голосом, добавлять новые фразы в словарь и редактировать команды. Скачать «Горыныча» можно с любого надёжного ресурса. Программа портативная и не требует установки.
Настраивается утилита следующим образом:
-
Распакуйте скачанный архив и запустите исполняемый файл. Обратите внимание на опцию «Окна мониторинга». Вы можете убрать блоки показа записи и слов, если они вам не нужны. Окна «Команды» и «Варианты» являются подсказками, вы можете также убрать их при необходимости.
Speechka
Как и большинство других голосовых помощников, данное приложение базируется на Google Voice Search, то есть использует стандартный голосовой поиск от Google. Программа поддерживает русский язык и проста в настройке. Speechka умеет запускать программы, открывать папки, плееры, документы и т. п.
Коротко о настройке утилиты:
-
Скачайте, установите и активируйте утилиту. Отметьте галочкой пункт «Запускать программы и браузер голосом». Если необходимо, отметьте «Свернуть в трей при запуске» и добавьте приложение в автозагрузку.
«Алиса»
Виртуальный ассистент «Алиса» от компании «Яндекс» на голову выше описанных нами программ. Она отвечает на всевозможные вопросы, ищет в сети информацию, играет, рассказывает сказки и даже поёт.
Среди основных функциональных возможностей «Алисы» можно выделить:
- имитацию живого диалога;
- умение распознавать речь в устном и письменном виде;
- наличие навыков голосового и текстового ответов на поставленные вопросы.
- более точно прокладывать маршрут по карте и подсказывать наиболее оптимальный путь к месту назначения;
- включать/выключать музыку, видео, новости и пр. по голосовому запросу;
- выполнять операции в «Госуслугах».
Конечно, основными функциями данного голосового ассистента являются такие повседневные задачи, как:
- поиск и предоставление найденной в интернете информации;
- поиск мест и прокладывание маршрутов;
- открытие локальных файлов и приложений.
На iPhone можно выполнять озвучивание объектов на экране, выбранного текста, а также озвучивание при наборе
Даже если функция VoiceOver выключена, Вы можете сделать так, чтобы iPhone озвучивал выбранный текст или описание экрана целиком. iPhone может также давать обратную связь и называть исправления и предложения при вводе текста.
Изменение настроек речи
- Откройте «Настройки» > «Универсальный доступ» > «Устный контент».
- Настройте один из указанных ниже параметров.
- Проговаривание. Чтобы озвучить выбранный Вами текст, коснитесь кнопки «Проговорить».
- Экран вслух. Чтобы озвучить весь контент на экране, смахните двумя пальцами вниз от верхнего края экрана.
- Речевой контроллер. Отобразите контроллер для быстрого доступа к функциям «Экран вслух» и «Говорить при касании».
- Выделение содержимого. iPhone может выделять слова, предложения или и слова, и предложения во время их озвучивания. Вы можете изменить цвет и стиль выделения.
- Озвучивание при наборе. Вы можете настроить параметры озвучивания при вводе текста для экранной и внешней клавиатуры, а также сделать так, чтобы iPhone проговаривал отдельные символы, слова целиком, автоматические исправления, автоматическую вставку заглавных букв и подсказки при вводе текста. Чтобы прослушивать подсказки при вводе текста, откройте «Настройки» > «Основные» > «Клавиатура» и включите параметр «Предиктивный набор».
- Голоса. Выберите голос и диалект.
- Скорость речи. Перетяните бегунок.
- Произношение. Продиктуйте или произнесите желаемое звучание фразы.
Озвучивание на iPhone
Siri. Скажите, например: «Читать экран вслух». Узнайте, как использовать Siri.
Либо выполните любое из описанных ниже действий.
- Озвучивание выбранного текста. Выберите текст и коснитесь кнопки «Произнести».
- Озвучивание всего экрана. Смахните вниз двумя пальцами, начиная от верхнего края экрана. Используйте появившиеся элементы управления, чтобы приостановить озвучивание или изменить скорость речи.
- Озвучивание при наборе. Начните вводить текст. Чтобы прослушивать подсказки при вводе текста, коснитесь слова и удерживайте его (если эта функция включена).
Источник: support.apple.com