원클릭으로
tts-generator
// Генерация голосовых промптов для MikoPBX модулей на 25+ языках через Piper TTS / MMS-TTS. Использовать при создании модулей с голосовыми сообщениями, добавлении новых языковых фраз или обновлении существующих звуковых файлов.
// Генерация голосовых промптов для MikoPBX модулей на 25+ языках через Piper TTS / MMS-TTS. Использовать при создании модулей с голосовыми сообщениями, добавлении новых языковых фраз или обновлении существующих звуковых файлов.
Тестирование сценариев Asterisk dialplan и потоков звонков. Использовать при тестировании логики маршрутизации звонков, отладке проблем dialplan или проверке потоков IVR меню.
Анализ файлов логов MikoPBX (system/messages, PHP, Asterisk, nginx, fail2ban) в Docker контейнере для диагностики проблем. Использовать при отладке ошибок, отслеживании процессов воркеров, исследовании проблем API или анализе причин после упавших тестов.
Управление многоязычными переводами UI-файлов src/Common/Messages на 29 языков с приоритетом русского языка (перевод русских ключей на остальные 28 языков, проверка консистентности, удаление устаревших ключей). Использовать при добавлении новых переводов или переводе на все языки. НЕ для извлечения/синхронизации русских rest_* ключей REST API из кода — для этого используйте restapi-translations.
Управление переводами REST API ключей (rest_*) для MikoPBX. Автоматически находит отсутствующие русские ключи в RestApi.php и синхронизирует их с исходным кодом. Использовать при проверке переводов API, после добавления новых endpoints или перед релизом.
Анализ ошибок из self-hosted Sentry (sentry.miko.ru:8443). Получение топ ошибок, просмотр stacktrace, breadcrumbs, тегов и поиск по ключевым словам. Фильтрация по релизу. Использовать при анализе и исправлении ошибок в MikoPBX.
Генерация и доработка модулей MikoPBX. Создание новых модулей по описанию на естественном языке, добавление функциональности в существующие модули, оптимизация и унификация кода модулей. Использовать когда пользователь хочет создать новый модуль, добавить фичу в модуль, оптимизировать модуль или узнать как устроена система модулей.
| name | tts-generator |
| description | Генерация голосовых промптов для MikoPBX модулей на 25+ языках через Piper TTS / MMS-TTS. Использовать при создании модулей с голосовыми сообщениями, добавлении новых языковых фраз или обновлении существующих звуковых файлов. |
| allowed-tools | Bash, Read, Write, Grep, Glob, Agent |
You are a voice prompt generation assistant for MikoPBX. You generate WAV audio files from text in 25+ languages using TTS engines running on a remote Mac Studio.
Local machine (development)
↓ SSH + rsync
Mac Studio VM: admin@thai-mac-studio-agent-01
~/Development/mikopbx-tts-generator/
├── generate_tts.py # TTS generation script
├── {lang}/core-sounds-*.txt # Translation files
└── output/{lang}/*.wav # Generated audio
TTS Engines:
| Code | Language | Piper Voice |
|---|---|---|
| en-en | English | en_GB-alba-medium |
| ru-ru | Russian | ru_RU-irina-medium |
| Code | Language | Piper Voice |
|---|---|---|
| cs-cs | Czech | cs_CZ-jirka-medium |
| da-dk | Danish | da_DK-talesyntese-medium |
| de-de | German | de_DE-thorsten-medium |
| nl-nl | Dutch | nl_NL-mls-medium |
| es-es | Spanish | es_ES-sharvard-medium |
| fr-ca | French | fr_FR-siwis-medium |
| gr-gr | Greek | el_GR-rapunzel-low |
| it-it | Italian | it_IT-riccardo-x_low |
| pl-pl | Polish | pl_PL-darkman-medium |
| pt-br | Brazilian Portuguese | pt_BR-faber-medium |
| sv-sv | Swedish | sv_SE-nst-medium |
| tr-tr | Turkish | tr_TR-dfki-medium |
| Code | Language | Engine | Voice |
|---|---|---|---|
| pt-pt | Portuguese | Piper | pt_PT-tugão-medium |
| uk-ua | Ukrainian | Piper | uk_UA-ukrainian_tts-medium |
| vi-vn | Vietnamese | MMS | vie |
| ro-ro | Romanian | Piper | ro_RO-mihai-medium |
| hu-hu | Hungarian | Piper | hu_HU-anna-medium |
| fi-fi | Finnish | Piper | fi_FI-harri-medium |
| ka-ge | Georgian | Piper | ka_GE-natia-medium |
| zh-cn | Chinese | Piper | zh_CN-huayan-medium |
| az-az | Azerbaijani | MMS | azj-script_latin |
| th-th | Thai | MMS | tha |
| hr-hr | Croatian | Piper | sr_RS-serbski_institut-medium |
For each target language, translate the phrase. Use Claude to translate directly:
English: "This call direction is prohibited"
Russian: "Данное направление звонка запрещено"
Ukrainian: "Цей напрямок дзвінка заборонено"
Georgian: "ზარის ეს მიმართულება აკრძალულია"
... (all 25 languages)
Write a temporary file on the VM:
ssh admin@thai-mac-studio-agent-01 'cat > ~/Development/mikopbx-tts-generator/custom-phrase.txt << EOF
; Custom phrase for ModuleUsersGroups
call-direction-prohibited: <translated text>
EOF'
For Piper languages:
ssh admin@thai-mac-studio-agent-01 'eval "$(/opt/homebrew/bin/brew shellenv)" && \
echo "<translated text>" | piper \
--model ~/.local/share/piper-voices/<voice>.onnx \
--output_file ~/Development/mikopbx-tts-generator/output/<lang>/call-direction-prohibited.wav'
For MMS languages:
ssh admin@thai-mac-studio-agent-01 'eval "$(/opt/homebrew/bin/brew shellenv)" && \
cd ~/Development/mikopbx-tts-generator && \
python3.11 generate_tts.py --lang <lang> --key call-direction-prohibited --format native'
rsync -avz admin@thai-mac-studio-agent-01:~/Development/mikopbx-tts-generator/output/<lang>/call-direction-prohibited.wav \
/path/to/Module/Sounds/<lang>/call-direction-prohibited.wav
The main script handles batch generation from translation files:
# Preview what would be generated
ssh admin@thai-mac-studio-agent-01 'eval "$(/opt/homebrew/bin/brew shellenv)" && \
cd ~/Development/mikopbx-tts-generator && \
python3.11 generate_tts.py --lang uk-ua --dry-run'
# Generate single file
python3.11 generate_tts.py --lang uk-ua --key vm-goodbye --format native
# Generate all files for a language
python3.11 generate_tts.py --lang uk-ua --format native
# Generate all languages
python3.11 generate_tts.py --lang all --format native
native — TTS native rate (22kHz Piper / 16kHz MMS) — recommended8k — 8000 Hz mono (classic Asterisk)16k — 16000 Hz mono (wideband)22k — 22050 Hz monoFor generating a single phrase in one language without the full script:
# Piper (most languages)
ssh admin@thai-mac-studio-agent-01 'eval "$(/opt/homebrew/bin/brew shellenv)" && \
echo "Данное направление звонка запрещено" | piper \
--model ~/.local/share/piper-voices/ru_RU-irina-medium.onnx \
--output_file /tmp/test-phrase.wav'
# Copy result
scp admin@thai-mac-studio-agent-01:/tmp/test-phrase.wav /tmp/
Models are auto-downloaded on first use to ~/.local/share/piper-voices/. To pre-download:
ssh admin@thai-mac-studio-agent-01 'eval "$(/opt/homebrew/bin/brew shellenv)" && \
cd ~/.local/share/piper-voices && \
curl -sL "https://huggingface.co/rhasspy/piper-voices/resolve/main/<lang_short>/<lang_code>/<voice_name>/<quality>/<voice_id>.onnx" -o "<voice_id>.onnx" && \
curl -sL "https://huggingface.co/rhasspy/piper-voices/resolve/main/<lang_short>/<lang_code>/<voice_name>/<quality>/<voice_id>.onnx.json" -o "<voice_id>.onnx.json"'
ModuleName/
Sounds/
<asterisk-lang-code>/
custom-phrase.wav
another-phrase.wav
subfolder/
nested-phrase.wav
Language Pack modules use the Asterisk language code as directory name (e.g., uk-ua, pt-pt).
Feature modules can use any structure — files get prefixed with module name on install.