Айрис
2 поста
2 поста
4 поста
Привет! Меня зовут Юрий, и я хочу поделиться своим опытом создания голосового ассистента на Python. Мы прошли долгий путь от использования Google Speech Recognition до перехода на оффлайн-модель Whisper от OpenAI. В этой статье я расскажу, как это было, с какими проблемами столкнулся и что в итоге работает. проектае
Цель проекта — создать голосового ассистента, который может:
1. Распознавать речь с микрофона.
2. Обрабатывать команды.
3. Отвечать голосом или текстом.
Изначально я использовал библиотеку `speech_recognition` для распознавания речи через Google Speech Recognition. Однако столкнулся с проблемами: микрофон не всегда работал, а распознавание речи было неточным. В итоге я перешёл на модель Whisper, которая работает оффлайн и обеспечивает более высокую точность.
Этап 1: Использование Google Speech Recognition
Код для распознавания речи
Начал я с библиотеки `speech_recognition`, которая позволяет легко интегрировать Google Speech Recognition. Вот как выглядел мой код:
```python
import speech_recognition as sr
def listen():
recognizer = sr.Recognizer()
with sr.Microphone() as source:
print("Скажите что-нибудь...")
recognizer.adjust_for_ambient_noise(source)
audio = recognizer.listen(source)
try:
text = recognizer.recognize_google(audio, language="ru-RU")
print(f"Вы сказали: {text}")
return text
except sr.UnknownValueError:
print("Речь не распознана")
return "Речь не распознана"
except sr.RequestError as e:
print(f"Ошибка подключения: {e}")
return "Ошибка подключения"
```
Проблемы:
1. **Зависимость от интернета**: Google Speech Recognition требует стабильного интернет-соединения.
2. **Неточное распознавание**: В шумной обстановке или при тихой речи распознавание часто давало сбои.
3. **Проблемы с микрофоном**: Программа не всегда корректно работала с микрофоном, особенно на Windows.
Этап 2: Переход на Whisper
Почему Whisper?
Whisper — это современная модель для распознавания речи от OpenAI. Её преимущества:
- **Оффлайн-работа**: Не требует подключения к интернету.
- **Высокая точность**: Поддерживает множество языков, включая русский.
- **Гибкость**: Можно использовать модели разного размера (tiny, base, small, medium, large) в зависимости от требований к производительности и точности.
Установка Whisper
Для начала я установил Whisper и FFmpeg (для записи аудио):
```bash
pip install openai-whisper torch
```
Обновленный код для распознавания речи
Вот как я переписал функцию `listen` для использования Whisper:
```python
import whisper
import logging
import os
# Настройка логирования
logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)
def listen():
"""
Слушает микрофон и возвращает распознанный текст с помощью Whisper.
"""
try:
# Загрузка модели Whisper
model = whisper.load_model("base") # Использую модель "base"
# Запись аудио с микрофона
logger.info("Слушаю...")
os.system("ffmpeg -f dshow -i audio=Микрофон (Устройство с поддержкой High Definition Audio) -t 5 -y captured_audio.wav") # Запись 5 секунд
logger.info("Аудио сохранено в captured_audio.wav")
# Распознавание речи
result = model.transcribe("captured_audio.wav", language="ru")
text = result["text"]
logger.info(f"Вы сказали: {text}")
return text
except Exception as e:
logger.error(f"Ошибка при распознавании речи: {e}")
return "Речь не распознана"
```
Что изменилось:
1. **Оффлайн-распознавание**: Теперь программа не зависит от интернета.
2. **Запись аудио**: Использую FFmpeg для записи звука с микрофона.
3. **Логирование**: Добавил логи для отслеживания ошибок и событий.
Этап 3: Интеграция в основной код
Основной цикл ассистента
Я интегрировал новую функцию `listen` в основной код ассистента. Вот отрывок:
```python
def main():
print(f"Привет! Я {ASSISTANT_NAME}, ваш виртуальный ассистент.")
speak(f"Привет! Я {ASSISTANT_NAME}, ваш виртуальный ассистент.")
while True:
try:
# Ожидание ввода (голос или текст)
print("\nГоворите или пишите команду (или 'выход' для завершения):")
print("1. Скажите 'голос' для голосового ввода.")
print("2. Введите текст команды.")
choice = input("> ").strip().lower()
# Голосовой ввод
if choice == "голос":
print("Слушаю...")
user_input = listen()
print(f"Вы сказали: {user_input}")
# Повторный ввод, если речь не распознана
while user_input == "Речь не распознана":
print("Попробуйте еще раз.")
user_input = listen()
print(f"Вы сказали: {user_input}")
```
Что работает сейчас:
1. **Распознавание речи**: Whisper отлично справляется с распознаванием речи, даже в шумной обстановке.
2. **Обработка команд**: Ассистент корректно обрабатывает команды и отвечает голосом или текстом.
3. **Логирование**: Все ошибки и события записываются в лог-файл для дальнейшего анализа.
Итог
Переход на Whisper стал отличным решением для моего проекта. Теперь ассистент работает оффлайн, распознаёт речь с высокой точностью и не зависит от интернета. Если вы хотите создать своего голосового ассистента, рекомендую начать с Whisper — это мощный и удобный инструмент.
Если у Вас есть вопросы или идеи для улучшения, то я всегда рад общению
Всем доброго времени суток!!!
Выношу на всеобщее обсуждение свою идею.
Виртуальный ассистент "Айрис"Проект "Айрис" — это разработка полноценного виртуального ассистента, который будет выполнять функции, аналогичные популярным помощникам, таким как Алиса от Яндекса, с дополнительными возможностями и улучшениями.Основные функции:
- Поддержка бесед и разговоров с пользователем.
- Управление компьютером: создание папок и файлов, редактирование текста, управление громкостью, запуск и закрытие приложений, выключение ПК и многое другое.
- Поиск в интернете по запросам пользователя.
Особенности взаимодействия:
- Идентификация пользователя по голосу, что позволяет ассистенту персонализировать общение.
- Использование веб-камеры для распознавания лиц, чтобы "Айрис" могла узнать, кто к ней обращается.- Поддержка голосового ввода и текстовой консоли для удобства работы в любых условиях.
- Возможность добавить характер и поведение ассистента, чтобы он максимально напоминал реального человека.
Проект включает серверную версию для работы как на ПК, так и на мобильных устройствах, что делает его универсальным и доступным в любое время.
Цель проекта
— создать интеллектуального и удобного помощника, который станет неотъемлемой частью повседневной жизни пользователей, улучшая их продуктивность и взаимодействие с технологией.
По мере создания, постараюсь тут выкладывать информацию и если у Вас есть какие-то идеи, что можно добавить из функционала, пишите, будем воплощать эту задумку.
По созданию MVP, выложу для тестирования в открытый доступ.
В один прохладный осенний вечер Макс и Алиса решили устроить особенный ужин. Алиса, листая рецепты, воскликнула: «Как насчёт пиццы?» Макс подхватил идею с энтузиазмом: «Да! Но это будет не просто пицца… а настоящая пицца-сюрприз!»
На кухне началась подготовка. Макс взял большую миску и, как заправский пиццайоло, подкинул в воздух тесто. «Смотри, Алиса! Я как настоящий шеф!» — сказал он, пытаясь поймать тесто, которое упрямо приземлилось прямо ему на голову. Алиса не могла сдержать смеха: «Тебе больше идёт роль веселого повара!»
Когда тесто наконец раскатали (и оно больше не пыталось сбежать), они занялись начинкой. Макс предложил добавить что-то необычное: «Давай положим сюда секретный ингредиент!» Алиса заинтересованно кивнула: «Что ты имеешь в виду?» Макс хитро улыбнулся: «Как насчёт... кусочков яблока?»
Алиса удивилась, но решила попробовать. «Хорошо, пускай это будет наша фирменная "Пицца с секретом"!»
Они начали выкладывать начинку: томатный соус, сыр, помидоры и грибы. А затем Макс аккуратно разложил тонкие ломтики яблока. «Вот увидишь, это будет наша кулинарная сенсация!» — уверенно сказал он, хотя Алиса всё ещё сомневалась. Но когда дело касается кухни, Макс всегда был неутомимым экспериментатором.
Когда пицца была готова к отправке в духовку, на кухню заглянул Саша. Он с удивлением посмотрел на начинку. «Яблоки в пицце? Вы точно уверены?» Макс с важным видом ответил: «Это наш секретный ингредиент! Никто не сможет устоять!»
Через несколько минут запах тёплой, тающей пиццы разлился по дому. Алиса открыла духовку, и они с Максом увидели золотистую корочку и растаявший сыр. «Смотри, как аппетитно выглядит!» — воскликнула она. Макс уже приготовился резать пиццу, но в этот момент Миша, привлечённый ароматом, осторожно приблизился к столу, потягиваясь к куску.
Макс и Алиса решили пригласить всех на дегустацию. Саша, с любопытством взглянув на их «пиццу с секретом», откусил первый кусочек. Он удивлённо поднял брови: «Это… неожиданно вкусно! Яблоки добавляют сладости и необычности!»
Алиса рассмеялась и тоже попробовала. «Ты был прав, Макс! Это действительно вкусно!» — сказала она, поражённая тем, как удачно сочетались яблоки с остальными ингредиентами. Миша, как всегда, проявил своё одобрение, пытаясь утащить кусочек, но Алиса успела его перехватить.
Этим вечером они поняли, что даже самые неожиданные идеи могут стать настоящими кулинарными открытиями. Главное — пробовать и не бояться экспериментировать!
Рецепт: Пицца с секретным ингредиентом
Ингредиенты:
- 1 готовое тесто для пиццы
- 3-4 столовые ложки томатного соуса
- 150 г тертого сыра
- 1 помидор
- 4-5 шампиньонов
- 1 маленькое яблоко (нарезанное тонкими ломтиками)
- Соль, перец по вкусу
- Немного оливкового масла
Приготовление:
1. Разогрейте духовку до 200 градусов.
2. Раскатайте тесто и смажьте его томатным соусом.
3. Равномерно распределите сыр, помидоры и грибы по тесту.
4. Добавьте ломтики яблока как секретный ингредиент.
5. Сбрызните оливковым маслом, посолите и поперчите по вкусу.
6. Выпекайте пиццу 10-12 минут или до золотистой корочки.
7. Наслаждайтесь необычным вкусом и удивляйте друзей!
Наступил солнечный день, и Макс с Алисой решили попробовать себя в чём-то новом — приготовлении овощного салата. Они оба слышали, что овощи полезны, но ещё не знали, что с ними можно создать настоящее произведение искусства.
«Сегодня мы будем делать салат, который не просто полезен, но и красив!» — заявил Макс, надевая огромную кулинарную шапку. Алиса подхватила его энтузиазм: «Да! Салат, который захочет съесть даже Миша!»
На кухне, как всегда, было оживленно. Алиса нарезала морковь длинными полосками, стараясь, чтобы каждая из них была идеальной, а Макс тем временем придумывал «специальный овощной соус». Но тут он обратил внимание на кабачок.
«Этот кабачок похож на маленький кораблик!» — воскликнул он. «Давай сделаем из него настоящую флотилию!» Алиса засмеялась и поддержала идею, решив, что готовка не обязательно должна быть серьёзной.
И вот на кухонном столе появились овощные кораблики — кабачки с парусами из листьев салата и маленькими флагами из помидорок черри. Но, как всегда, не обошлось без весёлых происшествий: один из «корабликов» перевернулся, и Миша тут же решил, что это его шанс попробовать новый «улов». Он прыгнул к кабачку и утащил его под стол.
«Миша, это не твоё морское приключение!» — смеясь, сказала Алиса, пытаясь вернуть овощ. Но Миша оказался слишком быстр и, довольный, спрятался под стулом.
Наконец, пришло время собирать салат. Макс взял несколько ярких овощей и стал выкладывать их на тарелке так, чтобы они напоминали радугу. «Смотри, Алиса, наш салат выглядит как настоящее произведение искусства!» — гордо произнес он. Алиса улыбнулась: «Теперь добавим твой волшебный соус и можно подавать!»
Всё было готово, и салат выглядел невероятно ярко и аппетитно. Макс, как всегда, решил, что он должен быть первым дегустатором. «На вкус как... как радуга!» — объявил он, откусив большой кусок моркови. Алиса, посмеиваясь, тоже попробовала. «Ага, а ещё с лёгким вкусом приключений!» — подмигнула она.
В этот момент Саша снова появился на кухне, привлеченный ярким видом их блюда. «Что здесь у вас на этот раз?» — спросил он, удивленно глядя на разноцветный шедевр. Макс быстро предложил ему попробовать. «Это наша версия здорового обеда! Салат, который можно есть глазами и ртом!»
Саша осторожно взял кусочек огурца, и, к удивлению Алисы и Макса, улыбнулся. «На вкус как… детство. Отлично справились!» — похвалил он. И в этот момент Миша тоже решил, что ему пора вернуться, но не с пустыми лапами, а с остатками своего «кабачкового кораблика».
Эти овощные шедевры не просто были вкусными, они стали новой историей, полной весёлых воспоминаний и приключений.
Рецепт: Радужный овощной салат
Ингредиенты:
- 1 кабачок (можно использовать как тарелку или просто нарезать для салата)
- 1 огурец
- 1 морковь
- 1 сладкий перец (разных цветов)
- Помидоры черри
- Листья салата
Соус:
- 1 столовая ложка оливкового масла
- 1 чайная ложка лимонного сока
- Щепотка соли
- Немного чёрного перца
Приготовление:
1. Нарежьте кабачок, огурец, морковь и перец на длинные полоски или круги.
2. Выложите овощи на тарелку, создавая «радугу».
3. Смешайте все ингредиенты для соуса и полейте им салат.
4. Украсьте листьями салата и помидорами черри. Наслаждайтесь ярким и полезным блюдом!
Однажды, в солнечное утро, когда птички весело щебетали, Макс и Алиса решили, что пора устроить настоящий кулинарный праздник. «Сегодня мы будем готовить блинчики!» — воскликнул Макс, как будто только что открыл секрет Вселенной. Алиса, одетая в фартук с веселыми зайцами, с радостью согласилась: «Согласна! Но только если ты не будешь добавлять в тесто странные ингредиенты, как в прошлый раз!»
На кухне царило веселье и легкий беспорядок. Макс высыпал на стол целый пакет муки, и облако белого порошка поднялось в воздух, словно маленький снежный шторм. «Смотри, Алиса! Теперь у нас зима на кухне!» — засмеялся он, вытирая муку с носа. Миша, подумав, что это снежный шар, стал прыгать и ловить его, чем вызвал смех у своих друзей. «Миша, это не снег!» — смеясь, сказала Алиса, убирая муку со стола.
Приготовление теста началось с легкого фокуса. Макс решил, что два яйца — это недостаточно для хорошего блинного настроения, и добавил еще одно, которое, к счастью, не разбилось. «Вот так! Теперь это настоящий «блинный треугольник»! Вдруг у нас получится пицца?» — весело произнес он, искренне веря, что сможет превратить блин в пиццу.
Алиса с трудом сдерживала смех. «Нет, Макс, мы все-таки готовим блинчики. Но если ты продолжишь, у нас может выйти что-то совершенно несуразное!» — ответила она, пытаясь аккуратно перемешать тесто. Но в тот момент, когда она добавила молоко, оно разлилось по столу. «Смотри, у нас и молочный дождь!» — подмигнула она, вытаскивая щетку, чтобы отмыть пол.
После множества смешных моментов и неудач, они, наконец, решили жарить блинчики. «Вот они, наши танцующие блинчики!» — объявил Макс, когда первый блин стал переворачиваться на сковороде. И правда, как только блин попал на горячую сковороду, он начал прыгать и вертеться. «Смотри! Они готовы к дискотеке!» — закричал Макс, присоединяясь к «танцам».
В это время Саша, самый серьезный из всех, зашел на кухню и не мог сдержать удивления, увидев, как блинчики прыгают и танцуют. «Что здесь происходит? Вы готовите еду или устраиваете шоу?» — спросил он, покачивая головой. Алиса ответила: «Почему бы и нет? У нас здесь блинная дискотека! Присоединяйся!»
Саша вздохнул и присел рядом с ними, наблюдая за процессом. Он даже заметил, как один блинчик решил сбежать — и как раз в это время прилип к тапкам Саши. «Теперь у меня есть танцующий блинчик на ногах!» — воскликнул он, смеясь. В этот момент Миша решил, что пора бы и полакомиться «танцующим» блинчиком. Он потерся у ног Саши и в одно мгновение схватил блинчик и убежал. Друзья весело засмеялись.
Наконец, после множества смеха и веселья, они собрали целую гору блинчиков. «Это настоящий кулинарный Эверест!» — гордо произнес Макс, рассматривая свою работу. Алиса, улыбающаяся, добавила: «Теперь мы их нарядим ягодами и сахаром. Блины должны выглядеть как настоящие звезды кулинарии!»
В конце концов, блинчики стали не только вкусными, но и смешными — как и сама их кулинарная история. И в тот момент они поняли, что готовить вместе — это не только создание вкусной еды, но и возможность весело провести время, полное смеха и приключений.
Рецепт: Волшебные блинчики с ягодами
Ингредиенты:
- 1 стакан муки
- 2 яйца
- 1 стакан молока
- 1 столовая ложка сахара
- Щепотка соли
- Ягоды (клубника, малина, черника) для подачи
- Немного растительного масла для жарки
Приготовление:
1. В глубокой миске смешайте муку, яйца, молоко, сахар и соль. (Если тесто начинает шутить, не пугайтесь — это нормально!)
2. Разогрейте сковороду на среднем огне и немного смазывайте растительным маслом. (Это как делать массаж сковороде — она оценит вашу заботу!)
3. Налейте немного теста на сковороду и жарьте с обеих сторон до золотистой корочки. Если блинчик вдруг начнет устраивать «парад», просто поблагодарите его за выступление!
4. Подавайте блинчики с ягодами и немного посыпьте сахаром.
Введение
Добро пожаловать в мир "Кулинарных приключений"! Эта книга приглашает вас в удивительное путешествие по кухне вместе с двумя друзьями — Максом и Алисой. Они не просто готовят еду, они создают волшебство, сталкиваются с забавными ситуациями и всегда находят способ повеселиться. А еще у них есть замечательный помощник – кот Миша. Вместе с ними вы научитесь готовить простые и вкусные блюда, наполненные смехом и радостью. Приготовьтесь к кулинарным приключениям, где каждое блюдо — это история, полная веселья и дружбы!
Главные герои
Макс — всегда оптимистичный и веселый мальчик, который считает, что на кухне все возможно. У него не хватает терпения, и он постоянно придумывает необычные рецепты, которые иногда заканчиваются неожиданными результатами. Макс — настоящий искатель приключений, и готовка для него — это настоящая игра!
Алиса — смелая и творческая девочка, которая обожает экспериментировать на кухне. У Алисы большое воображение, и она превращает обычные блюда в шедевры. Вместе с Максом они создают уникальные кулинарные шедевры!
Миша – серый кот, который с радостью засунет свой мокрый нос в каждую тарелку и с удовольствием отведает приготовленное блюдо.
Если Вам будет интересно, могу опубликовать для критики.


Герои книги