Привет, любители технологий! Сегодня я рад представить вам S.T.A.R.K. (Speech and Text Algorithmic Recognition Kit). Если вы когда-либо мечтали создать голосового ассистента, который будет современным, продвинутым и невероятно интуитивным, S.T.A.R.K. - лучшее решение.

Почему именно S.T.A.R.K.?

  1. Автономность и конфиденциальность: S.T.A.R.K. работает полностью на устройстве, гарантируя сохранность ваших данных.

  2. Распознавание контекста: С S.T.A.R.K. вы можете легко определять контекст и параметры для последующих запросов, а также одновременно выполнять несколько команд.

  3. Асинхронные команды: Запустите задачу и продолжайте использовать ваш голосовой ассистент. S.T.A.R.K. уведомит вас о завершении.

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

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

  6. Расширяемость с помощью ведущих языковых моделей: Улучшите когнитивные способности S.T.A.R.K., интегрируя его с ведущими языковыми моделями, такими как ChatGPT.

  7. Поддержка нескольких языков: Взаимодействуйте со своим голосовым ассистентом на нескольких языках.

  8. Полная настройка: Создавайте сложные команды, интегрируйте различные голосовые или текстовые интерфейсы и даже переопределяйте существующие классы.

  9. Поддержка сообщества: Присоединяйтесь к репозиторию STARK-PLACE и пользуйтесь библиотекой расширений от сообщества.

Установка

Убедитесь, что у вас установлен python версии 3.10 или выше. Для установки фреймворка со всеми зависимостями достаточно одной команды.

pip install stark-engine[all]

Минимальное приложение

Для этого руководства мы будем использовать реализацию Vosk для распознавания речи и Silero для синтеза речи. Прежде чем начать, вам нужно будет указать URL-адреса для моделей. Как Vosk, так и Silero поддерживают автоматическую загрузку и кеширование моделей при их первом использовании. Найти модели можно на официальных страницах:

Пример ссылок на модели для русского языка:

VOSK_MODEL_URL = 'https://alphacephei.com/vosk/models/vosk-model-small-ru-0.22.zip'
SILERO_MODEL_URL = 'https://models.silero.ai/models/tts/ru/ru_v3.pt'

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

# 1
import anyio
from stark import run, CommandsManager, Response
from stark.interfaces.vosk import VoskSpeechRecognizer
from stark.interfaces.silero import SileroSpeechSynthesizer

# 2
VOSK_MODEL_URL = "YOUR_CHOSEN_VOSK_MODEL_URL"
SILERO_MODEL_URL = "YOUR_CHOSEN_SILERO_MODEL_URL"

# 3
recognizer = VoskSpeechRecognizer(model_url=VOSK_MODEL_URL)
synthesizer = SileroSpeechSynthesizer(model_url=SILERO_MODEL_URL)
manager = CommandsManager()

# 4
@manager.new('привет')
def hello_command() -> Response:
    text = voice = 'Привет, мир!'
    return Response(text=text, voice=voice)

# 5
async def main():
    await run(manager, recognizer, synthesizer)

if __name__ == '__main__':
    anyio.run(main)
  1. Импорт необходимых модулей, включая anyio для асинхронного выполнения, и модули из библиотеки Stark для работы с речью: командами, распознаванием и синтезом речи.

  2. Задание URL-адресов моделей для распознавания (Vosk) и синтеза (Silero) речи.

  3. Создание объектов для распознавания (recognizer), синтеза (synthesizer) и управления командами (manager) с использованием указанных моделей.

  4. Определение новой команды "привет" с текстовым ответом "Привет, мир!".

  5. Определение асинхронной функции main(), которая запускает выполнение команд через Stark с использованием распознавания и синтеза речи. Запуск приложения с помощью anyio.run(main) при условии, что код выполняется как основная программа (if name == 'main').

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

Присоединяйтесь к нам

Для более подробного изучения каждой функции и понимания всех возможностей S.T.A.R.K. посетите официальную документацию и репозиторий на GitHub. Если вам понравился фреймворк, не забудьте добавить звезду ⭐ репозиторию.

Комментарии (8)


  1. len2367
    20.09.2023 09:53

    Напишу здесь, у вас в README.md неправильная ссылка на доку :(


    1. MarkParker5 Автор
      20.09.2023 09:53
      +1

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


      1. skopoxody
        20.09.2023 09:53

        Всё ещё 404 - page not found


        1. MarkParker5 Автор
          20.09.2023 09:53

          Должна работать. Возможно, у вас кэш DNS не обновился. Могу продублировать здесь https://stark.markparker.me/


          1. skopoxody
            20.09.2023 09:53

            Да, спасибо, документацию нашёл. Просто хотелось оповестить об кривой ссылке.
            Уточню, вот тут https://github.com/MarkParker5/STARK - документация открывается, а вот тут https://github.com/MarkParker5/STARK-PLACE - 404
            Ссылка на документацию в репо STARK-PLACE выглядит так: https://github.com/MarkParker5/STARK-PLACE/blob/master/https/stark.markparker.me/contributing-and-shared-usage-stark-place


            1. MarkParker5 Автор
              20.09.2023 09:53

              И правда! Спасибо, пофиксил, надо пойти поспать)


  1. CyberexTech
    20.09.2023 09:53
    +1

    Интересно. Что-подобное делал для своего умного дома, только решение в качестве отдельного устройства а-ля "умная колонка". Решение так же работает на Vosk для распознавания речи и Silero для синтеза речи, плюс алгоритм векторизации запросов, и самописные функции взаимодействия с умным домом. Устройство может работать как самостоятельный хаб. Демонстрация устройства.


    1. MarkParker5 Автор
      20.09.2023 09:53

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