before stt adding
This commit is contained in:
248
README.md
248
README.md
@@ -64,37 +64,110 @@ sudo apt-get install ffmpeg
|
||||
apk add ffmpeg
|
||||
```
|
||||
|
||||
6 Сгенерируйте SSL сертификаты:
|
||||
6 (Опционально) Сгенерируйте SSL сертификаты вручную:
|
||||
|
||||
```bash
|
||||
./generate-certs.sh
|
||||
```
|
||||
|
||||
**Примечание:** Если вы используете HTTPS (`GO_SPEECH_TLS=true`), сертификаты будут автоматически сгенерированы при первом запуске, если они отсутствуют.
|
||||
|
||||
7 Запустите сервис:
|
||||
|
||||
**Запуск в режиме HTTP (по умолчанию):**
|
||||
|
||||
```bash
|
||||
# Использует порт 8080 по умолчанию
|
||||
go run main.go
|
||||
```
|
||||
|
||||
Или с переменными окружения:
|
||||
**Запуск в режиме HTTP с указанием порта:**
|
||||
|
||||
```bash
|
||||
GO_SPEECH_PORT=3000 go run main.go
|
||||
```
|
||||
|
||||
**Запуск в режиме HTTPS с автогенерацией сертификатов:**
|
||||
|
||||
```bash
|
||||
GO_SPEECH_TLS=true \
|
||||
GO_SPEECH_PORT=8443 \
|
||||
GO_SPEECH_VOICE=ruslan \
|
||||
go run main.go
|
||||
```
|
||||
|
||||
**Запуск в режиме HTTPS с указанием доменов для сертификата:**
|
||||
|
||||
```bash
|
||||
GO_SPEECH_TLS=true \
|
||||
GO_SPEECH_PORT=8443 \
|
||||
GO_SPEECH_TLS_DOMAINS="example.com,api.example.com" \
|
||||
GO_SPEECH_VOICE=ruslan \
|
||||
go run main.go
|
||||
```
|
||||
|
||||
**Запуск в режиме HTTPS с использованием CA сертификата:**
|
||||
|
||||
```bash
|
||||
GO_SPEECH_TLS=true \
|
||||
GO_SPEECH_PORT=8443 \
|
||||
GO_SPEECH_CA_CERT=./ca/ca.crt \
|
||||
GO_SPEECH_TLS_DOMAINS="example.com" \
|
||||
GO_SPEECH_VOICE=ruslan \
|
||||
go run main.go
|
||||
```
|
||||
|
||||
**Запуск с разными голосами:**
|
||||
|
||||
```bash
|
||||
# Голос Irina (женский)
|
||||
GO_SPEECH_VOICE=irina go run main.go
|
||||
|
||||
# Голос Denis (мужской)
|
||||
GO_SPEECH_VOICE=denis go run main.go
|
||||
|
||||
# Голос Dmitri (мужской)
|
||||
GO_SPEECH_VOICE=dmitri go run main.go
|
||||
```
|
||||
|
||||
**Запуск с указанием конкретной модели через MODEL_PATH:**
|
||||
|
||||
```bash
|
||||
GO_SPEECH_VOICE=ruslan \
|
||||
MODEL_PATH=/path/to/custom/ru_RU-ruslan-medium.onnx \
|
||||
go run main.go
|
||||
```
|
||||
|
||||
**Запуск в режиме продакшена (минимальное логирование):**
|
||||
|
||||
```bash
|
||||
GO_SPEECH_MODE=release go run main.go
|
||||
```
|
||||
|
||||
**Запуск с кастомными путями к утилитам:**
|
||||
|
||||
```bash
|
||||
GO_SPEECH_PIPER_PATH=/opt/piper/bin/piper \
|
||||
GO_SPEECH_FFMPEG_PATH=/opt/ffmpeg/bin/ffmpeg \
|
||||
GO_SPEECH_MODEL_DIR=/data/models \
|
||||
go run main.go
|
||||
```
|
||||
|
||||
**Полный пример с переменными окружения:**
|
||||
|
||||
```bash
|
||||
GO_SPEECH_PORT=8443 \
|
||||
GO_SPEECH_TLS=true \
|
||||
GO_SPEECH_PIPER_PATH=/usr/local/bin/piper \
|
||||
GO_SPEECH_MODEL_DIR=./models \
|
||||
GO_SPEECH_VOICE=ruslan \
|
||||
GO_SPEECH_FFMPEG_PATH=/usr/bin/ffmpeg \
|
||||
GO_SPEECH_CERT_FILE=./certs/server.crt \
|
||||
GO_SPEECH_KEY_FILE=./certs/server.key \
|
||||
GO_SPEECH_MODE=debug \
|
||||
go run main.go
|
||||
```
|
||||
|
||||
Для использования другого голоса (например, `denis`, `dmitri`, `irina`):
|
||||
|
||||
```bash
|
||||
GO_SPEECH_VOICE=denis go run main.go
|
||||
```
|
||||
|
||||
### Запуск через Podman/Docker
|
||||
|
||||
1 Соберите образ:
|
||||
@@ -111,31 +184,117 @@ curl -L https://huggingface.co/rhasspy/piper-voices/resolve/main/ru/ru_RU/denis/
|
||||
curl -L https://huggingface.co/rhasspy/piper-voices/resolve/main/ru/ru_RU/denis/medium/ru_RU-denis-medium.onnx.json -o models/ru_RU-denis-medium.onnx.json
|
||||
```
|
||||
|
||||
3 Сгенерируйте сертификаты:
|
||||
3 (Опционально) Сгенерируйте сертификаты вручную:
|
||||
|
||||
```bash
|
||||
./generate-certs.sh
|
||||
```
|
||||
|
||||
**Примечание:** При использовании `GO_SPEECH_TLS=true` сертификаты будут автоматически сгенерированы при первом запуске контейнера.
|
||||
|
||||
4 Запустите контейнер:
|
||||
|
||||
**Запуск в режиме HTTP:**
|
||||
|
||||
```bash
|
||||
podman run -d \
|
||||
--name go-speech \
|
||||
-p 8080:8080 \
|
||||
-e GO_SPEECH_PORT=8080 \
|
||||
-e GO_SPEECH_VOICE=ruslan \
|
||||
-v $(pwd)/models:/app/models:ro \
|
||||
go-speech:latest
|
||||
```
|
||||
|
||||
**Запуск в режиме HTTPS с автогенерацией сертификатов:**
|
||||
|
||||
```bash
|
||||
podman run -d \
|
||||
--name go-speech \
|
||||
-p 8443:8443 \
|
||||
-e GO_SPEECH_TLS=true \
|
||||
-e GO_SPEECH_PORT=8443 \
|
||||
-e GO_SPEECH_VOICE=ruslan \
|
||||
-e GO_SPEECH_TLS_DOMAINS="example.com,api.example.com" \
|
||||
-v $(pwd)/models:/app/models:ro \
|
||||
-v $(pwd)/certs:/app/certs \
|
||||
go-speech:latest
|
||||
```
|
||||
|
||||
**Запуск с предварительно созданными сертификатами:**
|
||||
|
||||
```bash
|
||||
podman run -d \
|
||||
--name go-speech \
|
||||
-p 8443:8443 \
|
||||
-e GO_SPEECH_TLS=true \
|
||||
-e GO_SPEECH_PORT=8443 \
|
||||
-e GO_SPEECH_VOICE=ruslan \
|
||||
-v $(pwd)/models:/app/models:ro \
|
||||
-v $(pwd)/certs:/app/certs:ro \
|
||||
go-speech:latest
|
||||
```
|
||||
|
||||
Для использования другого голоса:
|
||||
**Запуск с разными голосами:**
|
||||
|
||||
```bash
|
||||
# Голос Irina
|
||||
podman run -d \
|
||||
--name go-speech-irina \
|
||||
-p 8443:8443 \
|
||||
-e GO_SPEECH_TLS=true \
|
||||
-e GO_SPEECH_VOICE=irina \
|
||||
-v $(pwd)/models:/app/models:ro \
|
||||
-v $(pwd)/certs:/app/certs:ro \
|
||||
go-speech:latest
|
||||
|
||||
# Голос Denis
|
||||
podman run -d \
|
||||
--name go-speech-denis \
|
||||
-p 8444:8443 \
|
||||
-e GO_SPEECH_TLS=true \
|
||||
-e GO_SPEECH_VOICE=denis \
|
||||
-v $(pwd)/models:/app/models:ro \
|
||||
-v $(pwd)/certs:/app/certs:ro \
|
||||
go-speech:latest
|
||||
|
||||
# Голос Dmitri
|
||||
podman run -d \
|
||||
--name go-speech-dmitri \
|
||||
-p 8445:8443 \
|
||||
-e GO_SPEECH_TLS=true \
|
||||
-e GO_SPEECH_VOICE=dmitri \
|
||||
-v $(pwd)/models:/app/models:ro \
|
||||
-v $(pwd)/certs:/app/certs:ro \
|
||||
go-speech:latest
|
||||
```
|
||||
|
||||
**Запуск в режиме продакшена:**
|
||||
|
||||
```bash
|
||||
podman run -d \
|
||||
--name go-speech \
|
||||
-p 8443:8443 \
|
||||
-e GO_SPEECH_VOICE=denis \
|
||||
-e GO_SPEECH_TLS=true \
|
||||
-e GO_SPEECH_MODE=release \
|
||||
-e GO_SPEECH_VOICE=ruslan \
|
||||
-v $(pwd)/models:/app/models:ro \
|
||||
-v $(pwd)/certs:/app/certs:ro \
|
||||
go-speech:latest
|
||||
```
|
||||
|
||||
**Запуск с кастомными путями и портом:**
|
||||
|
||||
```bash
|
||||
podman run -d \
|
||||
--name go-speech \
|
||||
-p 9000:9000 \
|
||||
-e GO_SPEECH_PORT=9000 \
|
||||
-e GO_SPEECH_TLS=true \
|
||||
-e GO_SPEECH_PIPER_PATH=/usr/local/bin/piper \
|
||||
-e GO_SPEECH_FFMPEG_PATH=/usr/bin/ffmpeg \
|
||||
-e GO_SPEECH_MODEL_DIR=/app/models \
|
||||
-e GO_SPEECH_VOICE=ruslan \
|
||||
-v $(pwd)/models:/app/models:ro \
|
||||
-v $(pwd)/certs:/app/certs:ro \
|
||||
go-speech:latest
|
||||
@@ -180,20 +339,36 @@ sudo systemctl status go-speech
|
||||
|
||||
Откройте в браузере:
|
||||
|
||||
**Для HTTPS режима:**
|
||||
|
||||
``` text
|
||||
https://localhost:8443/go-speech/front
|
||||
```
|
||||
|
||||
**Для HTTP режима:**
|
||||
|
||||
``` text
|
||||
http://localhost:8080/go-speech/front
|
||||
```
|
||||
|
||||
### GET /go-speech/help
|
||||
|
||||
Отображение документации (README.md) в браузере.
|
||||
|
||||
**Доступ:**
|
||||
|
||||
**Для HTTPS режима:**
|
||||
|
||||
``` text
|
||||
https://localhost:8443/go-speech/help
|
||||
```
|
||||
|
||||
**Для HTTP режима:**
|
||||
|
||||
``` text
|
||||
http://localhost:8080/go-speech/help
|
||||
```
|
||||
|
||||
**Возможности:**
|
||||
|
||||
- Выбор голоса из доступных моделей (Ruslan, Irina, Denis, Dmitri)
|
||||
@@ -281,20 +456,53 @@ curl https://localhost:8443/go-speech/api/v1/health --insecure
|
||||
|
||||
## Переменные окружения
|
||||
|
||||
- `PORT` - Порт для HTTPS сервера (по умолчанию: 8443)
|
||||
- `CERT_FILE` - Путь к SSL сертификату (по умолчанию: certs/server.crt)
|
||||
- `KEY_FILE` - Путь к SSL приватному ключу (по умолчанию: certs/server.key)
|
||||
- `PIPER_PATH` - Путь к бинарнику Piper TTS (по умолчанию: /usr/local/bin/piper)
|
||||
- `MODEL_DIR` - Директория с моделями (по умолчанию: models)
|
||||
- `GO_SPEECH_VOICE` - Имя голоса для синтеза речи (по умолчанию: ruslan)
|
||||
### Основные настройки
|
||||
|
||||
- `GO_SPEECH_PORT` - Порт для запуска сервера
|
||||
- По умолчанию: `8443` (если `GO_SPEECH_TLS=true`) или `8080` (если TLS отключен)
|
||||
- Можно указать любой доступный порт
|
||||
- `GO_SPEECH_VOICE` - Имя голоса для синтеза речи (по умолчанию: `ruslan`)
|
||||
- Доступные варианты: `ruslan`, `denis`, `dmitri`, `irina`
|
||||
- Путь к модели формируется как: `{MODEL_DIR}/ru_RU-{GO_SPEECH_VOICE}-medium.onnx`
|
||||
- `MODEL_PATH` - Полный путь к модели Piper TTS (опционально, переопределяет автоматический выбор на основе GO_SPEECH_VOICE)
|
||||
- `FFMPEG_PATH` - Путь к бинарнику ffmpeg (по умолчанию: /usr/bin/ffmpeg)
|
||||
- `GO_SPEECH_MODE` - Режим работы сервера (по умолчанию: debug)
|
||||
- `MODEL_PATH` - Полный путь к модели Piper TTS (опционально)
|
||||
- Переопределяет автоматический выбор на основе `GO_SPEECH_VOICE`
|
||||
- Используется, если нужно указать конкретную модель напрямую
|
||||
- `GO_SPEECH_MODE` - Режим работы сервера (по умолчанию: `debug`)
|
||||
- `release` - Режим продакшена (минимальное логирование)
|
||||
- Любое другое значение - Режим разработки (подробное логирование всех операций)
|
||||
|
||||
### Настройки TLS/HTTPS
|
||||
|
||||
- `GO_SPEECH_TLS` - Включение HTTPS режима (по умолчанию: не задано, используется HTTP)
|
||||
- Если установлено в `true` - сервер запускается по HTTPS
|
||||
- Если не задано или `false` - сервер запускается по HTTP
|
||||
- При включенном HTTPS и отсутствии сертификатов - они будут автоматически сгенерированы
|
||||
|
||||
- `GO_SPEECH_CERT_FILE` - Путь к файлу TLS сертификата (по умолчанию: `certs/server.crt`)
|
||||
- Используется только при `GO_SPEECH_TLS=true`
|
||||
- Если файл отсутствует и TLS включен - будет автоматически сгенерирован
|
||||
|
||||
- `GO_SPEECH_KEY_FILE` - Путь к файлу приватного ключа (по умолчанию: `certs/server.key`)
|
||||
- Используется только при `GO_SPEECH_TLS=true`
|
||||
- Если файл отсутствует и TLS включен - будет автоматически сгенерирован
|
||||
|
||||
- `GO_SPEECH_TLS_DOMAINS` - Список доменов для добавления в сертификат (опционально)
|
||||
- Формат: домены через запятую, например: `example.com,api.example.com`
|
||||
- В сертификат всегда автоматически добавляются: `localhost`, `127.0.0.1`
|
||||
- Используется только при автогенерации сертификатов
|
||||
|
||||
- `GO_SPEECH_CA_CERT` - Путь к CA сертификату для подписи сертификата (опционально)
|
||||
- Если задан и файл существует - сертификат будет подписан этим CA
|
||||
- CA ключ должен находиться в том же каталоге с расширением `.key`
|
||||
- Если CA не найден - генерируется самоподписанный сертификат
|
||||
- Используется только при автогенерации сертификатов
|
||||
|
||||
### Пути к утилитам
|
||||
|
||||
- `GO_SPEECH_PIPER_PATH` - Путь к исполняемому файлу Piper TTS (по умолчанию: `/usr/local/bin/piper`)
|
||||
- `GO_SPEECH_FFMPEG_PATH` - Путь к исполняемому файлу ffmpeg (по умолчанию: `/usr/bin/ffmpeg`)
|
||||
- `GO_SPEECH_MODEL_DIR` - Директория с моделями Piper TTS (по умолчанию: `models`)
|
||||
|
||||
## Кэширование
|
||||
|
||||
Сервер автоматически кэширует сгенерированные аудио файлы для ускорения обработки повторных запросов.
|
||||
|
||||
Reference in New Issue
Block a user