Как создать программу ассистент

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

18 293 просмотров

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

Для начала объявим необходимые нам библиотеки:

#Необходимые библиотеки import speech_recognition as sr import os import sys import webbrowser import pyttsx3 as p from datetime import datetime import time import datetime import random

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

Я сделал КЕШУ 2.0 | Голосовой ассистент на Python

#Создаем лог chat_log = [[‘SESSION_ID’, ‘DATE’, ‘AUTHOR’, ‘TEXT’, ‘AUDIO_NUM’]] #Узнаем номер сессии i = 1 exit = 0 while exit == 0: session_id = str(i) if session_id not in os.listdir(): os.mkdir(session_id) exit = 1 else: i = i + 1 #Первое сообщение пишет bot author = ‘Bot’ text = ‘Привет! Чем я могу вам помочь?’

В лог файл мы записываем время сообщения, автора (бот или пользователь) и собственно сам сказанный текст.

#Добавляем данные к логу с помощью этой процедуры def log_me(author, text, audio): now = datetime.datetime.now() i = 1 exit = 0 while exit == 0: audio_num = str(i)+’.wav’ if audio_num not in os.listdir(session_id): exit = 1 else: i = i + 1 os.chdir(session_id) with open(audio_num , «wb») as file: file.write(audio.get_wav_data()) chat_log.append([now.strftime(«%Y-%m-%d %H:%M:%S»), author, text, audio_num])

Выводим первое сообщение за авторством бота: Привет! Чем я могу вам помочь?

# Выводим первое сообщение на экран и записываем в лог print(«Bot: «+ text) log_me(author, text, audio)

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

#Произношение words def talk(words): engine.say(words) engine.runAndWait()

Как озвучивать текст мы рассмотрели выше, но как же мы свой голос сможем превратить в текст? Тут нам поможет распознавание речи от Google и некоторые манипуляции с микрофоном.

#Настройка микрофона def command(): rec = sr.Recognizer() with sr.Microphone() as source: #Бот ожидает нашего голоса print(‘Bot: . ‘) #Небольшая задержка в записи rec.pause_threshold = 1 #Удаление фонового шума с записи rec.adjust_for_ambient_noise(source, duration=1) audio = rec.listen(source) try: #Распознание теста с помощью сервиса GOOGLE text = rec.recognize_google(audio, language=»ru-RU»).lower() #Вывод сказанного текста на экран print(‘Вы: ‘ + text[0].upper() + text[1:]) log_me(‘User’, text, audio) #Если не распознался тест из аудио except sr.UnknownValueError: text = ‘Не понимаю. Повторите.’ print(‘Bot: ‘ + text) talk(text) #Начинаем заново слушать text = command() log_me(‘Bot’, text, , Null) return text

Голосовой ассистент на Python | Голосовое управление компьютером | Распознавание речи Python

Что может сделать наш помощник кроме того, чтобы нас слушать? Все ограничено нашей фантазией! Рассмотрим несколько интересный примеров.

Начнем с простого, пусть при команде открыть сайт – он откроет сайт (не ожидали?).

#Тут расписаны действия, которые будут выполнятся при наличии некоторых словосочетаний def makeSomething(text): if ‘открой сайт’ in text: print(‘Bot: Открываю сайт NewTechAudit.’) talk(‘Открываю сайт NewTechAudit.’) log_me(‘Bot’,’Открываю сайт NewTechAudit.’, Null) webbrowser.open(‘https://newtechaudit.ru/’)

Читайте также:
Как пользоваться программой nvidia geforce experience

Иногда полезно послушать свои слова, да чужими устами. Пусть бот еще умеет и повторять за нами:

#Повторение фразы пользователя elif ‘произнеси’ in text or ‘скажи’ in text or ‘повтори’ in text: print(‘Bot: ‘ + text[10].upper() + text[11:]) talk(text[10:]) log_me(‘Bot’, text[10].upper() + text[11:] , Null)

Пусть еще и собеседником будет, но начнем мы пока только со знакомства:

#Ответ на вопрос elif ‘своё имя’ in text or ‘как тебя зовут’ in text or ‘назови себя’ in text: print(‘Bot: Меня зовут Bot.’) talk(‘Меня зовут Bot’) log_me(‘Bot’, ‘Меня зовут Bot’, Null)

Как создать бота в стиле Alexa и Siri с помощью Python и OpenAI

Как создать бота в стиле Alexa и Siri с помощью Python и OpenAI

Создать программу искусственного интеллекта, которая воспринимает человеческую речь и отвечает на вопросы, не так сложно, как кажется. Такое чудо можно сотворить за один день с помощью нескольких пакетов Python и API.

Вот ответы бота на некоторые вопросы.

Я: Какова численность населения Бразилии?

Бот: По оценкам, население Бразилии составляет более 209 миллионов человек.

Бот: Большинство видов мороженого на вкус сладкие и сливочные.

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

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

Что делает эта программа

  • Файл запускается через командную строку, когда пользователь готов задать вопрос.
  • PyAudio позволяет микрофону компьютера улавливать речевые данные.
  • Аудиоданные хранятся в переменной под названием stream , затем кодируются и преобразуются в JSON-данные.
  • JSON-данные поступают в API AssemblyAI для преобразования в текст, после чего текстовые данные отправляются обратно.
  • Текстовые данные поступают в API OpenAI, а затем направляются в движок text-davinci-002 для обработки.
  • Ответ на вопрос извлекается и отображается на консоли под заданным вопросом.

API и высокоуровневый дизайн

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

  • AssemblyAI для преобразования аудио в текст.
  • OpenAI для интерпретации вопроса и получения ответа.

Дизайн (высокий уровень)

Этот проект содержит два файла: main и openai_helper .

Скрипт main используется в основном для API-соединения “голос-текст”. Он включает в себя настройку сервера WebSockets, заполнение всех параметров, необходимых для PyAudio, и создание асинхронных функций, необходимых для одновременной отправки и получения речевых данных между приложением и сервером AssemblyAI.

openai_helper — файл с коротким именем, используемый исключительно для подключения к OpenAI-движку text-davinci-002 . Это соединение обеспечивает получение ответов на вопросы.

Разбор кода

main. py

Сначала импортируем все библиотеки, которые будут использованы приложением. Для некоторых из них может потребоваться Pip-установка (в зависимости от того, использовали ли вы их). Обратите внимание на комментарии к коду ниже:

#PyAudio предоставляет привязку к Python для PortAudio v19, кроссплатформенной библиотеки ввода-вывода аудио. Позволяет микрофону компьютера взаимодействовать с Python import pyaudio #Библиотека Python для создания сервера Websocket — двустороннего интерактивного сеанса связи между браузером пользователя и сервером import websockets #asyncio — это библиотека для написания параллельного кода с использованием синтаксиса async/await import asyncio #Этот модуль предоставляет функции для кодирования двоичных данных в печатаемые символы ASCII и декодирования таких кодировок обратно в двоичные данные import base64 #В Python есть встроенный пакет json, который можно использовать для работы с данными JSON import json #»Подтягивание» функции из другого файла from openai_helper import ask_computer

Читайте также:
Программа explorer не работает

Теперь устанавливаем параметры PyAudio. Эти параметры являются настройками по умолчанию, найденными в интернете. Вы можете поэкспериментировать с ними по мере необходимости, но мне параметры по умолчанию подошли отлично. Устанавливаем переменную stream в качестве начального контейнера для аудиоданных, а затем выводим параметры устройства ввода по умолчанию в виде словаря. Ключи словаря отражают поля данных в структуре PortAudio . Вот код:

#Настройка параметров микрофона #Сколько байт данных приходится на каждый обработанный фрагмент звука FRAMES_PER_BUFFER = 3200 #Битовый целочисленный формат аудиовхода/выхода порта по умолчанию FORMAT = pyaudio.paInt16 #Моноформатный канал (то есть нам нужен только входной аудиосигнал, поступающий с одного направления) CHANNELS = 1 #Желаемая частота в Гц входящего аудиосигнала RATE = 16000 p = pyaudio.PyAudio() #Начинает запись, создает переменную stream, присваивает параметры stream = p.open( format=FORMAT, channels=CHANNELS, rate=RATE, input=True, frames_per_buffer=FRAMES_PER_BUFFER ) print(p.get_default_input_device_info())

Далее создаем несколько асинхронных функций для отправки и получения данных, необходимых для преобразования голосовых вопросов в текст. Эти функции выполняются параллельно, что позволяет преобразовывать речевые данные в формат base64, конвертировать их в JSON, отправлять на сервер через API, а затем получать обратно в читаемом формате. Сервер WebSockets также является важной частью приведенного ниже скрипта, поскольку именно он делает прямой поток бесшовным.

#Необходимая нам конечная точка AssemblyAI
URL = «wss://api.assemblyai.com/v2/realtime/ws?sample_rate=16000»
auth_key = «enter key here»

#Создание асинхронной функции, чтобы она могла продолжать работать и отправлять поток речевых данных в API до тех пор, пока это необходимо
async def send_receive():
print(f’Connecting websocket to url $’)
async with websockets.connect(
URL,
extra_headers=((«Authorization», auth_key),),
ping_interval=5,
ping_timeout=20
) as _ws:
await asyncio.sleep(0.1)
print(«Receiving SessionBegins . «)
session_begins = await _ws.recv()
print(session_begins)
print(«Sending messages . «)
async def send():
while True:
try:
data = stream.read(FRAMES_PER_BUFFER, exception_on_overflow=False)
data = base64.b64encode(data).decode(«utf-8»)
json_data = json.dumps()
await _ws.send(json_data)
except websockets.exceptions.ConnectionClosedError as e:
print(e)
assert e.code == 4008
break
except Exception as e:
assert False, «Not a websocket 4008 error»
await asyncio.sleep(0.01)

return True

async def receive():
while True:
try:
result_str = await _ws.recv()
result = json.loads(result_str)
prompt = result[‘text’]
if prompt and result[‘message_type’] == ‘FinalTranscript’:
print(«Me:», prompt)
answer = ask_computer(prompt)
print(«Bot», answer)
except websockets.exceptions.ConnectionClosedError as e:
print(e)
assert e.code == 4008
break
except Exception as e:
assert False, «Not a websocket 4008 error»

send_result, receive_result = await asyncio.gather(send(), receive())

asyncio.run(send_receive())

Теперь у нас есть простое API-соединение с OpenAI. Если вы посмотрите на строку 44 приведенного выше кода ( main3.py ), то увидите, что мы извлекаем функцию ask_computer из этого другого файла и используем ее результаты в качестве ответов на вопросы.

Это отличный проект для всех, кто не прочь взять на вооружение ту самую технологию, благодаря которой функционируют Siri и Alexa. Его реализация не требует большого опыта в программировании, потому что для обработки данных используется API.

Весь код хранится в этом репозитории.

  • Решение крупномасштабных задач машинного обучения на Python
  • Введение в алгоритмы машинного обучения: линейная регрессия
  • Классификация текстов отзывов о фильмах с помощью Scikit-learn

Читайте нас в Telegram, VK и Дзен

Источник: nuancesprog.ru

Путеводитель по вашему собственному ИИ. Виртуальный помощник на Python.

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

Читайте также:
Лучшая программа для восстановления поврежденных файлов

В этом руководстве вы узнаете, как кодировать и создавать свой собственный A.I. голосовой помощник на Python.

Что может этот А. помощник делать для ВАС?

  • Он может отправлять вам электронные письма.
  • Он может воспроизводить музыку для вас.
  • Он может выполнять поиск в Википедии за вас.
  • Он может открывать веб-сайты, такие как Google, Youtube и т. Д., В веб-браузере.
  • Он может открыть ваш редактор кода или IDE с помощью одной голосовой команды.

Хватит разговоров! Давайте приступим к созданию нашего собственного помощника по искусственному интеллекту.

Настройка среды для кода:

Я использовал Pycharm, чтобы закодировать это. Не стесняйтесь использовать любую другую удобную среду IDE и начинать новый проект.

P.S: Не забудьте заранее выбрать имя для своего голосового помощника: P

Определение функции речи:

Первое и самое главное для искусственного интеллекта. помощник должен говорить. Чтобы заставить нашего бота говорить, мы закодируем функцию speak (). Эта функция принимает звук в качестве аргумента, а затем произносит его.

def speak(audio): pass #For now. We will write the conditions later.

Теперь нам понадобится звук. Итак, мы собираемся установить модуль с именем pyttsx3.

Что такое pyttsx3?

  • Библиотека Python, которая поможет нам преобразовать текст в речь. Короче говоря, это библиотека преобразования текста в речь.
  • Он работает в автономном режиме и совместим с Python 2, а также с Python 3.

Установка:

pip install pyttsx3

После успешной установки pyttsx3 импортируйте этот модуль в свою программу.

Использование:

import pyttsx3 engine = pyttsx3.init(‘sapi5’) voices = engine.getProperty(‘voices’) #getting details of the current voice engine.setProperty(‘voice’, voice[0].id)

Что такое sapi5?

  • Речевой API, разработанный Microsoft.
  • Помогает в синтезе и распознавании голоса

Что такое VoiceId?

  • Голосовой идентификатор помогает нам выбирать разные голоса.
  • voice [0] .id = Мужской голос
  • voice [1] .id = Женский голос

Написание нашей функции speak ():

def speak(audio): engine.say(audio) engine.runAndWait() #Without this command, speech will not be audible to us.

Создание нашей основной функции:

Теперь мы создадим функцию main (), а внутри этой функции main () вызовем нашу функцию Speech.

if __name__==»__main__» : speak(«Hello World! Hope you all are doing well.»)

Все, что вы напишете в этой функции speak (), будет преобразовано в речь. Поздравляю! Таким образом, наш A.I. имеет свой голос, и он готов говорить.

Кодирование функции wishme ():

Теперь мы собираемся создать функцию wishme (), которая заставит наш A.I. пожелайте или поприветствуйте нас в зависимости от времени на компьютере.

Чтобы предоставить текущее время A.I., нам нужно импортировать модуль с именем datetime. Импортируйте этот модуль в свою программу:

import datetime

Теперь приступим к определению нашей функции wishme ():

def wishme(): hour = int(datetime.datetime.now().hour)

Здесь мы сохранили целочисленное значение текущего часа или времени в переменной с именем hour. Теперь мы будем использовать это значение часа внутри цикла if-else.

def wishMe(): hour = int(datetime.datetime.now().hour) if hour>=0 and hour=12 and hour

Определение функции takeCommand ():

Следующая важная вещь для нашего A.I. Помощник заключается в том, что он должен иметь возможность принимать команды с помощью микрофона нашей системы. Итак, теперь мы закодируем функцию takeCommand ().

С помощью функции takeCommand () наш A.I. Ассистент сможет вернуть строковый вывод, взяв у нас микрофонный вход.

Перед определением функции takeCommand () нам необходимо установить модуль под названием speechRecognition. Установите этот модуль:

pip install speechRecognition

После успешной установки этого модуля импортируйте этот модуль в программу, написав оператор импорта.

import speechRecognition as sr

Приступим к написанию нашей функции takeCommand ():

def takeCommand(): #It takes microphone input from the user and returns string output r = sr.Recognizer() with sr.Microphone() as source: print(«Listening. «) r.pause_threshold = 1 audio = r.listen(source)

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru