*Прямая ссылка на видео https://www.youtube.com/watch?v=RjxHTfo2qJc
**Таймкоды видео сделала нейросеть https://300.ya.ru/v_jnA1rfNG
Таймкоды
00:00:00 Введение и компоненты голосового помощника
- Демонстрация нагрузки на Raspberry Pi 5 при использовании голосового помощника без интернета.
- Использование инструментов для распознавания голоса и синтеза речи на Python: Voice и Sleru.
- Подключение микрофона Pico 0645 для распознавания голоса на расстоянии до 6 метров.
- Взаимодействие инструментов обеспечивается фреймворком Qute на C++.
00:00:56 Личный опыт и проект метеостанции
- Автор — самоучка, программирование — его хобби.
- Проект метеостанции «Солянка» с нарезками голоса Алисы.
- Идея создания самостоятельного голосового помощника.
00:02:10 Выбор оборудования и подключение
- Выбор модели Raspberry Pi 5 с 8 ГБ памяти.
- Подключение к Raspberry Pi по RDP.
- Изучение файлов проекта «Юпитер» на фреймворке Qute.
00:03:32 Запуск проекта и интерфейс
- Запуск проекта, автоматическое приветствие и прогрев синтеза голоса.
- Описание интерфейса приложения: текстовые поля для распознавания и синтеза речи, поле для тестирования синтеза.
00:04:23 Тестирование синтеза речи
- Тестирование синтеза речи с помощью отладочного текста.
- Сравнение версий голоса Sleru: версия 4 работает быстрее, но звучит резче; версия 3.1 звучит лучше, но медленнее.
00:06:01 Команды и парсинг погоды
- Перечисление команд: погода, дни рождения, необходимость зонтика.
- Парсинг погоды с сайта без капчи.
- Заметки по синтезу речи: проблемы с ударением, возможность добавления интонаций.
00:07:18 Режим попугая и тестирование распознавания
- Активация режима попугая для тестирования распознавания голоса.
- Тестирование с разных расстояний: 1, 2, 3, 4, 5, 6 метров.
- Проблемы с распознаванием громкой речи на 80% громкости и выше.
00:11:16 Примеры команд
- Команда «Нужно ли брать сегодня зонтик?» и ответ: «Я бы рекомендовала зонтик с собой».
- Команда «Погода сейчас» и ответ: «Погода сейчас: пасмурно, небольшой дождь, температура +16 градусов, ветер восточный, 2 метра в секунду, давление 744 мм рт. ст., влажность 60%, активность на солнце 2 балла из 9».
00:12:07 Обработка команд
- Команды обрабатываются быстро благодаря списку ключевых слов.
- Для коротких команд чёткости распознавания достаточно.
- Пример кода показывает, как определяются команды.
00:12:46 Запуск голосового ассистента
- Ассистент «Юпитер» загружается и приветствует пользователя.
- Заметна нагрузка на процессор и паузы в выполнении команд.
00:13:39 Возможности ассистента
- Ассистент может объяснять сложные темы, писать тексты, составлять чек-листы и переводить фразы.
- Помогает с программированием и анализом данных.
00:14:56 Команды ассистента
- Ассистент знает команды для запроса погоды, дней рождения и других вопросов.
- Готов изучать новые команды.
00:15:24 Тестирование команд
- Запрос погоды на завтра: малооблачно, температура от +14 до +30 градусов, юго-восточный ветер 3 м/с с порывами до 7 м/с.
- Активация режима «попугая» для тестирования.
00:16:26 Режим «попугая»
- Ассистент реагирует на команды с расстояния 1 метр.
- Примеры команд: «включи свет», «узнай погоду», «открой двери», «позвони другу», «активируй ночной режим».
00:17:35 Деактивация режима «попугая»
- Режим «попугая» деактивирован.
00:17:38 Проблемы с распознаванием
- С более качественной версией голоса версии 3.1 наблюдаются задержки при распознавании больших текстов.
- Упоминание о частичном распознавании для ускорения выполнения команд.
00:17:38 Заключение
- Подчёркивается, что инструменты не требуют подключения к интернету.
- Благодарность за просмотр.
В этом видео
Эпизоды
Расшифровка видео
Raspberry Pi 5 8GB
0:00
Всем здравствуйте. В этом видео я бы
0:02
хотел продемонстрировать нагрузку на
0:03
Raspberry P5 и некоторые возможности при
0:06
использовании голосового помощника без
0:08
привязки к интернету. В составе
0:09
голосового помощника используются
0:11
инструменты для распознавания голоса и
0:12
синтеза речи на языке pтон. За
0:15
распознавание голоса будет отвечать
0:16
инструмент под названием воск. За синтез
0:18
речи будет отвечать инструмент под
0:20
названием Celero. Для воспроизведения
0:22
звука будут задействованы дешёвые
0:23
колонки и звуковая карта Creative
0:25
Soundblaster Play 3. Хочу отметить, что
0:28
для распознавания голоса используется
0:29
существительный микрофон SPH 0645,
0:32
подключенный по интерфейсу iOS. Этот
0:34
микрофон слышит мою речь до 6 м. В
0:36
предыдущем видео я рассказываю, как
0:38
подключить данный микрофон. Очень важно
0:39
наличие хорошего микрофона или звуковой
0:41
карты, так как от этого зависит скорость
0:43
и чёткость распознавания речи.
QT-Python
0:45
Взаимодействие между инструментами
0:46
голосового помощника будет обеспечивать
0:48
фреймворк QT на языке C++. Возле — это
0:51
бесплатные инструменты, не требующие
0:52
подключения к интернету. При этом, по
0:54
моему мнению, очень быстрый и
0:56
качественный. Поскольку фреймворк QT на
0:58
C++ для меня удобнее, я буду
0:59
использовать его для запуска и
1:01
взаимодействия процессов на языке
Arduino (метеостанция)
1:02
Python. Немного предисловия. Я самоучка
1:04
и не являюсь программистом, но
1:05
программирование моё хобби. С Raspberry
1:07
я познакомился совсем недавно, наряду с
1:09
моим хобби разработками на Ардуина. Как
1:11
любой Ардуинщик, среди своих проектов я
1:13
особенно выделяю свой проект
1:14
метеостанции Солянки, которая не первый
1:16
год стоит на моей кухне и периодически
1:18
разговаривает нарезками голоса всем
1:19
известной Алисы. Среди нарезы голоса
1:21
погода, напоминание, утреннее
1:23
приветствие при включении света с
1:24
запуском бодрящей музыки, улавливание
1:26
колебаний датчика улькислого газа при
1:28
наличии газовой плиты, текущий час, дни
1:30
рождения и тому подобное. И в какой-то
1:32
момент я задумался, а что если прокачать
1:34
метеостанцию самостоятельным голосом? Я
1:36
тут же полез Google и был крайне
1:37
удивлён, что это возможно сделать
1:39
самостоятельно и это будет работать
1:43
быстро. Вот несколько автоматических
1:45
реплик
1:51
метеостанции. Уровень CO2 800
1:57
единиц. Погода за окном. Очень большая
2:01
облачность. Температура +15°.
2:05
Ветер
2:06
северо-западный. Средний ветер 5 м/
Raspberry Pi 5 8GB (OS-инфо)
2:10
Итак, моим выбором стала последняя
2:12
модель Raspberry P5 на 8 ГБ, чтобы также
2:15
был запас по железу для параллельно
2:16
работы других домашних сервисов. Немного
2:18
смутило наличие линукса на Rasberry,
2:20
потому как сталкивался с Линуксом редко,
2:22
но меня успокаивала мысль о том, что
2:24
любимый фреймворк QT работает в том
2:25
числе на Линуксе. Напомню, что в этом
2:27
видео я бы хотел вкратце показать
2:29
нагрузку на железо Raspberry без
2:30
углубления в код проекта. А сейчас
2:32
давайте подключимся к Raspberry. Итак, я
2:35
подключился на Raspberry поdп с
2:36
основного компьютера. Сейчас убедимся в
2:38
нашей модели Raspberry. Также посмотрим
2:41
данные операционки. Давайте минимально
Проект QT
2:43
изучим файлы проекта под названием
2:44
Юпитер, что, собственно, относится к
2:46
имени голосового помощника. Это файлы
2:48
основного проекта на фреймворке QT.
2:50
Давайте откроем скрипт для распознавания
2:52
голоса на языке Python. Суть в том, что
2:54
основной проект запускает этот скрипт
2:55
процесс один раз в режиме приёма
2:57
передачи данных распознавания голоса.
2:59
Этот инструмент использует минимальную
3:00
модель распознавания всего на 90 Мб.
3:02
Также есть максимальная модель, которая
3:04
занимала бы в памяти более 5 Гб, и её
3:06
первичная загрузка даже на ПК будет
3:08
занимать около минуты. А теперь давайте
3:10
откроем скрипт для синтеза речи на языке
3:12
Python. Основной проект также запускает
3:13
этот скрипт процесс один раз в режиме
3:15
приёма данных для воспроизведения
3:16
синтеза волоса. Также я заранее открыл
Приветствие (v4.0)
3:18
диспетчер задач, чтобы в дальнейшем
3:20
наблюдать за нагрузкой. Теперь запустим
3:21
сам проект, после чего начнётся
3:23
автоматическое трёхкратное приветствие,
3:25
и оно же, что очень важно, первичный
3:26
прогрев синтеза голоса, чтобы в
3:28
дальнейшем отклик голоса был быстрее.
3:33
Здравствуйте. Загружаюсь. Прошу меня
3:35
подождать. Я голосовой ассистент. Моё
3:38
имя Юпитер. Слушаю вас. Обратите
3:41
внимание на диспетчер задач. С запуском
3:43
появились два процесса под названием
3:44
Python. Заглянем в параметры звука, при
Параметры звука, приложение
3:46
которых работает приложение. Теперь
3:48
рассмотрим интерфейс приложения более
3:50
подробней. В правой части приложения
3:51
расположено текстовое поле с данными
3:53
распознавания голоса в реальном времени.
3:55
В левой части расположено текстовое поле
3:56
с данными синтеза речи. Также в левой
3:58
части сверху есть поле для тестирования
4:00
синтеза реч. В нижней части текстовое
4:02
поля со стартовыми логами. В верхней
4:04
части можно визуально наблюдать за
4:05
состоянием всех инструментов, что
4:06
полезно для понимания логики и
4:08
отлавливания багов. Для начала попробуем
Тестовый текст (v4.0)
4:10
проговорить отладочный текст в левой
4:11
верхней части экрана. В этот раз я
4:13
сделаю захват звука напрямую с
4:14
приложения, чтобы лучше оценить голос.
4:23
Я могу объяснить сложные темы простыми
4:26
словами, от квантовой физики до
4:28
кулинарных рецептов. Помогу написать
4:30
текст, письмо, эсс, пост для соцсетей
4:33
или даже стихи под настроение. Нужен
4:36
план действий. Составлю чек-листы,
4:38
расписания или пошаговые инструкции.
4:41
Переведу фразы на разные языки или научу
4:44
вас новым словам, как настоящий
4:46
лингвист, полиглот. Разберусь в коде,
4:48
подскажу с программированием или помогу
4:50
найти ошибку в формуле. Придумаю идеи
4:54
для названий, проектов, подарков или
4:56
даже сценарии мини-игры. Обсужу книги,
4:59
фильмы или последние научные открытия.
5:02
Давайте поболтаем. Помогу
5:04
проанализировать данные от таблиц Excel
5:07
до тенденций в вашей сфере. Подберу
5:09
аналоги товаров, лучшие варианты по
5:11
бюджету или лайфхаки для экономии
5:14
времени. Всегда выслушаю и дам
5:16
нейтральный совет. Если нужно взглянуть
5:18
на ситуацию со стороны, сейчас вы
5:20
слышали голос инструмента Селера. Голос
5:22
под названием Ксения, версия 4. Версия 4
5:24
немного режит слух, хотя быстро
5:26
привыкаешь, но она работает в разы
5:27
быстрее в сравнении с предыдущей версией
5:29
3.1. Версия 3.1 звучит, на мой взгляд,
5:31
идеально, но работает медленнее, на что
5:33
можно сделать скидку для версии четыре.
5:35
Позже я запущу приложение для сравнения
5:36
с более качественным голосом версии 3.1.
Команда — что умеет (v4.0)
5:38
Идём далее. Попросим голос рассказать,
5:40
что он умеет. Также отмечу, что звуки
5:42
отклика голоса по имени вы сразу
5:44
узнаете. При произношении команды текст
5:46
сразу отправляется сенту заречи, но в
5:47
зависимости от размера текста он
5:49
обрабатывается с небольшой задержкой.
5:50
Обратите внимание на загрузку процессора
5:52
в диспетчере задачи.
5:55
Юпитер, какие команды ты знаешь?
6:02
Вот что я знаю. Вы можете узнать погоду
6:04
сейчас. Вы можете спросить погоду на
6:07
сегодня. Можете спросить, какая погода
6:09
завтра. Также вы можете спросить погоду
6:12
на день недели. Например, погода в
6:14
понедельник. Можете спросить меня, нужно
6:16
ли брать сегодня зонтик? Спросите меня
6:19
про ближайшие дни рождения или дни
6:21
рождения в этом месяце. Это пока всё,
6:23
что я умею. Я с удовольствием изучу
6:25
новые команды.
6:28
Так как заморачиваться с ключами АПИ
6:29
совсем не хочется. Погода просто
6:31
парсится с одного известного сайта без
6:33
капчи, что происходит вполне быстро.
6:34
Перечисленные команды — это пока всё,
6:36
что я успел сделать. Впереди ещё много
Заметки по Silero (синтез голоса)
6:38
работы. Ещё несколько заметок по синтезу
6:40
голоса. Голос не умеет переводить цифры,
6:42
но это не проблема. Для этого есть
6:43
отдельные методы перевода цифры в текст.
6:45
Редко бывает проблема ударения в словах,
6:47
но это легко корректируется прямо в
6:49
тексте с символом плюса перед гласный.
6:50
Разные версии голоса могут съедать
6:52
последнюю букву конца текста. Чтобы
6:54
этого избежать, я ставлю одну или
6:55
несколько точек в конце. Возможно, с
6:57
пробелами. А ещё разработчиками
6:59
предусмотрена возможность добавлять
7:00
интонации в тексте, изменять скорость
7:02
голоса, расставлять паузы. Но у меня
7:04
почему-то не получается это сделать,
7:05
хотя всё должно работать. Сейчас я
Режим попугая (v4.0, шепот)
7:07
активирую режим попугая для свободного
7:08
разговора, чтобы понять, как наслышит
7:10
инструмент распознавания голоса. В
7:12
процессе я намеренно использую
7:13
предложение с неправильным ударением в
7:15
слове, что легко можно исправить в
7:16
дальнейшем.
7:20
Юпитер, активировать режим попугая.
7:24
Режим попугая активирован.
7:26
Сейчас я говорю с расстояния 1 м.
7:30
Сейчас я говорю с расстояния 1 м. Шла
7:33
Саша по шоссе и сосала сушку.
7:37
Шла Саша пошёсе и сосала сушку. Сейчас я
7:40
говорю с расстояния 2 м.
7:43
Сейчас я говорю с расстояния 2 м. Включи
7:47
свет. Включи свет. Узнай погоду. Узнай
7:51
погоду.
7:53
Сейчас я говорю с расстояния 3 м.
7:57
Сейчас я говорю с расстояния 3 м. Открой
8:00
двери. Открой двери. Позвони другу.
8:04
Позвони другу. Сейчас я говорю со
8:07
расстояние 4 м.
8:09
Сейчас я говорю состояние 4 м. Сейчас я
8:13
говорю с расстояния 4 м.
8:16
Сейчас я говорю с расстояния 4 м.
8:19
Активируй ночной режим.
8:22
Активируй ночной режим. Что будем
8:24
сегодня делать?
8:26
Что будем сегодня делать?
8:29
Сейчас я говорю с расстояния 5 м.
8:33
Сейчас я говорю с расстояния 5 м.
8:36
Увеличь громкость.
8:38
Увеличь громкость. Сделай напоминание.
8:42
Сделай напоминание.
8:45
Сейчас я говорю со расстояние 6 м.
8:48
Сейчас я говорю состояние 6 м. Сейчас я
8:52
говорю с расстояния 6 м.
8:55
Сейчас я говорю с расстояния 6 м.
8:58
Выполни запрос.
9:01
Выполни заброс. Загадка два конца. Два
9:04
конца. Загадка два. Загадка два конца.
9:07
Два кольца. Посередине гвоздик. Что
9:10
это? Загадка. Два конца. Два конца.
9:13
Посередине гвоздик. Что это?
9:21
Снова говорю в микрофон с расстояния 1
9:23
м.
9:24
Снова говорю в микрофон состояния 1 м.
9:28
Говорю шёпотом.
9:30
Говорю шёпотом. 6
9:33
6 150
9:36
150 2043
9:40
3.043
9:41
2043
9:44
2003
9:46
2043
9:48
2.43
9:54
Включи свет. Включи свет. Узнай погоду.
9:59
Узнай погоду. Открой двери.
10:02
Открой двери. Позвонить руку. Позвонить
10:06
руку. Активируй ночной режим.
10:10
Активируй ночной режим. Что будем
10:13
сегодня делать? Что будем сегодня
10:16
делать? Сделай напоминание.
10:19
Сделай напоминание. 150.245
10:24
150.245
10:26
5 93
10:29
93 158
10:31
158 3945
10:35
3.945 945.
10:39
Режим попугая деактивировать.
10:43
Режим попугая деактивирован.
10:46
Вот мы потестировали минимальную модель
10:47
распознавания голоса. Громкость
10:49
микрофона держалась на уровне 46%.
10:51
Громкости я стараюсь не задирать, так
10:53
как уже на 80% громкая речь почему-то не
10:55
распознаётся, а на 100% вообще ничего не
10:57
слышит. Почему так происходит? Я не могу
10:59
ответить на этот вопрос. Но всего этого
11:01
достаточно для выполнения простых
11:03
команд. Теперь попробуем другие команды.
Прочие команды (v4.0)
11:07
Юпитер, нужно ли брать сегодня
11:10
зонтик? Поняла. Прошу
11:15
подождать. Сейчас посмотрю, нужно ли
11:18
сегодня брать зонтик. Сегодня 8 мая. В
11:21
вечернее и ночное время дождь
11:23
зафиксирован один раз. В дневное время
11:25
дождь зафиксирован три раза. Также дождь
11:28
будет в 7:00 утра. Я вижу дождь в 10:00
11:31
утра. Будет дождь в час дня. Я бы
11:34
рекомендовала взять зонтик с собой.
11:38
Юпитер, погода сейчас.
11:42
Ищу
11:45
информацию. Погода сейчас пасмурно,
11:48
небольшой дождь. Температура
11:51
+16°. Ветер восточный- 2 м/с. Давление
11:55
744 мм ртутного столба. Влажность 60%.
12:01
Активность на солнце два балла из девяти
12:03
и классифицируется как небольшое
12:05
возмущение.
12:07
Как вы видите, команда обрабатывается
12:09
довольно быстро. Не буду тратить время
12:11
на все команды. Пойдём дальше. Сейчас я
Немного кода
12:12
покажу пример кода, как определяются
12:14
команды. Для моих задач достаточно
12:16
списка ифов с поиском ключевых слов во
12:18
фразе. Я могу наговорить целое
12:20
предложение, но когда оно будет
12:21
распознано и передано на обработку, я
12:23
возьму из него только ключевые слова, и
12:25
это будет работать. Для коротких команд
12:26
чёткости распознавания вполне хватает.
12:28
Вот так выглядит вступление со
12:30
случайными репликами, чтобы они
12:31
приедались. Вот так выглядит перевод
12:33
цифр в текст. Сейчас закроем приложение
Приветствие (v3.1)
12:35
и попробуем изменить голос на более
12:36
качественный, но не такой
12:37
быстродействующий. Это будет голос той
12:39
же Ксении, но версии 3.1. Запускаем
12:41
приложение и выполним несколько команд
12:43
для сравнения.
12:47
Очень рада, что вы меня
12:49
включили. Я загружаюсь, прошу меня
12:53
подождать. Я голосовой ассистент. Моё
12:56
имя Юпитер. Я загрузилась.
13:00
Обратите внимание на нагрузку
13:01
процессора. Сейчас она будет более
13:03
заметна. Также будет очевидна заметная
Тестовый текст (v3.1)
13:05
пауза в выполнении команд. Для начала
13:07
попробуем проговорить отладочный текст в
13:08
левой верхней части экрана.
13:40
Я могу объяснить сложные темы простыми
13:42
словами, от квантовой физики до
13:44
кулинарных рецептов. Помогу написать
13:47
текст. письмо, эссе, пост для соцсетей
13:49
или даже стихи под настроение. Нужен
13:52
план действий. Составлю чек-листы и
13:54
расписания или пошаговые инструкции.
13:57
Переведу фразы на разные языки или научу
14:00
вас новым словам, как настоящий
14:03
лингвист-полиглот. Разберусь в коде,
14:05
подскажу с программированием или помогу
14:07
найти ошибку в формуле. Придумаю идеи
14:10
для названий, проектов, подарков или
14:13
даже сценария мини-игры. Обсужу книги,
14:16
фильмы или последние научные открытия.
14:18
Давайте поболтаем. Помогу
14:20
проанализировать данные от таблицы Excel
14:23
до тенденций в вашей сфере. Подберу
14:26
аналоги товаров, лучшие варианты по
14:28
бюджету или лайфхаки для экономии
14:30
времени. Всегда выслушаю и дам
14:32
нейтральный совет, если нужно взглянуть
14:35
на ситуацию со стороны.
Прочие команды (v3.1)
14:39
Юпитер, какие команды ты знаешь?
14:56
Я знаю следующие команды. Вы можете
14:59
узнать погоду сейчас, вы можете спросить
15:02
погоду на сегодня. Можете спросить,
15:04
какая погода завтра. Также вы можете
15:07
спросить погоду на день недели,
15:09
например, погода в понедельник. Можете
15:11
спросить меня, нужно ли брать сегодня
15:13
зонтик? Спросите меня про ближайшие дни
15:16
рождения или дни рождения в этом месяце.
15:19
Это пока всё, что я умею. Я с
15:21
удовольствием изучу новые команды.
15:26
Юпитер, тестовая команда.
15:30
Это тестовая команда.
15:34
Юпитер, погода завтра.
15:38
Поняла. Прошу подождать.
15:53
Погода в пятницу, 9 мая. Малооблачно.
15:57
Температура в течение дня от +14 до
16:00
+30°. Ветер юго-восточный 3 м/с с
16:04
порывами до 7
16:05
м/с. Минимальное давление 737.
16:09
Максимальная 741 мм ртутного столба.
16:13
Активность на солнце четыре балла из
16:15
девяти и классифицируется как небольшое
16:17
возмущение.
Режим попугая (v3.1)
16:22
Юпитер, активировать режим попугая.
16:27
Режим попугая активирован.
16:29
Сейчас я говорю с расстояния 1 м.
16:34
Сейчас я говорю с расстояния 1 м. Шла
16:37
Саша по шоссе и сосала сушку.
16:41
Шла Саша по шосе и сосала сушку. Включи
16:45
свет.
16:46
Включи свет. Узнай погоду.
16:50
Узнать погоду. Открой двери.
16:53
Открой двери. Позвони другу.
16:57
Позвони другу. Активирую ночной режим.
17:01
Активирую ночной режим. Что будем
17:04
сегодня делать?
17:06
Что будем сегодня делать? Увеличь
17:08
громкость.
17:10
Увеличь громкость. Сделай напоминание.
17:14
Белый напоминание. Сделай напоминание.
17:19
Сделай напоминание.
17:21
29
17:24
29 100.745
17:28
100.745.
17:31
Режим попугая деактивировать.
17:35
Режим попугая деактивирован.
17:38
Как мы видим, с этой более качественной
17:40
версией голоса версии 3.1 можно работать
17:42
с короткими командами, но с большими
17:44
текстами наблюдается существенные
17:45
задержки на Разбере. Ещё хотел бы
Частичное распознавание
17:47
показать более быстрый способ
17:48
распознавания голоса. Сейчас
17:50
раскомментирую строки в коде для
17:52
частичного распознавания. Это частичное
17:54
распознавание, которое накапливает
17:55
сказанное, после чего выдают
17:57
окончательный результат. Шла Саша по
17:58
шоссе и сосала сушку. Это тоже можно
18:01
было бы использовать, чтобы ещё быстрее
18:02
выполнять команды. Вот, вроде бы, и всё,
18:04
что хотел показать. На мой взгляд, я
18:06
нашёл лучшие инструменты, не требующие
18:08
подвещение к интернету. Спасибо за
18:10
просмотр.

