Озвучка текста в React Native: от системных голосов до своего сервера
Приложение на React Native может говорить тремя способами: голосами телефона, заранее озвученными файлами или через сервер, который озвучивает новый текст по запросу. Голоса телефона бесплатны и работают офлайн, но на каждом устройстве звучат по-разному; два других способа дают приложению один узнаваемый голос.
SuperClonica даёт естественные голоса на 31 языке — попробовать можно бесплатно онлайн, — бесплатный движок, чтобы озвучить фразы приложения на компьютере, и Docker-сервер для меняющегося текста. В этом руководстве — каждый подход в React Native и Expo.
Три способа заставить приложение говорить
SuperClonica говорит на 31 языке; китайский пока не поддерживается, так что для китайского интерфейса нужен другой голос.
- expo-speech или react-native-tts: голоса, установленные на телефоне, бесплатно и офлайн, на каждом устройстве разные, и сохранить звук они не умеют.
- Готовые ассеты: каждая постоянная фраза озвучена один раз в SuperClonica и поставляется с приложением.
- Сервер речи: приложение отправляет текст на ваш сервер SuperClonica и проигрывает ответ.
- Большинство приложений их сочетают: ассеты для постоянных фраз, сервер для текста пользователя, системный голос как запасной.
Выберите голос бесплатно онлайн
На странице любого голоса впишите фразу из приложения, от 30 до 100 символов, выберите язык и нажмите «Озвучить». Через несколько секунд вы услышите, подходит ли голос, без регистрации и прямо с телефона.
Готовые фразы через expo-audio
Называйте файлы по тем же ключам, что и переводы, тогда у каждого языка в своей папке будут одинаковые имена файлов.
- Установите бесплатный движок на компьютер: python -m pip install superclonica-cpu.
- Озвучьте каждую фразу: superclonica --text "С возвращением!" --voice F1 --lang ru --output assets/voice/welcome.mp3.
- Проиграйте её через expo-audio: const player = useAudioPlayer(require('./assets/voice/welcome.mp3')); player.play();
- Ассеты работают офлайн и без задержки; в MP3 фраза из одного предложения занимает несколько десятков килобайт.
Сервер речи для текста пользователя
Для меняющегося текста — сообщений чата, заметок пользователя или репетитора, который отвечает, — запустите сервер на машине, которой вы управляете: docker run -d -p 8000:8000 -v superclonica-models:/models superclonica/superclonica:cpu. Поставьте его за HTTPS и задайте SUPERCLONICA_API_KEY, чтобы обращаться к нему могло только ваше приложение. Приложение отправляет JSON с полями text, voice и lang на /synthesize и получает WAV; сохраните его в файл библиотекой файловой системы и передайте файл плееру. Кешируйте ответы для повторяющихся текстов: одинаковые текст, голос и seed всегда дают один и тот же файл.
Когда хватит системного голоса
Системного голоса хватает, когда речь нужна только чтобы её поняли: прочитать уведомление, помощник для доступности, прототип, который должен работать без сети. Свой голос выбирайте, когда он часть продукта: репетитор, игровой персонаж, медитация с ведущим. Для публикуемого приложения используйте десять стандартных голосов, от M1 до M5 и от F1 до F5, бесплатных по лицензии OpenRAIL-M, или свой голос, обученный в студии SuperClonica; фанатские голоса персонажей не для приложений в сторах.