Piper TTS
Open Home Foundation, проект OHF-Voice · лицензия GPL-3.0-or-later
Озвучивает текст на компьютере, без облачного сервиса: агент отдаёт текст или файл и получает WAV. Есть четыре русских голоса, файл каждого весит 63 201 294 байт.
✓ Проверено 20.10.2026: Ubuntu 24.04 в одноразовом контейнере Docker на сервере, от root, без видеокарты: Python 3.12.3, uv 0.12.23, piper-tts 1.8.0 командой uv tool install piper-tts==1.8.0, ONNX Runtime 1.31.0, голос ru_RU-denis-medium. Что именно проверяли
Какую задачу решает
Консольная программа синтеза речи. Голос - нейросетевая модель, озвучка идёт на вашем компьютере, без облачного сервиса. Агент даёт ей текст или текстовый файл и получает WAV: черновую озвучку ролика, инструкции или сообщения.
- Команда piper с ключами -i и -f озвучивает текстовый файл в один WAV. В прогоне три строки тестового текста превратились в файл 9,79 с, 22 050 Гц, моно, а распознаватель речи faster-whisper вернул из него все 21 слово исходника.
- С ключом -d программа пишет отдельный WAV на каждую непустую строку файла. С --output-dir-naming text имя файла берётся из текста строки, без этого ключа имена состоят из цифр.
- Голоса качает команда python -m piper.download_voices в папку, которую задаёт ключ --data-dir: файл модели .onnx и настройки .onnx.json с Hugging Face. Русских голосов четыре: denis, dmitri, irina и ruslan. Повторный запуск уже скачанный голос заново не качает.
- Темп меняет --length-scale: с 1.5 та же строка звучала 3,6 с вместо 2,61 с. Паузу между предложениями внутри строки задаёт --sentence-silence, а текст можно подать и через стандартный ввод.
Пример результата
Говоришь агенту
Скачай русский голос ru_RU-denis-medium в папку voices и озвучь файл text.txt в all.wav с паузой 0,3 секунды между предложениями.
Что получится
Мы прогнали этот сценарий на тестовом файле из трёх строк, который скрипт написал сам. Голос скачался за 2,2 с, сумма sha256 файла совпала с записанной на Hugging Face. Команда piper -m ru_RU-denis-medium --data-dir voices -i text.txt -f all.wav --sentence-silence 0.3 за 4,3 с на весь запуск создала all.wav: 431 578 байт, 9,79 с, 22 050 Гц, моно, 16 бит. Распознаватель речи faster-whisper вернул текст файла слово в слово, 21 из 21. Исходный text.txt не изменился.
Паспорт
- Кто делает
- Open Home Foundation, проект OHF-Voice
- Исходный код
- github.com/OHF-voice/piper1-gpl
- Лицензия
- GPL-3.0-or-later
- Версия
- 1.8.0 на 20.10.2026
- Системы
- Linux · macOS · Windows
- Где работает
- На компьютере, на сервере и в контейнере
- Цена
- Бесплатно
- Проверка
- Проверено 20.10
Установить агентом
Установи программу «Piper TTS». Работай по шагам и после каждого коротко говори, что сделал.
Что это за программа (каталог smyslokod.ru, официальные источники сверены 20.10.2026):
- исходный код: https://github.com/OHF-voice/piper1-gpl
- инструкция по установке: https://github.com/OHF-voice/piper1-gpl/blob/v1.8.0/docs/CLI.md
- актуальная версия на 20.10.2026: 1.8.0
- лицензия: GPL-3.0-or-later
- для работы нужно (обязательно): Python 3.9 и новее - программа написана на Python, метаданные пакета на PyPI требуют версию 3.9 и новее, мы проверяли 3.12.3
- для работы нужно (очень желательно): uv - через uv программа встаёт в своё окружение и не задевает другие проекты на Python
- для работы нужно (в отдельных случаях): FFmpeg (ffplay) - нужен, только чтобы piper сразу проигрывал звук без файла
Правила:
1. Ничего не устанавливай и не меняй, пока я не скажу «да» на твой план.
2. Ставь только способами из этого промпта. Сторонние сборки, скрипты с форумов и из чужих репозиториев не бери.
3. Мои проекты не трогай: не меняй их файлы, виртуальные окружения и списки зависимостей (package.json, requirements.txt, pyproject.toml).
4. Если ставишь из PyPI (пакет piper-tts), то только в отдельное окружение: uv tool install или pipx. В окружение проекта и в системный Python не ставь.
5. Команды с sudo, правку профиля оболочки (~/.zshrc, ~/.bashrc) и переменной PATH делай только после моего отдельного «да» на каждую.
6. Не проси у меня пароли и ключи и не выводи их. Если нужен пароль администратора, дай команду, я выполню её сам.
7. Запускай piper и download_voices с переменной ORT_DISABLE_TELEMETRY=1 в окружении команды.
8. Голос качай только после «да» человека. Назови имя голоса, размер файла и лицензию из его MODEL_CARD.
9. Всегда задавай путь результата ключом -f или папку ключом -d.
10. После озвучки проверь, что WAV больше 44 байт: в прогоне при ошибке оставался пустой файл.
11. Веб-сервер piper.http_server запускай с --host 127.0.0.1.
Шаги:
0. Определи, где ты работаешь: мой компьютер, сервер или контейнер. Какая система и процессор, какие менеджеры пакетов есть (Homebrew, apt, winget, uv, pipx). Ставить нужно туда, где ты сам запускаешь команды.
- на компьютере: озвучить текст на своём компьютере. По документации, если стоит ffplay из FFmpeg, piper без ключа -f сразу проигрывает звук.
- на сервере: для частых запросов документация советует веб-сервер python -m piper.http_server, он ставится вариантом piper-tts[http]. По исходному коду сервер слушает все адреса на порту 5000, а запрос POST /download качает голос в папку сервера. Сервер мы не запускали.
- в контейнере: мы проверяли в контейнере Ubuntu 24.04 от root.
1. Проверь, не стоит ли программа уже: uv tool list ; command -v piper. Если стоит и запускается, ничего не ставь и переходи к шагу 5.
2. Проверь, что есть всё нужное для работы: Python 3.9 и новее, uv. Чего нет, внеси в план отдельным пунктом. Проверь свободное место на диске: нужно Окружение программы в прогоне заняло 171 569 190 байт, ещё 171 733 621 байт осталось в кэше uv. Каждый русский голос - файл .onnx на 63 201 294 байт и настройки .onnx.json на несколько килобайт, лежат в папке, куда их скачали..
3. Составь план: каким одним способом из списка ниже будешь ставить, что появится на диске и сколько места займёт, что поменяется в системе и как потом удалить. Покажи план и жди моего «да».
Способы из официальных источников:
- macOS, Windows и Linux, uv: uv tool install piper-tts==1.8.0 (Та же команда, что для Linux. На Mac мы не проверяли.)
4. Установи по согласованному плану. Если что-то идёт не так, как в плане, остановись и спроси.
5. Проверь результат:
- uv tool list: программа запускается без ошибки;
- Скачай голос ru_RU-denis-medium в папку voices и сверь его сумму sha256 с Hugging Face. Во временной папке создай текстовый файл из трёх строк, озвучь его в один WAV и в отдельные файлы по строкам. Проверь частоту, число каналов и длительность WAV, озвучь строку из стандартного ввода и проверь код выхода на голосе, которого нет. Делай это во временной папке и не трогай мои файлы.
export PATH="$HOME/.local/bin:$PATH" ORT_DISABLE_TELEMETRY=1
uv tool install piper-tts==1.8.0
uv tool list | grep piper-tts
mkdir -p /tmp/piper-test && cd /tmp/piper-test || exit 1
"$(uv tool dir)/piper-tts/bin/python" -m piper.download_voices ru_RU-denis-medium --data-dir voices
sha256sum voices/ru_RU-denis-medium.onnx
printf 'Сегодня мы проверяем синтез речи. Программа читает текст по строкам.\nКаждая строка может стать отдельным файлом.\nСпасибо, что дослушали до конца.\n' > text.txt
piper -m ru_RU-denis-medium --data-dir voices -i text.txt -f all.wav --sentence-silence 0.3
piper -m ru_RU-denis-medium --data-dir voices -i text.txt -d lines --output-dir-naming text
python3 -c "import wave,glob;[print(f,(w:=wave.open(f)).getframerate(),w.getnchannels(),w.getsampwidth(),round(w.getnframes()/w.getframerate(),2)) for f in ['all.wav']+sorted(glob.glob('lines/*.wav'))]"
echo 'Проверка стандартного ввода.' | piper -m ru_RU-denis-medium --data-dir voices -f stdin.wav
piper -m ru_RU-nosuch-medium --data-dir voices -f x.wav -- 'тест'; echo "код $?"
uv tool uninstall piper-tts
- если ты работаешь в папке моего проекта, покажи git status: от установки в проекте не должно появиться изменений.
6. Итог одним сообщением: что установлено, какой версии и куда, сколько места заняло, что поменялось в системе и как всё удалить (macOS, Windows и Linux, uv: uv tool uninstall piper-tts).
Если на любом шаге ошибка, не чини наугад: покажи текст ошибки и скажи, что, по-твоему, случилось. Частые проблемы: https://smyslokod.ru/cli/piper#problemyПромпт собран из официальных инструкций, сверенных 20.10.2026. Агент сначала проверит, что уже стоит, покажет план с местом на диске и способом удаления и без твоего «да» ничего не поставит.
Как ставят вручную
Способы из официальных источников, у каждого ссылка на первоисточник.
macOS, Windows и Linux · uv · источник
uv tool install piper-tts==1.8.0
Та же команда, что для Linux. На Mac мы не проверяли.
Как удалить
- macOS, Windows и Linux, uv:
uv tool uninstall piper-tts
Что нужно для работы
- Python 3.9 и новее (обязательно) - программа написана на Python, метаданные пакета на PyPI требуют версию 3.9 и новее, мы проверяли 3.12.3
- uv (очень желательно) - через uv программа встаёт в своё окружение и не задевает другие проекты на Python
- FFmpeg (ffplay) (в отдельных случаях) - нужен, только чтобы piper сразу проигрывал звук без файла
Системы
- Linux - на PyPI есть сборки для x86_64 и aarch64. В метаданных пакета требование Python 3.9 и новее, в списке классификаторов версии 3.9-3.13. Мы проверяли Ubuntu 24.04 на x86_64 с Python 3.12.3, без видеокарты.
- macOS - на PyPI есть сборки для Intel (macOS 10.9 и новее) и Apple Silicon (macOS 11 и новее). На Mac мы не проверяли.
- Windows - на PyPI есть сборка win_amd64. На Windows мы не проверяли.
Где запускать
Ставить нужно туда, где работает агент: на твой компьютер, сервер или в контейнер.
- На компьютере - озвучить текст на своём компьютере. По документации, если стоит ffplay из FFmpeg, piper без ключа -f сразу проигрывает звук.
- На сервере - для частых запросов документация советует веб-сервер python -m piper.http_server, он ставится вариантом piper-tts[http]. По исходному коду сервер слушает все адреса на порту 5000, а запрос POST /download качает голос в папку сервера. Сервер мы не запускали.
- В контейнере - мы проверяли в контейнере Ubuntu 24.04 от root.
Сколько ресурсов нужно
- Место на диске
- Окружение программы в прогоне заняло 171 569 190 байт, ещё 171 733 621 байт осталось в кэше uv. Каждый русский голос - файл .onnx на 63 201 294 байт и настройки .onnx.json на несколько килобайт, лежат в папке, куда их скачали.
- Память
- Один запуск piper с голосом ru_RU-denis-medium на файле из трёх строк занял до 199 060 КиБ памяти, по замеру getrusage.
- Видеокарта
- Видеокарта не нужна. Ключ --cuda по документации требует пакета onnxruntime-gpu, его мы не проверяли.
- Сеть
- При установке uv качает пакеты с pypi.org и files.pythonhosted.org: в прогоне это Fastly, 151.101.0.223, 151.101.64.223, 151.101.128.223 и 151.101.192.223, порт 443. Эти адреса и IPv6 Fastly 2a04:4e42::223, 2a04:4e42:200::223, 2a04:4e42:400::223 и 2a04:4e42:600::223 netwatch записал ещё и с портом 0: так getaddrinfo в glibc выбирает адрес источника, connect без отправки данных. Голос и список голосов программа берёт с huggingface.co (18.155.129.4, 18.155.129.31, 18.155.129.60, 18.155.129.129 и IPv6 2600:9000:244f:..., порт 443), файл голоса отдаёт us.aws.cdn.hf.co (в прогоне 12 адресов от 13.36.122.243 до 35.181.67.163, порт 443). Модуль ONNX Runtime 1.31.0 по умолчанию шлёт телеметрию Microsoft: без ORT_DISABLE_TELEMETRY=1 процесс с ним за 40 с открыл соединения с 20.42.73.26 и 4.150.223.100 на порту 443, с переменной ни одного. Озвучка с уже скачанным голосом и этой переменной в сеть не выходила. DNS контейнера - 127.0.0.11. Доступ из России мы не проверяли.
Файл из трёх строк программа озвучила за 4,3 с на весь запуск вместе с загрузкой голоса. Документация предупреждает, что консольная команда каждый раз заново загружает голос, поэтому для частых запросов советует веб-сервер.
Лицензия и платные замены
Лицензия GPL-3.0-or-later. Программа бесплатна, в том числе для работы. У каждого голоса своя лицензия, она записана в файле MODEL_CARD рядом с голосом. Условия русских голосов разобраны в блоке «О чём помнить». Текст лицензии
Цена: Бесплатно. Бесплатно, лицензия GPL-3.0-or-later. Лицензию голоса проверяйте отдельно, по файлу MODEL_CARD.
Платные замены
- ElevenLabs - Платный синтез речи в облаке, текст для озвучки уходит на серверы ElevenLabs. Цены мы не сверяли.
- Yandex SpeechKit - Синтез речи от Яндекса с доступом через Yandex Cloud. Как и ElevenLabs, получает текст на свои серверы, тарифы мы не проверяли.
Бесплатные замены
- eSpeak NG - Консольная программа синтеза речи. Piper встраивает её, чтобы переводить текст в фонемы, и её можно запускать отдельно.
О чём помнить
- Что агент делает с программой: запускает piper в терминале сам (exec). Программа читает текстовые файлы по путям, которые ей дали ключом -i (read). WAV она пишет по пути, который задаёт агент, с правами пользователя (write). С --output-dir-naming text файл получает имя по тексту строки, и по исходному коду одинаковая строка перезапишет прежний файл. Команда download_voices качает файлы голоса с Hugging Face в папку --data-dir, по умолчанию в текущую (acts). Веб-сервер piper.http_server по исходному коду принимает запрос POST /download и качает голос в свою папку, его мы не запускали. Входа в учётные записи и ключей программа не просит.
- Модуль ONNX Runtime 1.31.0, который ставится вместе с piper-tts, по умолчанию отправляет Microsoft телеметрию, так написано в его Privacy.md. В прогоне его библиотека содержала адрес mobile.events.data.microsoft.com, а процесс без переменной открыл два соединения на порт 443. Переменная ORT_DISABLE_TELEMETRY=1, заданная до запуска, это отключила, мы проверили на Linux.
- У каждого голоса своя лицензия в файле MODEL_CARD. Голоса denis и dmitri записаны на данных с лицензией CC0, у irina лицензия данных указана как Unknown, у ruslan - CC BY-NC-SA 4.0, она запрещает коммерческое использование. Все четыре дообучены от английского голоса lessac, а лицензия его записей Blizzard 2013 разрешает только исследования. Документация Piper называет программу средством для личного использования и исследований синтеза речи. Можно ли использовать такую озвучку в работе, решает человек, мы это не оценивали.
- Без ключа -f и без установленного ffplay piper пишет звук в output.wav в текущей папке и предупреждает об этом. Справка при этом обещает стандартный вывод, в WAV на стандартный вывод программа пишет только с -f -.
- Два одинаковых запуска в прогоне дали разные файлы и разную длительность: синтез идёт с шумом. При ключах --noise-scale 0 --noise-w-scale 0 пауза --sentence-silence 1.0 добавила к файлу ровно 1,0 с.
- Старый репозиторий rhasspy/piper в архиве. Ссылки «Binary Releases» в документации CLI выпуска 1.8.0 ведут на его сборки 1.2.0, это старая программа. Ещё README проекта пишет, что Open Home Foundation ищет людей, которые будут вести Piper.
Частые проблемы
ValueError: Unable to find voice: ... (use piper.download_voices), код 1
Голоса с таким именем нет в папках --data-dir, по умолчанию программа ищет в текущей папке. Скачай голос командой python -m piper.download_voices или передай папку с ним ключом --data-dir.
wave.Error: # channels not specified, код 1, WAV 0 байт
В нашем прогоне так вышло, когда файла из ключа -i не было. Проверь путь к текстовому файлу и удали пустой WAV.
WARNING: Audio playback is not available (ffplay). Writing audio to output.wav.
В команде нет ключа -f, и ffplay тоже нет. Задай файл результата ключом -f.
urllib.error.HTTPError: HTTP Error 404: Not Found у download_voices, код 1
Голоса с таким именем на Hugging Face нет. Выведи список голосов командой python -m piper.download_voices без имени и возьми имя оттуда.
Проверка
✓ Проверено 20.10.2026: Ubuntu 24.04 в одноразовом контейнере Docker на сервере, от root, без видеокарты: Python 3.12.3, uv 0.12.23, piper-tts 1.8.0 командой uv tool install piper-tts==1.8.0, ONNX Runtime 1.31.0, голос ru_RU-denis-medium.
- Когда
- 20.10.2026
- Среда
- Ubuntu 24.04 в одноразовом контейнере Docker на сервере, от root, без видеокарты: Python 3.12.3, uv 0.12.23, piper-tts 1.8.0 командой uv tool install piper-tts==1.8.0, ONNX Runtime 1.31.0, голос ru_RU-denis-medium
- Объём
- Установили и прогнали задачу на тестовых данных
- Что именно сделали
- Одноразовый контейнер Ubuntu 24.04 без данных и ключей, piper и ffplay в нём не было. Команда uv tool install piper-tts==1.8.0 поставила 7 пакетов за 2,1 с, окружение заняло 171 569 190 байт. Ключа --version у piper нет, uv tool list показала piper-tts v1.8.0.
- Проверили телеметрию ONNX Runtime 1.31.0: в её библиотеке есть адрес mobile.events.data.microsoft.com. Процесс с ONNX Runtime без переменной за 40 с открыл два соединения на порт 443 (20.42.73.26 и 4.150.223.100), с ORT_DISABLE_TELEMETRY=1 ни одного. Дальше всё шло с этой переменной.
- Команда python -m piper.download_voices ru_RU-denis-medium --data-dir voices скачала голос с Hugging Face за 2,2 с: файл .onnx 63 201 294 байт, sha256 совпала с записанной на Hugging Face. Повторный запуск в сеть не выходил.
- Скрипт сам написал text.txt из трёх строк и записал его сумму sha256. Сценарий примера: piper -m ru_RU-denis-medium --data-dir voices -i text.txt -f all.wav --sentence-silence 0.3 за 4,3 с создала all.wav: 431 578 байт, 9,79 с, 22 050 Гц, моно, 16 бит.
- Распознаватель речи faster-whisper 1.2.1 с моделью small вернул из all.wav текст файла слово в слово, 21 из 21. Это наш инструмент сверки, к программе он не относится.
- piper -m ru_RU-denis-medium --data-dir voices -i text.txt -d lines --output-dir-naming text создала три WAV с именами по тексту строк, без последнего ключа имена вышли из цифр. С --length-scale 1.5 строка звучала 3,6 с вместо 2,61 с. При нулевом шуме синтеза (--noise-scale 0 --noise-w-scale 0) ключ --sentence-silence 1.0 добавил ровно 1,0 с.
- Озвучили строку из стандартного ввода, проверили -f - (WAV в стандартный вывод) и --output-raw (звук без заголовка). Без -f и без ffplay программа предупредила и записала output.wav. Один запуск занял до 199 060 КиБ памяти.
- Коды выхода: голоса нет - 1 (Unable to find voice), файла из -i нет - 1, WAV остался 0 байт; download_voices с несуществующим голосом - 1 (HTTP 404), с именем не по шаблону - 1. Озвучка с готовым голосом ни одного внешнего соединения не открыла, text.txt не изменился.
- uv tool uninstall piper-tts удалила программу, после hash -r команды piper нет. Отдельно все 13 команд taskCommands карточки выполнили подряд в одной оболочке с чистого места, каждая завершилась с кодом 0. Значок - etc/logo.svg из репозитория, квадратное поле. Все проверки скрипт делал сам и только после них печатал TASK_OK.
| Дата | Версия | Объём | Где | Итог |
|---|---|---|---|---|
| 20.10.2026 | 1.8.0 | задача | контейнер, Linux | получилось |
«Проверено» ставим, только когда сами поставили программу и прогнали её на задаче. Сверка ссылок и вывод версии так не называются.
Похожие программы
Программу делают её авторы. Мы сверяем официальные источники и описываем, что ей нужно, но код остаётся чужим. Перед установкой посмотри план агента: что он поставит и что поменяет в системе.