Tts что это такое

TTS сообщения Дискорд — специальная функция, обеспечивающая озвучку набранной фразы с помощью специального робота. К сожалению, не все пользователи знают о такой возможности, поэтому не пользуются ей при общении с друзьями или знакомыми. Ниже рассмотрим, как включить и отключить опцию, что учесть при ее пользовании, и какие трудности могут возникнуть.Tts что это такое. Смотреть фото Tts что это такое. Смотреть картинку Tts что это такое. Картинка про Tts что это такое. Фото Tts что это такое

Что это такое

Опция TTS Discord — полезный инструмент, который расшифровывается как Text to Speech или дословно Текст в Речь. Включение этой функции дает команду специальному роботу проговорить написанное сообщение. Если не вносить никаких изменений, модуль применяет встроенные настройки, а также интегрированные в браузер преобразователи. Интересно, что на разных операционных системах и устройствах голос звучит по-разному. В частности, отличаются тембры.

Суть TTS — озвучка отправленных и полученных сообщений в Дискорд. Функция пригодится в случае, если человеку лень проговаривать какую-то информацию в микрофон или отправлять голосовое сообщение на почту. Кроме того, применение TTS придает особой оригинальности переписке и делает ее более интересной. Здесь в распоряжении пользователей много инструментов, в том числе смайлики, картинки, эмодзи и другие.

Особенности применения

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

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

Как озвучить сообщение

Tts что это такое. Смотреть фото Tts что это такое. Смотреть картинку Tts что это такое. Картинка про Tts что это такое. Фото Tts что это такоеК примеру, если вы хотите озвучить Привет! Как дела?, введите в строку с сообщением следующий текст — /tts Привет! Как дела? Не пугайтесь, если на разных компьютерах голоса будут отличаться. Об этой особенности мы упоминали выше, и она является нормальной.

Как включить TTS в Дискорд

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

Способ №1

В первом случае, чтобы включить ТТС, войдите в программу и жмите на шестеренку (Настройки). Там выберите пункт Уведомления. Пролистайте вниз и найдите пункт Уведомления Text-to-Speech.Tts что это такое. Смотреть фото Tts что это такое. Смотреть картинку Tts что это такое. Картинка про Tts что это такое. Фото Tts что это такое

Здесь будет три раздела:

Tts что это такое. Смотреть фото Tts что это такое. Смотреть картинку Tts что это такое. Картинка про Tts что это такое. Фото Tts что это такое

Способ №2

Выделяется еще один метод, как включить озвучивание сообщений с помощью TTS на Дискорде. Для этого снова зайдите в настройки, как и в прошлом случае, но перейдите в раздел Текст и изображения, а там в Text-to-Speech. Здесь имеется всего два варианта — поставить отметку или снять ее. В первом случае функция включается, а во втором отключается.Tts что это такое. Смотреть фото Tts что это такое. Смотреть картинку Tts что это такое. Картинка про Tts что это такое. Фото Tts что это такое

Важный момент! Учтите, что настройки TTS в первом и втором способе полностью отделены друг от друга. Если включить функцию по первому способу, уведомления в любом случае будут приходить даже при отключении опции вторым методом.

Как отключить функцию

При рассмотрении прошлого вопроса мы уже рассмотрели, как отключить TTS в Discord на сервере. Для надежности повторим два пути решения вопроса.

Для выключения уведомлений сделайте следующее:

Tts что это такое. Смотреть фото Tts что это такое. Смотреть картинку Tts что это такое. Картинка про Tts что это такое. Фото Tts что это такоеЧтобы полностью отключить функцию озвучивания сообщений в Дискорд, пройдите такие шаги:

Tts что это такое. Смотреть фото Tts что это такое. Смотреть картинку Tts что это такое. Картинка про Tts что это такое. Фото Tts что это такоеКак уже отмечалось, рассмотренные выше разделы независимы друг от друга. Если отключить TTS по первому способу, голосовые сообщения в Дискорде приходить не будут.

Трудности в работе

В процессе пользования TTS может возникнуть ситуация, когда опция не работает. Для устранения проблемы убедитесь, что функция включена в уведомлениях и в разделе текста и изображений. Если здесь все нормально, проверьте работу звука в чате. При отсутствии проблем войдите в раздел Голос и видео (настройки), а там убедитесь в правильном определении устройство для проигрывания.

Итоги

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

Источник

Речевые технологии. Часть 1. Text-to-Speech: как работает синтез речи

Tts что это такое. Смотреть фото Tts что это такое. Смотреть картинку Tts что это такое. Картинка про Tts что это такое. Фото Tts что это такое

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

Начнем погружение в речевые технологии с синтеза речи. Рассказываем, что такое технология Text-to-Speech и как она работает.

Что такое синтез речи

Синтез речи или Text-to-Speech (TTS) — технология преобразования текста в речь. Это компьютерное моделирование человеческой речи из текстового представления при помощи методов машинного обучения. Обычно синтез речи используют разработчики для создания голосовых роботов, например, IVR (интерактивный голосовой ответ).

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

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

Для этого используются два подхода:

Как работает Text-to-Speech

Чтобы преобразовать текст в голос, система должна пройти три этапа: преобразовать текст в слова, выполнить фонетическую транскрибацию и преобразовать транскрибацию в речь.

1. Преобразовать текст в слова

Специальный алгоритм должен подготовить текст и преобразовать его в удобный формат для чтения. Проблема в том, что исходный текст помимо слов содержит числа, сокращения, даты и пр. Такие компоненты необходимо расшифровать и записать словами. Затем алгоритм разделяет текст на отдельные фразы, которые потом система прочитает с подходящей интонацией. Для этого при создании фраз робот ориентируется на пунктуацию и устойчивые конструкции в тексте.

2. Выполнить фонетическую транскрибацию

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

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

Фонема — минимальная единица звукового строя языка.

Преобразовать транскрибацию в речь

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

Tts что это такое. Смотреть фото Tts что это такое. Смотреть картинку Tts что это такое. Картинка про Tts что это такое. Фото Tts что это такое

Как синтез речи используется в бизнесе

Синтез речи можно применять в следующих областях:

Например, компания KFC настроила автоматическую верификацию заявок HR с помощью Voximplant. HR-департамент KFC загружает в свою CRM-систему список телефонных номеров кандидатов и текст вакансии. Voximplant делает несколько попыток дозвона. После успешного соединения робот спрашивает, интересно ли получить информацию о работе (синтез речи). Если кандидат ответил утвердительно (распознавание речи), робот рассказывает о вакансии и ставит в очередь к сотруднику колл-центра. До начала разговора сотрудник KFC получает информацию о соискателе в текстовом виде.

Например, компания «КЛЮЧАВТО» с помощью Voximplant настроила автоматизированный сбор обратной связи клиентов по итогам покупки автомобиля и прохождения ТО. Робот приветствует клиента по имени и просит оценить ряд критериев по шкале от 1 до 10. Развернутые ответы транскрибируются и сохраняются в текстовом виде.

Решение от Voximplant

Voximplant предоставляет API, позволяющий легко интегрировать функциональность TTS в свое приложение или веб-сайт. Компании используют TTS для обработки входящих и исходящих вызовов, а также для управления голосовыми уведомлениями, при этом не требуется никакого оборудования или сложного программирования.

Voximplant поддерживает TTS на базе таких сервисов, как Amazon Polly, Google WaveNet, Dialogflow, IBM Watson, Яндекс SpeechKit, Tinkoff VoiceKit и Microsoft Azure. WaveNet также используется онлайн-сервисами Google: Google Assistant, Google Search и Google Translate. WaveNet генерирует необработанные аудиосигналы с помощью нейронной сети, обученной на большом количестве речевых образцов. Вся необходимая информация для генерации речи хранится в параметрах модели, а тон голоса можно контролировать с помощью настроек модели.

Особенности решения от Voximplant:

Tts что это такое. Смотреть фото Tts что это такое. Смотреть картинку Tts что это такое. Картинка про Tts что это такое. Фото Tts что это такое
Бизнесу из любой сферы интересен ИИ, который может не просто озвучивать текстовые фрагменты, но и синтезировать их. Все это осуществимо благодаря машинному обучению. Но система синтеза речи должна также уметь подбирать интонацию, правильно расставлять ударения и паузы, различать слова-омографы (например, «замОк» и «зАмок»). Это непростая задача, поэтому для создания полноценной системы синтеза речи помимо компьютера может потребоваться большая команда специалистов.

Источник

7 способов использовать синтез речи в обучении

Равные возможности обучения. Для студентов с дислексией, изучающих родной или иностранный язык, может стать трудностью создание инклюзивной школьной среды. Доказано, что TTS улучшает успеваемость среди таких учащихся. Использование технологии также сэкономит средства на создании индивидуальных программ обучения, так как TTS более эффективное решение для проблем с чтением.

Упрощение процесса чтения. Для большинства учеников чтение — утомительный процесс. Но его можно упростить с помощью технологии. Например, когда студенту надоело читать, то он может надеть наушники и продолжить с помощью TTS. Исследования показывают, что технология помогает сконцентрироваться на содержании материала, а не процессе чтения, что улучшает его понимание.

Подставьте в блок любой текст и послушайте, как он звучит. В демо его можно прочитать с разной эмоциональной окраской, а в полной — использовать любые голоса. Представьте, что достаточно нажать на кнопку «Озвучить» в электронной книге или учебники, тем самым упростив процесс чтения.

TTS помогает работать с текстом. Часто люди ленятся вычитывать написанный текст или просто чувствуют себя неловко, когда делаю это вслух. Но послушать свои слова бывает полезно: можно заметить пропущенные знаки препинания, опечатки и неблагозвучие.

Виртуальный HR-ассистент. На его можно переложить задачи по адаптации новых сотрудников: разработать программу обучения, добавить базу знаний и FAQ. Так даже старый сотрудник может без стеснения задать вопросы.

Интерактивное обучение. Вместе с системой компьютерного зрения TTS можно превратить в виртуального наставника, который будет обучать работе с оборудованием. Например, давать подсказки по ремонту автомобиля или учить жарить котлеты.

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

Проверьте себя с помощью нашего теста. Попробуйте угадать, где говорит робот, а где — реальный человек.

Языковая практика. Это важный момент в изучении иностранного языка, потому что таким образом запрекляется материал и запоминается произношение. Но не все могут позволить общение с носителем, поездку в языковой лагерь, а кто-то просто стесняется говорить с другими на иностранном. С помощью разговорных технологий можно снять этот барьер.

Сейчас мы разрабатываем чат-бота, который помогает изучать английский язык. Человек общается с ботом со встроенным GPT-2, он фиксирует неправильное произношение и другие ошибки в речи, а затем выдает отчет и предлагает повторить эти слова.

Развитие грамотности. На планете более 780 млн не умеют читать и писать. В основном это жители Центральной Африки и Западной Азии, где проживает 76% всех неграмотных людей. Системы синтеза и распознавания речи способны сделать для таких людей информацию и обучение доступнее. Мы безвозмездно предоставляем 1% наших мощностей для реализации проектов для малограмотного населения.

Синтез речи (Text To Speech) основан на машинном обучении. Технологию можно использовать для преобразования текста в речь, генерации музыки, речи, создавать устройства с голосовой поддержкой, разработки систем навигации и реализации доступности для людей с нарушениями зрения. Например, с помощью TTS Стивен Хокинг общался с другими людьми.

Распознавание речи (Automatic Speech Recognition) сложнее, чем TTS, потому что нужно преобразовать разговорную речь в неидеальных условиях, где есть побочные шумы, особенности произношения и другие помехи. Чаще всего технология используется в виртуальных помощниках, например, Сири или Алекса.

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

Lipsync позволяет сопоставить движение губ говорящего или поющего с предварительно записанным голосом, который будут слышать люди. С ее помощью можно «оживить» виртуального ассистента, учителя или игрового персонажа.

GPT-2 — языковая модель, которая обучалась на 8 млн веб-страниц. Она умеет предсказывать следующее слово в тексте, учитывая предыдущий контекст. Модель также распознает текст, отвечает на вопросы и переводит фразы без дополнительного обучения.

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

Имитация реальности. С помощью технологий можно воссоздать реальные ситуации и диалоги, чтобы отработать конкретные навыки. Например, кто-то хочет подтянуть английский язык перед поездкой, а другой — перед выступление на ИТ-конференции. Одному сотруднику нужно научиться общаться с премиальными клиентами, а другому — отрабатывать клиентский негатив. Для каждого из этих случаев можно создать реальные истории.

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

Источник

Технологии ASR и TTS для прикладного программиста: теоретический минимум

Введение

В последние несколько лет голосовые интерфейсы окружают нас все плотнее. То, что когда-то демонстрировалось только в фильмах о далеком будущем, оказалось вполне реальным. Дело дошло уже до встраивания движков для синтеза (Text To Speech — TTS) и распознавания (Automatic Speech Recognition — ASR) речи в мобильные телефоны. Более того, появились вполне доступные API для встраивания ASR и TTS в приложения.

Ныне создавать программы с голосовым интерфейсом может любой желающий (не поскупившийся заплатить за движок). Наш обзор будет посвящен именно использованию имеющихся движков (на примере Nuance) а не созданию таковых. Также будут даны общие сведения необходимые каждому программисту впервые сталкивающемуся с речевыми интерфейсами. Статья также может быть полезна руководителям проектов, пытающимся оценить целесообразность интеграции голосовых технологий в их продукты.
Итак, начнем…

Но для затравки — анекдот:
Урок русского языка в грузинской школе.
Учитель говорит: «Дети, запомните: слова сол, фасол и вермишел пишутся с мягким знаком, а слова вилька, булька, тарелька – без мягкого знака. Дети, запомните, потому что понять это невозможно!»

Раньше этот анекдот казался мне смешным. Теперь — скорее жизненным. Почему так? Сейчас постараюсь объяснить…

1. Фонемы

Говоря о речи (уже смешно) нам прежде всего придется разобраться с понятием фонемы. Говоря попросту — фонема это отдельный звук, который может быть произнесен и распознан человеком. Но такого определения конечно мало, ибо произнести можно очень много звуков, а набор фонем в языках ограничен. Хочется иметь более строгое определение. А значит — нужно идти на поклон к филологам. Увы, филологи и сами не могут сойтись во мнениях что это такое (да им и не особо надо), но имеют несколько подходов. Один связывает фонемы со смыслом. Например, английская Wiki говорит нам «The smallest contrastive linguistic unit which may bring about a change of meaning». другие — с особенностями восприятия. Так, наш соотечественник Н. Трубецкой писал «Фонологические единицы, которые с точки зрения данного языка невозможно разложить на более краткие следующие друг за другом фонологические единицы мы называем фонемами». И в том и в другом определении есть важные для нас уточнения. С одной стороны, изменение фонемы может (но не обязано) поменять смысл слова. Так, «код» и «кот» — будут восприняты как два разных слова. С другой — вы можете произнести «музей» или «музэй» и смысл не изменится. Разве что ваши собеседники смогут как-то классифицировать ваш акцент. Важна и неделимость фонем. Но, как верно замечено у Трубецкого — она может зависеть от языка. Там, где человек одной национальности слышит один звук, кто-то другой может услышать два, следующих друг за другом. Хочется, однако, иметь фонетические инварианты, пригодные для всех языков, а не только какого-то одного.

2. Фонетический алфавит

Чтобы как-то утрясти определения еще в далеком 1888 году был создан международный фонетический алфавит (IPA). Алфавит этот хорош тем, что не зависит от конкретного языка. Т.е. рассчитан как бы на «сверхчеловека» который может произносить и распознавать звуки практически всех имеющихся живых (и даже мертвых) языков. Алфавит IPA постепенно изменялся вплоть до наших дней (2005 год). Поскольку создан он был в основном в докомпьютерную эпоху, то филологи рисовали символы обозначающие звуки как бог на душу положит. Они конечно как-то ориентировались на латинский алфавит, но весьма и весьма условно. Как результат сейчас символы IPA хоть и есть в Unicode, но вводить их с клавиатуры весьма непросто. Тут читатель может спросить — а зачем вообще нужен IPA простым людям? Где я могу увидеть хотя бы примеры слов, записанных фонетически? Мой ответ — простому человеку IPA в общем-то знать не обязательно. Но, при всем этом увидеть его можно очень легко — во многих статьях Wiki, касающихся географических названий, фамилий и имен собственных. Зная IPA вы всегда можете сверить правильность произношения того или иного названия на незнакомом вам языке. Например, хотите произносить «Париж» как француз? Вот вам пожалуйста — [paʁi].

3. Фонетическая транскрипция

Внимательный пользователь Wiki может правда заметить, что иногда странные значки фонетического алфавита стоят внутри квадратных скобок — [mɐˈskva], а иногда — внутри косых черт (слэшей) — /ˈlʌndən/. В чем же разница? В квадратных скобках записывается т.н. narrow, сиречь «узкая» транскрипция. В отечественной литературе она зовется фонетической. В слэшах же пишется broad, т.е. «широкая» или фонематическая транскрипция. Практический смысл здесь следующий: фонетическая транскрипция дает предельно точное произношение, которое в некотором смысле идеально и независимо от акцента говорящего. Иными словами — имея фонетическую транскрипцию мы можем сказать «кокни произнесет это слово так». Фонематическая же транскрипция позволяет вариации. Так, австралийском и канадском английском произносимый звук при одинаковой записи в // может быть другим. По правде говоря, даже узкая транскрипция все еще не однозначна. Т.е. довольно далека от waw-файла. Мужской, женский и детский голос произнесут одну и ту же фонему по-разному. Также не принимается во внимание общая скорость речи, ее громкость и базовая высота голоса. Собственно, эти отличия и делают задачу генерации и распознавания речи нетривиальной. Далее по тексту я всегда буду пользоваться IPA в узкой транскрипции, если не оговорено другое. При этом прямое использование IPA я постараюсь свести к разумному минимуму.

4. Языки

Каждому живому естественному языку свойственен свой набор фонем. Более точно — это свойство речи, ибо вообще говоря, можно знать язык не имея возможности произносить слов (как обучаются языку глухо-немые). Фонетический состав языков различен, примерно так же как различны алфавиты. Соответственно, разнится и фонетическая сложность языка. Она складывается из двух составляющих. Во-первых, сложность преобразования графем в фонемы (мы помним, что англичане пишут «Манчестер» а читают «Ливерпуль») и сложности произнесения самих звуков (фонем) во-вторых. Сколько фонем обычно содержит язык? Несколько десятков. С детства нас учили что русское произношение простое как три копейки, и все читается как пишется, в отличии от европейских языков. Конечно нас обманывали! Если читать слова буквально так, как они написаны, вас хоть и поймут, но не всегда верно. Но уж русским точно не посчитают. Кроме того, в дело вступает такая жуткая для европейца вещь как ударение. Вместо того, чтобы ставить его в начале (как англичане) или в конце (как французы) у нас оно гуляет по всему слову как бог на душу положит, при этом меняя смысл. Дoрoги и дороги — два различных слова, и даже части речи. Сколько фонем в русском языке? Nuance насчитывает их 54 штуки. Для сравнения — в английском всего 45 фонем, а во французском и того меньше — 34. Не зря аристократы считали его легким для изучения языком пару веков назад! Конечно — русский не самый сложный язык в Европе, но один из (заметьте, я еще молчу о грамматике).

5. X-SAMPA и LH+

Поскольку вводить фонетическую транскрипцию с клавиатуры людям хотелось давно, еще до широкого распространения Unicode, то были разработаны нотации, позволяющие обойтись только символами таблицы ASCII. Две наиболее распространенных из них это X-SAMPA — творение профессора Джона Уэлса, и LH+ — внутренний формат компании Lernout & Hauspie, технологии которой были в дальнейшем куплены Nuance Communications. Между X-SAMPA и LH+ есть довольно существенная разница. Формально, X-SAMPA — это просто нотация, позволяющая по определенным правилам записывать те же фонемы IPA, только с помощью ASCII. Иное дело LH+. В некотором смысле — LH+ является аналогом широкой (фонематической) транскрипции. Дело в том, что для каждого языка, один и тот же символ LH+ может обозначать разные фонемы IPA. С одной стороны — это хорошо, т.к. укорачивается запись, и не нужно кодировать все возможные символы IPA, с другой — возникает неоднозначность. И каждый раз для трансляции в IPA нужно держать перед собой таблицу соответствия. Однако, печальнее всего то, что строку записанную в LH+ может правильно произнести только «голос» для определенного языка.

6. Голоса

Нет, речь пойдет не о тех голосах, которые часто слышат в голове программисты, которые в прошлом написали слишком много плохого кода. Скорее о тех, которые так часто ищут на трекерах и файлопомойках обладатели навигаторов и прочих мобильных устройств. Голоса эти имеют даже имена. Слова «Милена» и «Катерина» многое говорят бывалому пользователю голосовых интерфейсов. Что же это такое? Грубо говоря — это наборы данных, подготовленные различным компаниями (типа той же Nuance) которые позволяют компьютеру преобразовывать фонемы в звук. Голоса бывают женские и мужские, и стоят немалых денег. В зависимости от платформы и фирмы-разработчика с вас могут потребовать 2-5 тыс. долларов за голос. Таким образом, если вы хотите создать интерфейс хотя бы на 5 наиболее распространенных европейских языках, то счет может пойти на десятки тысяч. Разумеется, речь именно о программном интерфейсе. Итак, голос специфичен для языка. Отсюда же происходит и привязка его к фонетической транскрипции. Это непросто осознать по-первости, но анекдот в начале статьи — сущая правда. Люди с одним родным языком обычно просто не в состоянии произнести фонемы другого, которых нет в их родном языке. И, что еще хуже — не только отдельные фонемы но и определенные их сочетания. Так, если в твоем языке слово никогда не заканчивается на мягкое «л» то и произнести его мы не сможем (поначалу).

То же самое и с голосами. Голос заточен на произнесение только тех фонем, которые имеются в языке. Более того — в конкретном диалекте языка. Т.е. голоса для канадского французского и французского французского будут не только отличаться по звучанию, но и иметь разный набор произносимых фонем. Это, кстати, удобно фирмам производителям движков ASR и TTS, т.к. каждый язык можно продавать за отдельные деньги. С другой стороны — можно понять и их. Создание голоса дело довольно трудоемкое, и затратное по деньгам. Возможно именно по этому до сих пор не существует сколь-нибудь широкого рынка Open Source решений для большинства языков.

Казалось бы, ничто не мешает создать «универсальный» голос, который будет уметь произносить все фонемы IPA, и таким образом решит проблему многоязычных интерфейсов. Но этого почему-то никто не делает. Скорее всего, это и невозможно. Т.е. говорить-то он может и будет, но каждый носитель языка будет недоволен недостаточной «натуральностью» произношения. Звучать это будет примерно как русский в устах мало практиковавшегося англичанина или английский в устах француза. Так что, если хотите многоязычности — приготовьтесь раскошелиться.

7. Пример использования TTS API

Чтобы дать читателю представление о том, как процесс работы с TTS выглядит на нижнем уровне (используется С++) я приведу пример синтеза речи на базе движка Nuance. Разумеется это неполный пример, его нельзя не только запустить но даже скомпилировать, но представление о процессе он дает. Все функции кроме TTS_Speak() нужны как «обвязка» для нее.

TTS_Initialize() — служит для инициализации движка
TTS_Cleanup() — для деинициализации
TTS_SelectLanguage — выбирает язык и настраивает параметры распознавания.

TTS_Speak() — собственно генерирует звуковые отсчеты
TTS_Callback() — вызывается, когда очередная порция звуковых данных готова к проигрыванию а также в случае других событий.

Как может заметить читатель, код довольно громоздок, и простая (казалось бы) функциональность требует большого числа предварительных настроек. Увы, это обратная сторона гибкости движка. Разумеется, API других движков и для других языков может быть существенно проще к компактнее.

8. Снова фонемы

Поглядев на API, читатель может спросить — а зачем нам вообще нужны фонемы, если TTS (Text-To-Speech) умеет прямо конвертировать текст в речь. Умеет, но тут есть одно «но». Хорошо преобразуются в речь знакомые движку слова. Гораздо хуже дело обстоит со словами «незнакомыми». Такими как топонимы, имена собственные и т.п. Это особенно хорошо видно на примере многонациональных стран, таких к примеру, как Россия. Названия городам и весям на территории одной вечно-шестой части суши давались разными людьми, на разных языках и в разное время. Необходимость записать их русскими буквами сыграла плохую шутку с национальными языками. Фонемы татар, ненцев, абхазцев, казахов, якутов, бурят оказались втиснуты в прокрустово ложе русского языка. В котором хоть и много фонем, но все же недостаточно чтобы передать все языки народов бывшего Союза. Но дальше хуже — если фонетическая запись хоть как-то похожа на оригинал, то прочтение движком TTS названия типа «Кючук-Кайнарджи» ничего кроме смеха не вызывает.

Однако, наивно думать что это только проблема русского языка. Аналогичные сложности есть и в более однородных по населению странах. Так, во французском языке буквы p, b, d, t, s в конце слов обычно не читаются. Но если мы возьмем топонимы, то тут уже вступают в силу местные традиции. Так, в слове Paris ‘s’ в конце дейстивтельно не произносится, а в слове ‘Valluris’ — наоборот. Разница в том, что Париж расположен на севере Франции, а Валлорис — на юге, в Провансе, где правила произношения несколько другие. Именно поэтому, все же желательно иметь фонетическую транскрипцию для слов. Обычно карты поставляются с ней. Правда, единства в формате не наблюдается. Так, NavTeq традиционно использует транскрипцию X-SAMPA, а TomTom — LH+. Хорошо, если ваш TTS-движок воспринимает обе, а если нет? Тут приходится извращаться. Например — конвертировать одну транскрипцию в другую, что само по себе нетривиально. Если же фонетической информации вовсе нет, то движок имеет собственные методы ее получения. Если говорить о движке Nuance — это «Data Driven Grapheme To Phoneme» (DDG2P) и «Common Linguistic Component» (CLC). Однако использование этих вариантов — уже крайняя мера.

9. Специальные последовательности

Nuance дает не только возможность произносить текст или фонетическую запись, но и динамически переключаться между ними. Для этого используется escape-последовательность вида: /+

Вообще, с помощью escape-последовательностей можно задавать множество параметров. В общей форме это выглядит так:

\x1b\rate=110\ — устанавливает скорость произношения
\x1b\vol=5\ — устанавливает громкость
\x1b\audio=«beep.wav»\ — вставляет в звуковой поток данные из wav-файла.

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

10. Словари

11. Распознавание

Распознавание речи является еще более сложной задачей чем её синтез. Если синтезаторы кое-как работали еще в старые добрые времена, то толковое распознавание стало доступно только сейчас. Причин тут несколько, первая из которых очень напоминает проблемы обычного живого человека столкнувшегося с незнакомым языком, вторая — столкновение с текстом из незнакомой области.

Воспринимая колебания звука, напоминающие нам голос мы сначала пытаемся делить его на фонемы, вычленять знакомы звуки, которые должны у нас сложиться в слова. Если язык знаком нам, то это легко получается, если нет — то скорее всего даже «правильно» разложить речь на фонемы не удастся (помните историю про «Алла, я в бар!»). Там где нам слышится одно, произносящему — совсем другое. Происходит это потому, что годами наш мозг «натаскивался» на определенные фонемы, и со временем привык воспринимать только их. Встречая незнакомый звук, он пытается подобрать фонему родного языка [языков] наиболее близкую к услышанной. В каком-то смысле это похоже на метод векторного квантования применяемый в кодеках речи типа CELP. Не факт, что такая аппроксимация будет удачной. Именно поэтому, «удобными» для нас будут именно «родные» фонемы.

Помните, еще при СССР, учась в школе, и встречаясь с иностранцами мы пытались «транслитерировать» свое имя, говоря:
«Май нэйм из бОрис пEтрофф»
Учителя тогда ругали нас, говоря — зачем коверкаешь свою фамилию? Думаешь ему от этого понятней будет? Говори по-русски!

Увы, они и тут нас обманывали или заблуждались… Если вы смогли произнести свое имя на английский/немецкий/китайский лад, то носителю языка будет действительно легче его воспринять. Китайцы поняли это давно, и для общения с западными партнерами берут себе специальные «европейские» имена. В машинном распознавании, тот или иной язык описывается так называемой акустической моделью. Перед распознаванием текста, мы должны загрузить акустическую модель определенного языка, тем самым дав понять программе, какие фонемы ей ждать на входе.

Вторая проблема не менее сложна. Вернемся снова к нашей аналогии с живым человеком. Слушая собеседника мы подсознательно выстраиваем в голове модель того, что он скажет дальше, сиречь, создаем контекст разговора. И если ВНЕЗАПНО вставлять в повествование слова выпадающие из контекста (например «эвольвента», когда речь идет о футболе), можно вызвать у собеседника когнитивный диссонанс. Грубо говоря, у компьютера этот самый диссонанс происходит постоянно, ибо он никогда не знает чего ожидать от человека. Человеку проще — он может переспросить собеседника. А что делать компьютеру? Чтобы решить эту проблему и дать компьютеру верный контекст, применяются грамматики.

12. Грамматики

Грамматики (обычно заданные в форме BNF) как раз дают компьютеру (точнее движку ASR) представление о том, чего ждать от пользователя в данный конкретный момент. Обычно — это несколько альтернатив объединенных через ‘или’, но возможны и более сложные грамматики. Вот пример грамматики для выбора станций метро Казани:

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

Насколько велика может быть грамматика? Достаточно велика. Скажем, в наших экспериментах 37 тысяч альтернатив распознаются на приемлемом уровне. Гораздо хуже обстоит дело со сложными и разветвленными грамматиками. Время распознавания растет, а качество падает, причем зависимость от длинны грамматики нелинейна. Поэтому мой совет — избегайте сложных грамматик. Во всяком случае пока.

Грамматики (как и контексты) бывают статическими и динамическими. Пример статической грамматики вы уже видели, она компилируется заранее и хранится во внутреннем бинарном представлении движка. Однако порой контекст меняется во время интеракции с пользователем. Характерные пример для навигации — выбор города по первым буквам. Множество возможных вариантов для распознавания здесь меняется с каждой введенной буквой, соответственно, контекст распознавания надо постоянно перестраивать. Для этих целей и используются динамические контексты. Грубо говоря, программист компилирует грамматики «на лету» и подсовывает их движку прямо по ходу выполнения программы. Разумеется, если речь идет о мобильном устройстве, скорость обработки будет не слишком велика, так что придется ограничиться грамматиками небольшого размера (порядка 100 слов) чтобы пользовательский интерфейс не подвисал.

13. Пример использования ASR API

Распознавание текста не так однозначно, как синтез. Если пользователь просто помолчит перед микрофоном — нам придется распознавать окружающий шум. Если произнесет что-то типа «э-э-э-э» то распознавание тоже скорее всего будет неуспешным. В лучшем случае, ASR обычно возвращает нам набор вариантов (называемых еще гипотезами). Каждая гипотеза имеет определенный вес. Если грамматика большая, то вариантов распознавания может быть довольно много. В этом случае имеет смысл последовательно произнести гипотезы (например, первые пять по убыванию достоверности) и попросить пользователя выбрать одну из них. В идеале, при короткой грамматике («да»|«нет») нам вернется один вариант с высоким показателем достоверности.

Пример приведенный ниже содержит следующие функции:

ConstructRecognizer() — создает «распознаватель» и настраивает его параметры
DestroyRecognizer() — уничтожает «распознаватель»
ASR_Initialize() — инициализирует движок ASR
ASR_UnInitialize() — деинициализирует движок ASR
evt_HandleEvent — обрабатывает события генерируемые thread-ом «распознавателя»
ProcessResult() — печатает результаты распознавания

Очевидно, как и в случае TTS, код довольно велик, и предварительные действия занимают много места. И это еще не полностью рабочий код! При публикации я выкинул много лишнего. Все это еще раз показывает тем, кто дочитал до этого места, что использование технологии голосового ввода/вывода требует довольно высокого «порога вхождения».

14. Поточное распознавание (диктовка)

Последним словом техники сейчас является поточное распознавание, или dictation. Технология уже доступна на современных смартфонах под Android и iOS. В том числе — в виде API. Здесь программисту нет нужды указывать контекст распознавания создавая грамматики. На входе имеется речь — на выходе, распознанные слова. К сожалению, детали того, как этот метод работает пока мне недоступны. Процесс распознавания идет не на самом устройстве, а на сервере, куда голос передается и оттуда же получается результат. Хочется однако верить, что по прошествии лет технология будет доступна и на клиентской стороне.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *