https://github.com/magomedcoder/golosok
https://github.com/magomedcoder/golosok
Last synced: 9 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/magomedcoder/golosok
- Owner: magomedcoder
- Created: 2025-08-30T17:33:58.000Z (10 months ago)
- Default Branch: main
- Last Pushed: 2025-08-31T17:39:11.000Z (10 months ago)
- Last Synced: 2025-08-31T18:17:47.546Z (10 months ago)
- Language: Go
- Size: 5.86 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Golosok - офлайн-голосовой ассистент на Go
**Golosok** - это лёгкий и расширяемый голосовой ассистент, который работает полностью локально, без интернета.
Возможности:
- Распознавание речи с микрофона через Vosk (STT)
- Озвучивание ответов голосом (TTS через RHVoice или консоль)
- Нормализация текста (преобразование чисел в слова и очистка от лишних символов)
- Управление таймерами
---
## Сборка
### Linux
```bash
docker build -t golosok-linux .
CID=$(docker create golosok-linux)
docker cp "$CID":/opt/golosok/build ./build/golosok-linux
docker rm "$CID"
```
### Windows
```bash
docker build -f Dockerfile-windows -t golosok-windows .
CID=$(docker create golosok-windows)
docker cp "$CID":/opt/golosok/build ./build/golosok-windows
docker rm "$CID"
```
### Тестовый запуск с фейковым STT
```bash
# Linux
cd build/golosok-linux
LD_LIBRARY_PATH=./lib ./golosok -stt-test 1
# Windows
cd build/golosok-windows
golosok.exe -stt-test 1
```
## Запуск
```bash
# Linux
cd build/golosok-linux
LD_LIBRARY_PATH=./lib ./golosok
# Windows
cd build/golosok-windows
golosok.exe
```
---
## Примеры команд
- голосок привет
- голосок дата
- голосок время
- голосок поставь таймер | поставь таймер
- голосок удали таймер | отмени таймер
- голосок удали все таймеры | сбрось все таймеры | отмени все таймеры
- голосок команды
------------------------------------------------------------------------
## Создание своей команды
1. Создайте папку с именем вашей команды в каталоге `internal/commands/`.
Например: `internal/commands/example/`.
2. В этой папке можно держать одну или несколько команд.
Пример файла `example.go`:
``` go
package example
import (
"github.com/magomedcoder/golosok/internal/core"
)
// Register регистрирует команды
func Register(c *core.Core) {
c.RegisterCommand("пример", func(c *core.Core, phrase string) {
c.Say("Я пример")
})
c.RegisterCommand("ещёпример", func(c *core.Core, phrase string) {
c.Say("Я ещё один пример")
})
}
```
> Здесь `"голосок пример"` и `"голосок ещёпример"` - ключевые фразы, которые должен произнести пользователь.
>
> `phrase` - остаток распознанного текста после ключа.
> Например, если сказать «голосок пример тест», то в функцию придёт `"тест"`.
3. Подключите новую команду в `cmd/golosok/main.go`.
В начале файла (в блоке `import`) добавьте строку:
``` go
"github.com/magomedcoder/golosok/internal/commands/example"
```
А в `main()`, сразу после инициализации ядра (`c := core.NewCore()`) вызовите:
``` go
example.Register(c)
```
5. Пересоберите проект, чтобы все команды из папки стали доступны.
### Пример использования
После добавления и регистрации команды: `голосок пример`
Ассистент ответит: `Я пример`