Когда мы рассматриваем все последние приложения с высоким рейтингом и многочисленными загрузками, я почти никогда не сталкивался с функцией преобразования текста в речь с более естественным голосом, который поддерживает тексты, написанные на разных языках.

Например:- При поиске в S tackoverflow я обычно обнаруживал, что люди меняют голоса в зависимости от языка,

Locale loc=new Locale("en","IN");
tts.setLanguage(loc);

который просто изменяет локаль в соответствии с выбранным регионом языка

Но, как утверждает официальная документация

Каждый механизм TTS может отображать несколько голосов для каждой локали с различным набором функций.

Поэтому в этом коротком уроке мы научимся добавлять более 40 различных индийских голосов (из 200+ доступных голосов), различающихся по языку, полу и качеству.

Пример: — Я хочу прочитать эту строку — «హలో వరల్డ్» («Привет, мир» на телугу) мужским голосом и почти естественным акцентом телугу.

Давайте начнем,

Прежде всего, я хочу продемонстрировать, какие акценты доступны,

Посетите https://cloud.google.com/text-to-speech/docs/voices и выполните поиск (Ctrl+f/Cmd+f) и введите Индия (или любой другой). Здесь вы найдете все доступные образцы акцентов.

Но получить эти специфические акценты немного сложно, мы обсудим это позже.

Шаг 1. Мы изменим голос во время инициализации TTS.

Пример:-

Основной шаг к изменению голосового акцента — строка-18,

tts!!.voice = Voice("hi-in-x-hie-network",Locale("hin", "IND", ""),Voice.QUALITY_HIGH, Voice.LATENCY_LOW, true, a)

Голос, требует 6 различных параметров,

  1. Имя голоса
  2. Регион
  3. Качество
  4. Задержка
  5. Требовать сетевое подключение (логическое значение)
  6. НаборString› функций

Самое интересное здесь — это получение названия голоса. Вместо этого мы не можем просто искать определенный код имени голоса в соответствии с требуемым языком, нам нужно запустить код и получить список голосов. имя с помощью командной строки Logcat.

Шаг 2. Выберите название голоса и название локали:

Скопируйте и вставьте код ниже, чтобы получить все возможные коды (добавьте его к любой кнопке и запустите)

Нажмите на эту кнопку после запуска эмулятора, результат будет примерно таким:

Это доступные имена голосовых кодов, и вы можете выбирать между ними в зависимости от языка. Пробовать каждый из перечисленных кодов немного хлопотно, но для каждого языка существует максимум 6–8 кодов, включая мужской и женский голос, поэтому это становится легко если мы определили выбор.

Кроме того, получите соответствующий пробел, разделенный Locale.

Пример:-

  • В «gu-in-x-gum-network gu_IN»
  • Название голоса = "gu-in-x-gum-network"
  • Язык = «gu_IN» или Язык («gu», «IN», «»)

Шаг 3. Установите Качество и Задержка.

Качество имеет константы, варьирующиеся от ожидаемого человекоподобного качества синтеза речи.

Задержка имеет константы, варьирующиеся от ожидаемой задержки синтезатора.

Варьируется в пределах: - 100–500 (от низкого до высокого)

Примечание. Идеально подходит более высокое качество и низкая задержка.

Теперь Голос("gu-in-x-gum-network",Язык("gu", "IN","")),Голос.КАЧЕСТВО_ВЫСОКОЕ, Голос.ЗАДЕРЖКА_НИЗКАЯ …)

"Нажмите здесь, чтобы узнать больше.

Шаг 4. Задайте для логического значения requireNetworkConnection значение true или false.

в соответствии с выбранным именем голоса-"…-local" = false и "...-network" = true

Примечание. Я предлагаю всегда сохранять значение true для низкого количества ошибок в этом коде.

Шаг 5. В качестве последнего шага нам нужна переменная SetString›, содержащая функции

например «мужской» или «женский».

поэтому,

val a: MutableSet<String> = HashSet()
    a.add("male")

И наконец

tts!!.voice = Voice("gu-in-x-gum-network",Locale("gu", "IN","")),Voice.КАЧЕСТВО_ВЫСОКОЕ, Voice. LATENCY_LOW, правда, а)

Все необходимые шаги выполнены. Теперь мы проверим наш Text-To-Speech

Вы можете добавить это к той же кнопке,

Вот и все, теперь вы можете иметь переменное качество, задержку, пол, язык и другие функции в обычном преобразовании текста в речь с помощью нескольких простых шагов.

Примечание :- 1) Все акценты работают для всех языков (пример: голос гуджрати может читать текст на телугу), но акцент будет почти непонятен. Поэтому обязательно выберите подходящий язык и голос.

2) Я сделал этот урок, потому что не нашел лучшего способа сделать это. Если у вас есть какие-либо предложения или отзывы о моем коде. Пожалуйста, поделитесь им через LinkedIn.

Большое спасибо за 500+ прочтений в моем предыдущем блоге о том, как создавать ролики, подобные приложению.

Надеюсь, это поможет.

Удачного кодирования 🖤