Своё веб-приложение озвучки текста на Gradio
Небольшая страница, где вписываешь текст и слышишь его естественным голосом, — классический первый ИИ-проект, удобный внутренний инструмент и хорошее демо для продукта. Gradio превращает функцию на Python в такую страницу за несколько строк, а бесплатный движок SuperClonica даёт голос на обычном процессоре.
В этом руководстве — минимальное приложение, как добавить голоса и настройки и как бесплатно его разместить; наше собственное демо на Hugging Face Spaces устроено именно так.
Что получится
Всё работает внутри вашего процесса Python: тексты не отправляются ни в какой сервис синтеза речи.
- Поле для текста, выбор голоса и плеер с кнопкой скачивания.
- Десять стандартных голосов и любой голос каталога, который у вас есть.
- Работает на ноутбуке, сервере или бесплатном облачном CPU.
- Без видеокарты и платного API.
Сначала послушайте голоса
Прежде чем писать код, послушайте голоса на их страницах: впишите фразу от 30 до 100 символов, выберите язык и нажмите «Озвучить». Через несколько секунд вы будете знать, какие голоса предложить в приложении.
Минимальное приложение
Выход Audio в Gradio принимает пару из частоты дискретизации и массива звука, поэтому возвращайте (rate, audio) именно в таком порядке.
- Установите оба пакета: python -m pip install superclonica-cpu gradio.
- Напишите приложение: import gradio as gr; from superclonica import Superclonica; tts = Superclonica(); def speak(text, voice): audio, rate = tts.synthesize(text, voice=voice, lang="ru"); return (rate, audio) — затем gr.Interface(fn=speak, inputs=[gr.Textbox(label="Text"), gr.Dropdown(["F1", "F2", "M1", "M2"], label="Voice")], outputs=gr.Audio()).launch().
- Запустите файл через Python и откройте локальный адрес, который выведет Gradio.
- При первом запуске скачивается модель Supertonic 3, около 385 МБ; следующие запуски занимают секунды.
Голоса, скорость и много пользователей
Добавляйте голоса каталога, передавая путь к файлу голоса вместо F1 или F2, и предложите выпадающий список языков с кодами 31 поддерживаемого языка. Скорость меняется на движке, например tts.speed = 1.1, от 0.7 до 2.0. Создайте движок один раз в начале файла, а когда приложением пользуются несколько человек одновременно, оберните вызов в threading lock, чтобы запросы шли по очереди.
Бесплатный хостинг
Hugging Face Spaces запускает приложения Gradio на бесплатном CPU: положите файл в Space как app.py вместе с requirements.txt, где указан superclonica-cpu, и Space его соберёт. Наше собственное демо SuperClonica так и работает на двух общих ядрах CPU. Ограничьте длину текста в публичном приложении и предлагайте только голоса, которыми вам разрешено делиться: стандартные голоса бесплатны по лицензии модели, а купленные голоса каталога — для ваших собственных проектов.