Как найти индекс микрофона в питоне

от admin

Создаем свою Алису при помощи Python

В начале установим русские голосва в систему windows. Я оставлю ссылку на скачивание, перейдя по ней зайдите в раздел SAPI 5 -> Russian. Выбираем понравившийся голос, устанавливаем, и идем дальше.

Устанавливаем библиотеку pyttsx3 для синтеза речи:

Далее можно просто написать тестовую программу, для проверки корректности установки:

Распознавание речи

Множество инструментов для распознавания речи увы, но платные. Но существует бесплатная библиотека speech_recognition.

Для работы с микрофоном нам понадобится библиотека PyAudio

Некоторые пользователи испытывают проблему с ее установкой, поэтому по этой ссылке вы сможете скачать нужную вам версию. Далее введите в консоль:

Опять проверяем установку на тестовой программе. Только исправьте "device_incex=1" на свое значение индекса микрофона. Узнать индекс своего микрофона можно так:

Тест распознавания речи:

Для управления ботом на Python, нужно написать такой код:

Здесь бот озвучивает все ответы

Пожалуй на сегодня все. В следующей части будет рассказано как сделать "умного" бота, умеющий не только отвечать, но и делать!

Создание голосового ассистента на Python, часть 1

Добрый день. Наверное, все смотрели фильмы про железного человека и хотели себе голосового помощника, похожего на Джарвиса. В этом посте я расскажу, как сделать такого ассистента с нуля. Моя программа будет написана на python 3 в операционной системе windows. Итак, поехали!

Работать наш ассистент будет по такому принципу:

  1. Постоянно «слушать» микрофон
  2. Распознавать слова в google
  3. Выполнять команду, либо отвечать

Для начала мы установим в систему windows русские голоса. Для этого переходим по ссылке и скачиваем голоса в разделе SAPI 5 -> Russian. Там есть 4 голоса, можно выбрать любой, какой вам понравится. Устанавливаем и идём дальше.

Нам нужно поставить библиотеку pyttsx3 для синтеза речи:

Затем можно запустить тестовую программу и проверить правильность её выполнения.

2) Распознавание речи

Существует много инструментов для распознавания речи, но они все платные. Поэтому я пытался найти бесплатное решение для моего проекта и нашёл её! Это библиотека speech_recognition.

Также для работы с микрофоном нам необходима библиотека PyAudio.

У некоторых людей возникает проблема с установкой PyAudio, поэтому следует перейти по этой ссылке и скачать нужную вам версию PyAudio. Затем ввести в консоль:

Затем запускаете тестовую программу. Но перед этим вы должны исправить в ней device_index=1 на своё значение индекса микрофона. Узнать индекс микрофона можно с помощью этой программы:

Тест распознавания речи:

Если всё отлично, переходим дальше.

Если вы хотите, чтобы ассистент просто общался с вами (без ИИ), то это можно сделать с помощью бесплатного инструмента DialogFlow от Google. После того, как вы залогинетесь, вы увидите экран, где уже можно создать своего первого бота. Нажмите Create agent. Придумайте боту имя (Agent name), выберете язык (Default Language) и нажмите Create. Бот создан!

Чтобы добавить новые варианты ответов на разные вопросы, нужно создать новый intent. Для этого в разделе intents нажмите Create intent. Заполните поля «Название» и Training phrases, а затем ответы. Нажмите Save. Вот и всё.

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

На сегодня всё. В следующей части я расскажу как сделать умного бота, т.е. чтобы он мог не только отвечать, но и что-либо делать.

Создаем собственную Alexa в 20 строках Python

Создаем собственную Alexa в 20 строках Python

У всех моих друзей есть Alexa, а у меня нет, из-за чего они надо мной смеются. Натерпевшись вдоволь, я решил: “Хватит!”.

Я связался со своей командой, и как только с моих уст прозвучало “Alexa”, кто-то из ребят выкрикнул: “Не покупай Alexa! Создай свою. Это можно сделать в 20 строк кода”.

О чем этот проект?

Его цель — сэкономить деньги и создать собственную Alexa, способную выполнять для вас массу полезных вещей.

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

Немного терминологии

Модуль/библиотека:

Предопределенный или предварительно написанный кем-то код, который можно бесплатно использовать в своем проекте.

Класс:

Концепция из ООП, которая позволяет группировать код и в некотором смысле является схемой для создания объектов. Классы позволяют использовать код повторно.

Объект:

Экземпляр класса, который можно задействовать для обращения к атрибутам и методам класса.

У Alexa есть две задачи

1. Слушать

Прослушивание команд является основной функциональностью любого виртуального помощника. Команды бывают различные, например: “Алекса, включи музыку” или “Алекса, сколько время?”

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

2. Говорить

Прослушивая и понимая команды, Alexa выполняет определенные действия. В ходе этого процесса она предоставляет голосовую обратную связь.

Реализация этих функций

Нам понадобятся два модуля Python:

  1. SpeechRecognition.
  2. Python Text-To-Speech (pyttsx3).

1. SpeechRecognition

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

Любой сторонний продукт нужно так или иначе устанавливать. Для этого выполните в терминале:

После установки можно использовать библиотеку в проекте. В процессе работы с модулем нам понадобятся три важных компонента.

1) Класс Recognizer: это основной класс модуля, который содержит все ключевые функции, нужные для создания приложения распознания речи.

Для начала нужно создать этот класс, а также его объекты:

Здесь r представляет просто произвольное имя, заданное для объекта. В его качестве можно использовать любую допустимую переменную Python.

2) Доступ к микрофону: так как помощнику нужно прослушивать команды, вам потребуется предоставить ему доступ к микрофону устройства. Для этого можно использовать класс Microphone :

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

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

2. Python Text-To-Speech (pyttsx3)

Это библиотека Text-to-Speech (TTS) для Python 2 и Python 3, которая работает без обращения к интернету и каких-либо задержек.

Поскольку это сторонний модуль, сначала его нужно также установить:

Теперь с помощью этого модуля ваш помощник обретет дар речи.

Секрет: здесь мы просто преобразуем текст в речь.

Все остальное будет очень легко. Сначала нужно инициализировать модуль pyttsx3 с помощью метода init() и создать его объект. Затем можно использовать его функции для преобразования текста в речь:

Читать:
Mikrotik pref source что это

Здесь say() выполняет основную работу по преобразованию текста в речь, а runAndWait() ожидает, пока модуль закончит проговаривать конкретное предложение, после чего переходит к следующей задаче.

Разобравшись и с этим модулем, пора переходить к самому интересному.

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

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

Шаг 1. Импорт модулей

Это всегда будет первым шагом:

Шаг 2. Инициализация модулей

Для использования импортированных модулей нужно их инициализировать и создать объекты:

Здесь listener является объектом класса Recognizer .

Модуль pyttsx3 — это похититель голосов. Он крадет разные голоса и сохраняет их в свойстве voice .

Мужской голос установлен по умолчанию с индексом 0. Нам нужен приятный женский голос. Для его получения мы используем метод getProperty() . Женский голос хранится в индексе 1.

Теперь перейдем далее и создадим методы, которые помогут ассистенту говорить и слушать.

Шаг 3. Создание метода talk() для преобразования текста в речь

Здесь talk() — это имя метода, который получает параметр text . Текстом может быть любая строка, которую нам нужно преобразовать в речь, чтобы помощник заговорил.

Далее мы просто передаем его в метод say() и вызываем метод runAndWait() через созданный выше объект engine . Принцип действия должен быть вам понятен, потому что вы уже знаете основы pyttsx3 . Теперь ваш помощник получил возможность говорить.

Теперь мы наделим его даром слушать и понимать наши команды, создав для этого метод, который будет обрабатывать распознавание речи.

Шаг 4. Создание метода take_command() для распознавания речи

Для обработки возможных ошибок микрофона и прочих мы обертываем его в блок try-except .

Остальное очень похоже на то, что мы делали ранее. Модуль speech recognition предоставляет различные механизмы распознавания речи, которые и делают всю работу. Здесь мы применили механизм от Google, для чего был использован метод recognize_google() из класса Recognizer .

Мы уже на полпути к цели, и основная часть проекта у нас позади.

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

Шаг 5. Создание метода run_alexa() для ответа

Здесь нужно понять несколько моментов:

1) Получение требуемой части: предположим, что вас преследует навязчивая строчка из песни, и вы решили ее послушать, приказав Alexa: “Play song_name ”. Для этой команды в данном проекте мы просто удаляем слово Play и получаем часть song_name :

Результат мы просто сохраняем в переменной song .

2) pywhatkit.playonyt(): для его использования понадобится установить и импортировать модуль pywhatkit . PyWhatKit — это библиотека Python для отправки сообщений WhatsApp в определенное время, но в ней есть и ряд других функций, которые помогут нам с автоматизацией. Этот модуль предоставляет метод playonyt() , который позволит воспроизводить желаемые песни прямо на YouTube.

Модуль этот тоже сторонний и требует установки:

И последующего импорта:

3) datetime.datetime.now(): для использования этого метода сначала нужно импортировать модуль datetime . Он является встроенным модулем Python, который позволит нам управлять датами и временем. Метод now() возвращает текущее время.

4) wikipedia.summary(): для применения этого метода потребуется установить и импортировать модуль Wikipedia. Wikipedia — это библиотека Python, предоставляющая возможность доступа и парсинга данных из Википедии. Она поможет нам находить нужную информацию и возвращать ее в качестве вывода. Метод summary() запрашивает данные из сводного раздела этого ресурса.

Опять же, это сторонний модуль, который нужно установить:

5) pyjokes.get_joke(): для использования этого метода нужно установить и импортировать модуль Pyjokes. Он позволит генерировать случайные однострочные шутки для программистов, которые помощник сможет обработать.

Этот сторонний модуль мы также устанавливаем:

Аналогичным образом можно добавить и другие библиотеки, расширив возможности помощника.

В функции выше сначала происходит вызов метода talk_command() , который начинает прослушивать команды и сохранять их в переменной command :

Помимо этого, чтобы помощник заговорил, мы вызываем метод talk() и передаем ему нужные данные.

Шаг 6. Начальный вызов функции

В завершении мы вызываем метод run_alexa() , который запускает нашего помощника.

Теперь у вас есть собственная Alexa!

Аналогичным образом, обладая минимальными навыками работы с Python и используя другие модули, можно добавлять дополнительные возможности, сделав ее не просто умным, но также интересным и красивым виртуальным помощником.

Python. Используем PyAudio для записи звука

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

Работа с PyAudio

PyAudio — это библиотека предоставляет возможность записи аудио(звука) с помощью Python. PyAudio записывает полученный аудио поток в объекты типа bytes. В последующем данные могут быть сохранены в виде файлов WAV с использованием таких библиотек как scipy или wave соответственно. Для того что бы записать звук например с микрофона, нам надо определить идентификатор используемого устройства, в нашем случае микрофона.

Для этого нам надо написать следующий код, который выведет нам весь список доступных устройств и их идентификаторы:

после запуска скрипта мы получим список всех устройств и их идентификаторы:

В полученном списке мы ищем запись "Микрофон" и определяем его идентификатор, который равен 2. Далее этот идентификатор мы будем использовать в настроках PyAudio. Прежде чем использовать библиотеку PyAudio нам надо определить некоторые параметры:

  • format — размер семпла и его формат (pyaudio.paInt16, pyaudio.paInt24, pyaudio.paInt8)
  • channels — кол-во каналов аудио (обычно 2)
  • frames_per_buffer — размер буффера записи
  • rate — частота дискритизации 96000, 44100, 22050, 11025, 8000
  • input_device_index — идентификатор устройства
  • input — вывод True или False

Как будет работать запись: для начала надо будет инициализовать поток PyAudio через параметры. Далее в цикле будем записывать кусками данные в массив, после того как закончиться запись мы запишем все данные в файл.

Пример кода

Пример кода для записи звука:

после выполнения скрипта мы получим wav файл который можно открыть в любом плеере.

Похожие статьи