PHPackages                             gobozzz/voice-assistant - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. gobozzz/voice-assistant

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

gobozzz/voice-assistant
=======================

Голосовой ИИ ассистент для Laravel сайтов и API

1.0(2mo ago)94MITPHPPHP ^8.2

Since Feb 27Pushed 2mo agoCompare

[ Source](https://github.com/Gobozzz/voice-assistant)[ Packagist](https://packagist.org/packages/gobozzz/voice-assistant)[ RSS](/packages/gobozzz-voice-assistant/feed)WikiDiscussions master Synced 1mo ago

READMEChangelog (1)Dependencies (1)Versions (2)Used By (0)

Представляю пакет "Голосовой ИИ ассистент для Laravel сайтов и API"
===================================================================

[](#представляю-пакет-голосовой-ии-ассистент-для-laravel-сайтов-и-api)

Предисловие
-----------

[](#предисловие)

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

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

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

Пакет можно использовать для WEB сайтов на Laravel с использованием blade(взяв уже готовую компоненту), так и для API проектов, вы можете отключить в конфигурации опцию `web_route_enabled`, тогда роут-маршрут публиковаться не будет и вы можете реализовать свой маршрут для использования ассистента.

Установка пакета
----------------

[](#установка-пакета)

```
composer require gobozzz/voice-assistant
php artisan vendor:publish --provider='Gobozzz\VoiceAssistant\Providers\VoiceAssistantServiceProvider' --tag=config
```

Если вы собираетесь использовать blade-компоненту для UI отображения, то выполните еще:

```
php artisan vendor:publish --provider='Gobozzz\VoiceAssistant\Providers\VoiceAssistantServiceProvider' --tag=views
php artisan vendor:publish --provider='Gobozzz\VoiceAssistant\Providers\VoiceAssistantServiceProvider' --tag=public
```

и выводите в blade шаблоне:

```

```

У вас есть возможность менять и фото, и стили, и функционал JS, и саму компоненту.

Требования
----------

[](#требования)

Для работы этого пакета необходимо установить [FFmpeg](https://ffmpeg.org/).
Убедитесь, что команда `ffmpeg` доступна в командной строке.

### Установка FFmpeg

[](#установка-ffmpeg)

**Для Ubuntu/Debian:**

```
sudo apt update
sudo apt install ffmpeg
```

**Для MacOS (с Homebrew):**

```
brew install ffmpeg
```

**Для Windows::**

- Скачайте установщик с официального сайта: [ffmpeg.org](https://ffmpeg.org)
- Следуйте инструкциям по добавлению ffmpeg в переменную окружения PATH.

Или если не знаете как, найдите соответствующий гайд в интернете по установке FFmpeg на ваш Windows.

Из коробки пакет использует API:
--------------------------------

[](#из-коробки-пакет-использует-api)

- [SaluteSpeech](https://developers.sber.ru/docs/ru/salutespeech/rest/post-speech-recognition) для транскрибации (речь в текст)
- [SaluteSpeech](https://developers.sber.ru/docs/ru/salutespeech/rest/post-speech-synthesis) для синтеза речи (из текста в речь)
- [GigaChat](https://developers.sber.ru/portal/products/gigachat-api) для общения с пользователем

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

Все реализации находятся в папке `src/Services`.

**Для базового набора с использованием SaluteSpeech и GigaChat:**

Вам необходимо получить API ключи для GigaChat API и SaluteSpeech API

- Перейдите на сайт [GigaChat API](https://developers.sber.ru/portal/products/gigachat-api)
- Войдите в личный кабинет.

Далее добавьте проекты, чтобы было как показано на фото:

[![Пример личного кабинета в GigaChat API](public/images/examples/lk-giga-chat-api.png)](public/images/examples/lk-giga-chat-api.png)

Далее войдите по очереди в каждый проект и получите API ключ для каждого из проектов:

[![](public/images/examples/get-api-key-1.png)](public/images/examples/get-api-key-1.png)

[![Пример личного кабинета в GigaChat API](public/images/examples/get-api-key-2.png)](public/images/examples/get-api-key-2.png)

Ключи добавьте в `.env` файл следующим образом:

```
VOICE_ASSISTANT_TRANSCRIBER_API_KEY=ключ из SaluteSpeech API
VOICE_ASSISTANT_SYNTHESIZER_API_KEY=ключ из SaluteSpeech API
VOICE_ASSISTANT_AI_ASSISTANT_API_KEY=ключ из GigaChat API
```

Ключ из SaluteSpeech используется и для `TRANSCRIBER` и для `SYNTHESIZER`, поэтому указываем его повторно.

Следующий шаг, это получение сертификата, так как GigaChat работает по защищенному протоколу нам нужно вместе с запросом для получения `access_token` отправлять SSL сертификат, у самого GigaChat есть [инструкция по установке](https://developers.sber.ru/docs/ru/gigachat/certificates).

Скачайте сертификат и скопируйте файл сертификата в storage, как показано тут:

[![Пример личного кабинета в GigaChat API](public/images/examples/cert-example.png)](public/images/examples/cert-example.png)

Это один и тот же сертификат, не 2 разных, просто кладем их отдельно в папки для GigaChat и SaluteSpeech.

Можете также поменять имя сертификата на более короткое, как показано в примере.

Осталось добавить в `.env` файл путь до ваших сертификатов.

Итоговый `.env`:

```
VOICE_ASSISTANT_TRANSCRIBER_API_KEY=ключ из SaluteSpeech API
VOICE_ASSISTANT_TRANSCRIBER_CERT_PATH=app/private/cert/salute_speech/ca.cer

VOICE_ASSISTANT_SYNTHESIZER_API_KEY=ключ из SaluteSpeech API
VOICE_ASSISTANT_SYNTHESIZER_CERT_PATH=app/private/cert/salute_speech/ca.cer

VOICE_ASSISTANT_AI_ASSISTANT_API_KEY=ключ из GigaChat API
VOICE_ASSISTANT_AI_ASSISTANT_CERT_PATH=app/private/cert/giga_chat/ca.cer
```

Если вы все сделали правильно, то зайдите в `config/voice-assistant.php` файл и распишите информацию о своем сайте:

[![Пример личного кабинета в GigaChat API](public/images/examples/example-config.png)](public/images/examples/example-config.png)

```
realization - текущая реализация голосового ИИ ассистента
name - Имя вашего ассистента
url_site - Ссылка на ваш сайт
info - произвольный блок, можете расписать там дополнительную информацию о ваших услугах и прочем
about_company - информация о вашей компании
link_pages - массив ссылок вашего сайта
contacts - массив ссылок на ваши контакты
parting_words - напутствующие слова для ИИ ассистента
rules_answer - правила ответа для ИИ ассистента

```

**Из коробки ИИ настроено отвечать в MD формате.**

Также для синтезатора речи может выбрать голос [тут](https://developers.sber.ru/docs/ru/salutespeech/guides/synthesis/voices).

Что если я хочу прокинуть динамические данные в своего ассистента, например из БД?
----------------------------------------------------------------------------------

[](#что-если-я-хочу-прокинуть-динамические-данные-в-своего-ассистента-например-из-бд)

Для этого вам необходимо создать своего голосового ассистента, унаследовавшись от `BaseVoiceAssistant`, и реализовать метод `getSystemPrompt()` по своему желанию.

Далее просто подмените класс в `config/voice-assistant.php` файле в ключе `voice-assistants.site.realization` на свой класс.

Простой пример:

```
