Piper TTS

Open Home Foundation, проект OHF-Voice · лицензия GPL-3.0-or-later

Озвучивает текст на компьютере, без облачного сервиса: агент отдаёт текст или файл и получает WAV. Есть четыре русских голоса, файл каждого весит 63 201 294 байт.

Linux · macOS · WindowsНа компьютере, на сервере и в контейнереБесплатно, GPL-3.0-or-later

✓ Проверено 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

Установить агентом

Для Claude Code, Codex, Hermes и любого агента с терминалом
Установи программу «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
Объём
Установили и прогнали задачу на тестовых данных
Что именно сделали
  1. Одноразовый контейнер 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.
  2. Проверили телеметрию 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 ни одного. Дальше всё шло с этой переменной.
  3. Команда python -m piper.download_voices ru_RU-denis-medium --data-dir voices скачала голос с Hugging Face за 2,2 с: файл .onnx 63 201 294 байт, sha256 совпала с записанной на Hugging Face. Повторный запуск в сеть не выходил.
  4. Скрипт сам написал 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 бит.
  5. Распознаватель речи faster-whisper 1.2.1 с моделью small вернул из all.wav текст файла слово в слово, 21 из 21. Это наш инструмент сверки, к программе он не относится.
  6. 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 с.
  7. Озвучили строку из стандартного ввода, проверили -f - (WAV в стандартный вывод) и --output-raw (звук без заголовка). Без -f и без ffplay программа предупредила и записала output.wav. Один запуск занял до 199 060 КиБ памяти.
  8. Коды выхода: голоса нет - 1 (Unable to find voice), файла из -i нет - 1, WAV остался 0 байт; download_voices с несуществующим голосом - 1 (HTTP 404), с именем не по шаблону - 1. Озвучка с готовым голосом ни одного внешнего соединения не открыла, text.txt не изменился.
  9. uv tool uninstall piper-tts удалила программу, после hash -r команды piper нет. Отдельно все 13 команд taskCommands карточки выполнили подряд в одной оболочке с чистого места, каждая завершилась с кодом 0. Значок - etc/logo.svg из репозитория, квадратное поле. Все проверки скрипт делал сам и только после них печатал TASK_OK.
ДатаВерсияОбъёмГдеИтог
20.10.20261.8.0задачаконтейнер, Linuxполучилось

«Проверено» ставим, только когда сами поставили программу и прогнали её на задаче. Сверка ссылок и вывод версии так не называются.

Похожие программы

Программу делают её авторы. Мы сверяем официальные источники и описываем, что ей нужно, но код остаётся чужим. Перед установкой посмотри план агента: что он поставит и что поменяет в системе.