Яндекс текст в голос – Yandex SpeechKit | Яндекс.Облако

alexxlab
alexxlab
16.03.2020

Содержание

Правила тарификации для SpeechKit | Яндекс.Облако

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

Из чего складывается стоимость использования SpeechKit

Использование синтеза речи

Стоимость использования SpeechKit API для синтеза речи рассчитывается исходя из используемого голоса и суммарного количества символов, которые были отправлены для генерации речи из текста за календарный месяц (Отчетный период).

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

Использование распознавания речи

Стоимость использования зависит от длительности распознанного аудио. Стоимость рассчитывается за календарный месяц (Отчетный период).

Распознавание коротких аудио

Эти правила действуют при использовании распознавания коротких аудио с помощью запроса или в потоковом режиме.

Единица тарификации — отрезок одноканального аудио длительностью 15 секунд. Отрезки меньшей длительности округляются в большую сторону (1 секунда превращается в 15 секунд).

Примеры:

  • 1 аудиофрагмент 37 секунд тарифицируется как 45 секунд.

    Объяснение: аудио разбивается на 2 отрезка по 15 секунд и один отрезок 7 секунд. Длительность последнего отрезка будет округлена до 15 секунд. Итого, 3 отрезка по 15 секунд.

  • 2 аудиофрагмента по 5 и 8 секунд тарифицируются как 30 секунд.

    Объяснение: длительность каждого аудио будет округлена до 15 секунд. Итого, 2 отрезка по 15 секунд.

Распознавание длинных аудио

Эти правила действуют при использовании распознавания длинных аудио.

Единица тарификации — 1 секунда двухканального аудио. Отрезки меньшей длительности округляются в большую сторону. Количество каналов округляется до четного числа.

Минимум начисляется 15 секунд за каждые два канала. Аудио меньшей длительности тарифицируется, как 15 секунд.

Примеры с округлением длительности аудио:

Длительность Количество каналов Начислено секунд
1 секунда 1 15
1 секунда 2 15
1 секунда 3 30
15.5 секунд 2 16
15.5 секунд 4 32

Цены

Синтез речи

Распознавание речи

cloud.yandex.ru

Распознавание длинных аудио | Яндекс.Облако

Распознавание длинных аудио подходит для многоканальных аудиофайлов до 1 ГБ.

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

Примечание

Сейчас вы можете распознавать длинные аудио только на русском языке.

Перед началом

  1. Запрос на распознавание необходимо отправлять от имени сервисного аккаунта с ролью editor на каталог, в котором он создан.

    Если необходимо, воспользуйтесь инструкциями:

  2. Получите IAM-токен или API-ключ для вашего сервисного аккаунта. В примерах для аутентификации используется IAM-токен.

    Чтобы использовать API-ключ, передайте его в заголовке Authorization в следующем формате:

    Authorization: Api-Key <API-ключ>
    
  3. Загрузите аудиофайл в сервис Yandex Object Storage и получите ссылку на загруженный файл:

    1. Если у вас еще нет бакета в Object Storage, создайте его.

    2. Загрузите аудиофайл в ваш бакет. В терминах Object Storage загружаемые файлы называются объектами.

    3. Получите ссылку на загруженный файл. Используйте эту ссылку в запросе на распознавание аудио.

      Ссылка на загруженный файл имеет вид:

      https://storage.yandexcloud.net/<имя-бакета>/<путь-к-файлу>
      

      Для бакета с ограниченным доступом в ссылке будут дополнительные query-параметры (после знака ?). В SpeechKit эти параметры не надо передавать — они игнорируются.

Отправить файл на распознавание

Отправьте файл на распознавание с помощью POST-запроса:

HTTP-запрос

POST https://transcribe.api.cloud.yandex.net/speech/stt/v2/longRunningRecognize

Параметры в теле запроса

{
    "config": {
        "specification": {
            "languageCode": "string",
            "profanityFilter": "string",
            "audioEncoding": "string",
            "sampleRateHertz": "integer",
            "audioChannelCount": "integer"
        }
    },
    "audio": {
        "uri": "string"
    }
}
Параметр Описание
config object
Поле с настройками распознавания.
config.
specification
object
Настройки распознавания.
config.
specification.
languageCode
string
Язык, для которого будет выполнено распознавание.
Сейчас поддерживается только русский язык — ru-RU.
config.
specification.
profanityFilter
boolean
Фильтр ненормативной лексики.
Допустимые значения:
  • true — исключать ненормативную лексику из результатов распознавания.
  • false (по умолчанию) — не исключать ненормативную лексику.
config.
specification.
audioEncoding
string
Формат передаваемого аудио.
Допустимые значения:
config.
specification.
sampleRateHertz
integer (int64)
Частота дискретизации передаваемого аудио.
Этот параметр обязателен, если значение format равно LINEAR16_PCM. Допустимые значения:
  • 48000 (по умолчанию) — частота дискретизации 48 кГц;
  • 16000 — частота дискретизации 16 кГц;
  • 8000 — частота дискретизации 8 кГц.
config.
specification.
audioChannelCount
integer (int64)
Количество каналов для файлов в формате LPCM. По умолчанию используется значение 1.
Не используйте это поле для файлов в формате OggOpus.
config.
specification.
raw_results
boolean
Флаг, указывающий, как писать числа. true — писать прописью, false (по умолчанию) — писать цифрами.
audio.
uri
string
URI аудиофайла для распознавания. Поддерживаются только ссылки на файлы, которые хранятся в Yandex Object Storage.

Ответ

Если запрос был составлен правильно, сервис возвращает объект Operation, в котором содержится идентификатор операции распознавания (id):

{
 "done": false,
 "id": "e03sup6d5h7rq574ht8g",
 "createdAt": "2019-04-21T22:49:29Z",
 "createdBy": "ajes08feato88ehbbhqq",
 "modifiedAt": "2019-04-21T22:49:29Z"
}

Используйте полученный идентификатор на следующем шаге.

Получить результаты распознавания

Проверяйте результаты распознавания, используя полученный идентификатор. Количество запросов на проверку результатов ограничено, поэтому учитывайте скорость распознавания: 1 минута одноканального аудио распознается примерно за 10 секунд.

Важная информация

Результаты распознавания хранятся на сервере 3 суток. После этого вы не сможете запросить результаты распознавания используя полученный идентификатор.

HTTP-запрос

GET https://operation.api.cloud.yandex.net/operations/{operationId}

Path-параметры

Параметр Описание
operationId Идентификатор операции, полученный при отправке запроса на распознавание.

Ответ

Когда распознавание будет закончено, значение поля done будет true, а в поле response будет список результатов распознавания chunks[].

Каждый результат в chunks[] содержит поля:

  • alternatives[] — список вариантов распознанного текста. Каждый вариант содержит поля:
    • words[] — список распознанных слов.
      • startTime — временная отметка начала слова на аудиозаписи. Возможна погрешность в пределах 1-2 секунд.
      • endTime — временная отметка конца слова. Возможна погрешность в пределах 1-2 секунд.
      • word — распознанное слово. Распознанные числа пишутся прописью, например не 12, а двенадцать.
      • condfidence
        — достоверность определения. Сейчас сервис всегда возвращает значение 1, которое эквивалентно 100%.
    • text — распознанный текст целиком. По умолчанию числа пишутся цифрами. Чтобы весь текст был прописью, укажите true в поле raw_results.
    • confidence — достоверность определения. Сейчас сервис всегда возвращает значение 1, которое эквивалентно 100%.
  • channelTag — аудиоканал, для которого выполнено распознавание.
{
 "done": true,
 "response": {
  "@type": "type.googleapis.com/yandex.cloud.ai.stt.v2.LongRunningRecognitionResponse",
  "chunks": [
   {
    "alternatives": [
     {
      "words": [
       {
        "startTime": "0.879999999s",
        "endTime": "1.159999992s",
        "word": "при",
        "confidence": 1
       },
       {
        "startTime": "1.219999995s",
        "endTime": "1.539999988s",
        "word": "написании",
        "confidence": 1
       },
       ...
      ],
      "text": "при написании хоббита толкин обращался к мотивам скандинавской мифологии древней английской поэмы беовульф",
      "confidence": 1
     }
    ],
    "channelTag": "1"
   },
   ...
  ]
 },
 "id": "e03sup6d5h7rq574ht8g",
 "createdAt": "2019-04-21T22:49:29Z",
 "createdBy": "ajes08feato88ehbbhqq",
 "modifiedAt": "2019-04-21T22:49:36Z"
}

Примеры

Распознать русскую речь в формате OggOpus

Чтобы распознать речь в формате OggOpus, достаточно указать в конфигурации язык распознавания в поле languageCode.

  1. Сформируйте тело запроса и сохраните его в файл, например body.json. Ссылку на аудиофайл в Object Storage укажите в поле uri:

    {
        "config": {
            "specification": {
                "languageCode": "ru-RU"
            }
        },
        "audio": {
            "uri": "https://storage.yandexcloud.net/speechkit/speech.ogg"
        }
    }
    
  2. Отправьте запрос на распознавание:

    $ export IAM_TOKEN=CggaATEVAgA...
    $ curl -X POST \
        -H "Authorization: Bearer ${IAM_TOKEN}" \
        -d '@body.json' \
        https://transcribe.api.cloud.yandex.net/speech/stt/v2/longRunningRecognize
    
    {
        "done": false,
        "id": "e03sup6d5h2qr574ht99",
        "createdAt": "2019-04-21T22:49:29Z",
        "createdBy": "ajes08feato88ehbbhqq",
        "modifiedAt": "2019-04-21T22:49:29Z"
    }
    

    Сохраните идентификатор операции распознавания, полученный в ответе.

  3. Подождите немного, пока закончится распознавание. 1 минута одноканального аудио распознается примерно за 10 секунд.

  4. Отправьте запрос на получение информации об операции:

    $ curl -H "Authorization: Bearer ${IAM_TOKEN}" \ https://operation.api.cloud.yandex.net/operations/e03sup6d5h2qr574ht99 { "done": true, "response": { "@type": "type.googleapis.com/yandex.cloud.ai.stt.v2.LongRunningRecognitionResponse", "chunks": [ { "alternatives": [ { "text": "твой номер 212-85-06", "confidence": 1 } ], "channelTag": "1" } ] }, "id": "e03sup6d5h2qr574ht99", "createdAt": "2019-04-21T22:49:29Z", "createdBy": "ajes08feato88ehbbhqq", "modifiedAt": "2019-04-21T22:49:36Z" }
  1. Создайте API-ключ, используемый для аутентификации в этом примере. Чтобы использовать IAM-токен для аутентификации, исправьте заголовок в переменной header: замените Api-Key на Bearer и добавьте код для получения IAM-токена вместо API-ключа.

  2. Создайте Python-файл, например test.py, и добавьте в него следующий код:

    
    
    import requests
    import time
    import json
    
    
    key = '<API key>'
    filelink = 'https://storage.yandexcloud.net/speechkit/speech.ogg'
    
    POST = "https://transcribe.api.cloud.yandex.net/speech/stt/v2/longRunningRecognize"
    
    body ={
        "config": {
            "specification": {
                "languageCode": "ru-RU"
            }
        },
        "audio": {
            "uri": filelink
        }
    }
    
    
    header = {'Authorization': 'Api-Key {}'.format(key)}
    
    
    req = requests.post(POST, headers=header, json=body)
    data = req.json()
    print(data)
    
    id = data['id']
    
    
    while True:
    
        time.sleep(1)
    
        GET = "https://operation.api.cloud.yandex.net/operations/{id}"
        req = requests.get(GET.format(id=id), headers=header)
        req = req.json()
    
        if req['done']: break
        print("Not ready")
    
    
    print("Response:")
    print(json.dumps(req, ensure_ascii=False, indent=2))
    
    
    print("Text chunks:")
    for chunk in req['response']['chunks']:
        print(chunk['alternatives'][0]['text'])
    
  3. Выполните созданный файл:

Распознать речь в формате LPCM

Чтобы распознать речь в формате LPCM в настройках распознавания укажите частоту дискретизации файла и количество аудиоканалов. Язык распознавания укажите в поле languageCode.

  1. Сформируйте тело запроса и сохраните его в файл, например body.json:

    {
        "config": {
            "specification": {
                "languageCode": "ru-RU",
                "audioEncoding": "LINEAR16_PCM",
                "sampleRateHertz": 8000,
                "audioChannelCount": 1
            }
        },
        "audio": {
            "uri": "https://storage.yandexcloud.net/speechkit/speech.pcm"
        }
    }
    
  2. Отправьте запрос на распознавание:

    $ export IAM_TOKEN=CggaATEVAgA...
    $ curl -X POST \
        -H "Authorization: Bearer ${IAM_TOKEN}" \
        -d '@body.json' \
        https://transcribe.api.cloud.yandex.net/speech/stt/v2/longRunningRecognize
    
    {
        "done": false,
        "id": "e03sup6d5h2qr574ht99",
        "createdAt": "2019-04-21T22:49:29Z",
        "createdBy": "ajes08feato88ehbbhqq",
        "modifiedAt": "2019-04-21T22:49:29Z"
    }
    

    Сохраните идентификатор операции распознавания, полученный в ответе.

  3. Подождите немного, пока закончится распознавание. 1 минута одноканального аудио распознается примерно за 10 секунд.

  4. Отправьте запрос на получение информации об операции:

    $ curl -H "Authorization: Bearer ${IAM_TOKEN}" \
        https://operation.api.cloud.yandex.net/operations/e03sup6d5h2qr574ht99
    
    {
    "done": true, "response": {
     "@type": "type.googleapis.com/yandex.cloud.ai.stt.v2.LongRunningRecognitionResponse",
     "chunks": [
      {
       "alternatives": [
        {
         "text": "привет мир",
         "confidence": 1
        }
       ],
       "channelTag": "1"
      }
     ]
    },
    "id": "e03sup6d5h2qr574ht99",
    "createdAt": "2019-04-21T22:49:29Z",
    "createdBy": "ajes08feato88ehbbhqq",
    "modifiedAt": "2019-04-21T22:49:36Z"
    }
    

cloud.yandex.ru

Как начать работать cо SpeechKit | Яндекс.Облако

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

В этом разделе вы научитесь использовать SpeechKit API. Сначала вы создадите аудиофайл из текста, а потом попробуете его распознать.

Перед началом

Чтобы воспользоваться примерами, установите cURL и получите данные вашего аккаунта для авторизации:

Аккаунт пользователя на Яндексе

Сервисный аккаунт

Федеративный аккаунт

  1. Выберите способ аутентификации:

    • Получите IAM-токен, используемый в примерах.

    • Создайте API-ключ. Передайте API-ключ в заголовке Authorization в следующем формате:

      Authorization: Api-Key <API-ключ>
      
  2. Назначьте сервисному аккаунту роль editor или выше на каталог, в котором он был создан.

    Не указывайте в запросах идентификатор каталога — сервис использует каталог, в котором был создан сервисный аккаунт.

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

С помощью синтеза речи вы сможете превратить текст в речь и сохранить ее в аудиофайл.

Сервис поддерживает следующие языки:

  • ru-RU — русский;
  • en-US — английский;
  • tr-TR — турецкий.

Передайте текст в поле text в теле запроса, используя URL-кодирование. В параметре lang укажите язык текста, а в folderId — идентификатор каталога, полученный перед началом. Ответ запишите в файл:

$ export TEXT="Hello world!"
$ export FOLDER_ID=b1gvmob95yysaplct532
$ export IAM_TOKEN=CggaATEVAgA...
$ curl -X POST \
     -H "Authorization: Bearer ${IAM_TOKEN}" \
     --data-urlencode "text=Hello World" \
     -d "lang=en-US&folderId=${FOLDER_ID}" \
     "https://tts.api.cloud.yandex.net/speech/v1/tts:synthesize" > speech.ogg

Синтезированная речь будет записана в файл speech.ogg в директории, из которой вы выполнили эту команду.

По умолчанию аудио создается в формате OggOpus. Прослушать созданный файл можно в браузере, например в Яндекс.Браузере или Mozilla Firefox.

Подробнее про формат запроса на синтез речи.

Распознавание речи

Сервис позволяет распознавать речь тремя различными способами. В этом разделе используется распознавание коротких аудиозаписей.

Передайте двоичное содержимое аудиофайла в теле запроса. В Query-параметрах укажите язык распознавания (lang) и идентификатор каталога (folderId). В ответе сервис вернет распознанный текст:

$ curl -X POST \
     -H "Authorization: Bearer ${IAM_TOKEN}" \
     --data-binary "@speech.ogg" \
     "https://stt.api.cloud.yandex.net/speech/v1/stt:recognize?folderId=${FOLDER_ID}"

{"result":"Hello world"}
Что дальше

cloud.yandex.ru

Компания Яндекс — Технологии — SpeechKit — речевые технологии Яндекса

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

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

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

Распознавание речи

Если сказать голосовому поиску «Лев Толстой», смартфон услышит не имя и фамилию и даже не два слова, а просто последовательность плавно сменяющих друг друга звуков. Задача системы распознавания речи — «расслышать» в этих звуках буквы (вернее, соответствующие им фонемы) и сложить их в слова. Ситуацию осложняет то, что одна и та же фраза, произнесённая разными людьми в разной обстановке, будет звучать по-разному и давать непохожие друг на друга сигналы. Правильно интерпретировать их помогают акустическая и языковая модели.

Акустическая модель
Акустическая модель умеет определять, какой набор фонем соответствует звуковому сигналу. Этому она учится на большом корпусе начитанных дикторами текстов и их транскрипций — компьютер как бы следит за чтением по подстрочнику. Со временем, прослушав и прочитав определённое количество материалов и накопив достаточную статистику совпадений, он делает вывод: звуку с такими характеристиками, как правило, соответствует такая-то фонема, другому звуку — другая, и так далее.

Акустическая модель работает не с самим звуком, а с его характеристиками — то есть признаками, выраженными в цифрах. Когда вы произносите голосовой запрос, например в Яндекс.Навигаторе, смартфон записывает его и отправляет на сервер Яндекса. Там запись разделяется на много маленьких фрагментов — фреймов. На каждую секунду речи приходится сто фреймов. Они длятся по 25 миллисекунд и идут внахлёст, как черепица, чтобы информация на стыках не терялась. Каждый фрейм подвергается ряду преобразований, в результате которых получается около 40 коэффициентов, описывающих его частотные характеристики. На основании этих данных акустическая модель может предположить, частью какой фонемы является фрейм.

Фонемой называется элементарная единица речи — в русском языке их около 40 (около — потому что лингвисты разных школ пользуются разными системами классификации и единого мнения насчёт числа фонем у них нет). На самом деле звуки, которые мы произносим, гораздо разнообразнее, ведь звучание фонемы зависит от того, в какой части слова — в начале, середине или конце — она находится и что у неё за соседи. Например, [а] между двумя гласными в сочетании «на аудиозаписи» отличается от [а] между согласными в слове «бак». Поэтому для хорошего распознавания фонема — слишком грубая единица.

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

Языковая модель
В идеальном мире программа безошибочно определяет, какая фонема соответствует каждому фрагменту голосового запроса. Но даже человек иногда может не понять или не расслышать все звуки и достраивает слово исходя из контекста. Для этого люди опираются на собственный речевой опыт: если ваш собеседник жалуется на заложенный нос, вы поймёте, что у него «насморк», а не «дасморк». Примерно так же работает система распознавания, только вместо речевого опыта она использует языковую модель.

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

Языковая модель работает уже не с признаками звука, а с цепочкой фонем — вернее с цепочкой вероятных фонем. Дело в том, что акустическая модель, обработав частотные признаки фрейма, выдаёт не одну конкретную фонему, а несколько — и у каждой из них свой коэффициент вероятности. Несколько упрощая, допустим, что в случае «насморка» акустическая модель выдаст две примерно равно вероятных фонемы в начале слова — [н] и [д]. Теперь в дело вступает языковая модель. Во время обучения «дасморки» встречались ей нечасто, а вот «насморков» — сколько угодно. Поэтому система сделает вывод, что в начале слова, вероятнее всего, была фонема [н].

Примерно так же, исходя из контекста, языковая модель определяет последовательности слов. Например, выбирая между «мама мыла раму» и «мама мыло рама», она предпочтёт первое словосочетание, потому что оно знакомо ей по тренировочному корпусу текстов.

Понимание естественного языка

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

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

Представьте приложение, которое выполняет функции личного помощника: добавляет встречи в ежедневник, помогает купить билеты в театр, записывает за пользователем умные мысли — всё в таком духе. Этому приложению нужен голосовой интерфейс, чтобы пользователь мог сказать ему: «Устал я что-то, домой пора — вызови такси», а потом просто назвать нужный адрес и не вводить никакие данные вручную.

Чтобы понять, чего хочет пользователь, и активировать нужную функцию, роботу нужно заметить в распознанной речи ключевые слова. В нашем случае — «вызови такси». Этим словам его научил разработчик: они занесены в программу в числе других формулировок вызова такси: «закажи такси», «вызови машину», […] «хочу поехать домой». Естественно, всех вариантов разработчик учесть не может. Поэтому, собрав тестовую версию приложения, он предлагает попользоваться ею друзьям и коллегам — так выясняется, как ещё люди могут заказывать такси.

Все новые формулировки записываются в конфигурационный файл программы, а затем размечаются: в них выделяются слова-маркеры и характерные синтаксические схемы. Анализируя разметку, программа сама учится понимать даже такие формулировки, которых нет в списке, но которые похожи на известные ей конструкции. Например, если в списке есть варианты «вызови машину» и «закажи такси», то и формулировку «закажи машину» программа тоже поймёт.

Синтез речи

Чтобы работать с голосовым интерфейсом компьютера было удобно, он должен уметь не только слышать, но и говорить. Конечно, если сервис не предполагает сложной коммуникации с пользователем, его реплики можно просто заранее записать и проигрывать в нужный момент. Но что если компьютеру придётся использовать в своём вопросе информацию, которую он только что получил от человека? Скажем, для подтверждения даты и адреса доставки? Чтобы он мог с таким справиться, его нужно научить произносить произвольный текст.

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

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

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

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

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

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

Голоса
Наконец, о самом голосе. Узнаваемыми наши голоса, в первую очередь, делает тембр, который зависит от особенностей строения органов речевого аппарата у каждого человека. Тембр вашего голоса можно смоделировать, то есть описать его характеристики — для этого достаточно начитать в студии небольшой корпус текстов. После этого данные о вашем тембре можно использовать при синтезе речи на любом языке, даже таком, которого вы не знаете. Когда роботу нужно что-то сказать вам, он использует генератор звуковых волн — вокодер. В него загружаются информация о частотных характеристиках фразы, полученная от акустической модели, а также данные о тембре, который придаёт голосу узнаваемую окраску. Подробнее о возможностях и способах применения Yandex SpeechKit вы можете прочитать на специальном сайте. Если вы разработчик и хотите протестировать облачную или мобильную версию SpeechKit, поищите информацию на странице технологии.

yandex.ru

Интерактивное голосовое редактирование текста с помощью новых речевых технологий от Яндекса

Сегодня наше приложение Диктовка для интерактивного написания и редактирования текста голосом появилось в AppStore и Google Play. Его главная задача — продемонстрировать часть новых возможностей комплекса речевых технологий Яндекса. Именно о том, чем интересны и уникальны наши технологии распознавания и синтеза речи, я хочу рассказать в этом посте.

Пара слов, чтобы вы понимали, о чём пойдёт речь. Яндекс уже давно предоставляет бесплатное мобильное API, которое можно использовать, например, для распознавания адресов и голосовых запросов к поиску. За этот год мы смогли довести его качество почти до того же уровня, на котором такие запросы и реплики понимают сами люди. И теперь мы делаем следующий шаг — модель для распознавания свободной речи на любую тему.

Кроме этого, наш синтез речи поддерживает эмоции в голосе. И, насколько нам известно, это пока первый коммерчески доступный синтез речи с такой возможностью.

Обо всём этом, а также о некоторых других возможностях SpeechKit: об активации голосом, автоматической расстановке пунктуационных знаков и распознавании смысловых объектов в тексте — читайте ниже.

Всеядное ASR и качество распознавания


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

За прошедший год относительная доля ошибочно распознанных слов (Word Error Rate) понизилась на 30%. Например, сегодня SpeechKit правильно распознаёт 95% адресов и географических объектов, вплотную приблизившись к человеку, который понимает 96–98% услышанных слов. Полнота распознавания новой модели для диктовки разных текстов сейчас составляет 82%. С таким уровнем можно создать полноценное решение для конечных пользователей, что мы и хотели показать на примере Диктовки.

Изначально SpeechKit работал только для поисковых запросов: общей тематики и геонавигационных. Хотя уже тогда мы задумывали сделать не просто дополнительный инструмент ввода, «голосовую» клавиатуру, а универсальный интерфейс, который полностью заменит любое взаимодействие с системой живым разговором.

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

Такой размер модели ставил новые условия с точки зрения вычислительных ресурсов. Для каждого фрейма рассматриваются несколько тысяч вариантов распознавания — и чем больше мы успеваем, тем выше качество. А работать система должна в потоке, в режиме реального времени, поэтому все расчёты нужно оптимизировать динамически. Экспериментировали, пробовали, искали подход: ускорения добились, например, сменой библиотеки линейной алгебры.

Но важнее и сложнее всего было собрать достаточно правильных данных, пригодных для обучения потоковой речи. Сейчас для тренировки акустической модели используются около 500 часов вручную транскрибированной речи. Это не такая уж большая база — для сравнения, популярный научный корпус Switchboard, который часто используют в исследовательских целях, содержит примерно 300 часов живых, спонтанных разговоров. Безусловно, увеличение базы способствует росту качества обучаемой модели, но мы делаем упор на правильную подготовку данных и аккуратнее моделируем транскрипции, что позволяет с приемлемым качеством обучаться на относительно небольшой базе.

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

Коэффициенты поступают на вход акустической модели, которая вычисляет распределение вероятностей для примерно 4000 сенонов в каждом фрейме. Сенон — это начало, середина или конец фонемы.

Акустическая модель SpeechKit построена на комбинации скрытых Марковских моделей и глубокой нейронной сети прямого распространения (feedforward DNN). Это уже проверенное решение, и в прошлой статье мы рассказывали, как отказ от гауссовых смесей в пользу DNN дал почти двукратный скачок в качестве.

Затем вступает первая языковая модель: несколько WFST — взвешенных конечных трансдьюсеров — превращают сеноны в контекстно-зависимые фонемы, а из них уже с помощью словаря произношений строятся целые слова, причём для каждого слова получаются сотни гипотез.

Финальная обработка происходит во второй языковой модели. К ней подключена RNN, рекуррентная нейронная сеть, и эта модель ранжирует полученные гипотезы, помогая выбрать самый правдоподобный вариант. Сеть рекуррентного типа особенно эффективна для языковой модели. Определяя контекст каждого слова, она может учитывать влияние не только ближайших слов, как в нейронной сети прямого распространения (скажем, для триграммной модели — это два предшествующих слова), но и дальше отстоящих, как бы «запоминая» их.

Распознавание длинных связных текстов доступно в SpeechKit Cloud и SpeechKit Mobile SDK — для использования новой языковой модели в параметрах запроса нужно выбрать тему «notes».

Голосовая активация


Вторая ключевая составляющая голосового интерфейса — это система активации голосом, которая запускает нужное действие в ответ на ключевую фразу. Без неё не получится в полной мере «развязать руки» пользователю. Для SpeechKit мы разработали свой модуль голосовой активации. Технология очень гибкая — разработчик, использующий библиотеку SpeechKit, может сам выбрать любую ключевую фразу для своего приложения.

В отличие от, например, решения Google — их разработчики используют для распознавания коронной фразы «Окей, Google» глубокую нейронную сеть. DNN даёт высокое качество, но система активации при этом ограничена единственной командой, и для обучения нужно огромное количество данных. Скажем, модель для распознавания всем знакомой фразы обучалась на примере более чем 40 тысяч пользовательских голосов, которые обращались к своим смартфонам с Google Now.

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

Впрочем, есть и послабление — для системы активации нужен совсем небольшой словарь, ведь ей достаточно понимать несколько ключевых фраз, а всю остальную речь можно просто игнорировать. Поэтому языковая модель активации гораздо компактнее. Большинство состояний WFST соответствуют определённой части нашей команды — например, «началу четвёртой фонемы». Есть также «мусорные» состояния, описывающие тишину, посторонний шум и всю остальную речь, отличную от ключевой фразы. Если полноценная модель распознавания в SpeechKit имеет десятки миллионов состояний и занимает до 10 гигабайт, то для голосовой активации она ограничена сотнями состояний и умещается в несколько десятков килобайт.

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

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

Синтез речи


Третий основной компонент речевой технологии — это синтез речи (text-to-speech). TTS-решение SpeechKit позволяет озвучить любой текст мужским или женским голосом, да ещё и задав нужную эмоцию. Ни у одного из известных нам голосовых движков на рынке нет такой возможности.

Есть несколько принципиально разных технологий синтеза речи, и в большинстве современных систем используется конкатенативный синтез методом «unit selection». Заранее записанный образец голоса режется на определенные составные элементы (например, контекстно-зависимые фонемы), из которых составляется речевая база. Затем любые нужные слова собираются из отдельных юнитов. Получается правдоподобная имитация человеческого голоса, но воспринимать его тяжело — скачет тембр, возникают неестественные интонации и резкие переходы на стыках отдельных юнитов. Особенно это заметно при озвучивании длинного связного текста. Качество такой системы можно повышать, увеличивая объём речевой базы, но это долгий и кропотливый труд, требующий привлечения профессионального и очень терпеливого диктора. И полнота базы всегда остаётся узким местом системы.

В SpeechKit мы решили использовать статистический (параметрический) синтез речи на базе скрытых Марковских моделей. Процесс, по сути, аналогичен распознаванию, только происходит в обратном направлении. Исходный текст передаётся в модуль G2P (grapheme-to-phoneme), где преобразуется в последовательность фонем.

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

Тембр такого голоса несколько «компьютерный», зато у него естественные и плавные интонации. При этом гладкость речи не зависит от объёма и длины читаемого текста, а голос легко настраивать. Достаточно указать в параметрах запроса один ключ, и модуль синтеза выдаст голос с соответствующей эмоциональной окраской. Разумеется, никакая система unit selection на такое не способна.

Чтобы модель голоса смогла построить алгоритмы, соответствующие различным эмоциям, потребовалось правильным образом обучить её. Поэтому во время записи наша коллега Евгения, чей голос и можно услышать в SpeechKit, произносила свои реплики по очереди нейтральным голосом, радостным и, наоборот, раздражённым. В ходе обучения система выделила и описала параметры и характеристики голоса, соответствующие каждому из этих состояний.

Не все модификации голоса построены на обучении. Например, SpeechKit позволяет также окрасить синтезированный голос параметрами «drunk» и «ill». Наши разработчики пожалели Женю, и ей не пришлось напиваться перед записью или бегать на морозе, чтобы хорошенько простудиться.

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

Статистический метод также позволяет быстро расширять систему. В модели unit selection для добавления нового голоса нужно создать отдельную речевую базу. Диктор должен записать много часов речи, при этом безупречно выдерживая одинаковую интонацию. В SpeechKit для создания нового голоса достаточно записать хотя бы два часа речи — примерно 1800 специальных, фонетически-сбалансированных предложений.

Выделение смысловых объектов


Слова, которые произносит человек, важно не только перевести в буквы, но и наполнить смыслом. Четвёртая технология, которая в ограниченном виде доступна в SpeechKit Cloud, не касается напрямую работы с голосом — она начинает работать уже после того, как произнесённые слова распознаны. Но без неё полный стек речевых технологий не сделать — это выделение смысловых объектов в естественной речи, которое на выходе даёт не просто распознанный, а уже размеченный текст.

Сейчас в SpeechKit реализовано выделение дат и времени, ФИО, адресов. В гибридной системе сочетаются контекстно-свободные грамматики, словари ключевых слов и статистические данные поиска и разных сервисов Яндекса, а также алгоритмы машинного обучения. Например, во фразе «поехали на улицу Льва Толстого» слово «улица» помогает системе определить контекст, после чего в базе данных Яндекс.Карт находится соответствующий объект.

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

На вход системы подаётся список разных типов объектов и примеры фраз из живой речи, их описывающих. Далее из этих примеров методом Pattern Mining формируются паттерны. В них учитываются начальная форма, корни, морфологические вариации слов. Следующим шагом даются примеры употребления выбранных объектов в разных сочетаниях, которые помогут системе понимать контекст. На основе этих примеров строится скрытая Марковская модель, где наблюдаемыми состояниями становятся выделенные в реплике пользователя объекты, а скрытыми — соответствующие им объекты из предметного поля с уже известным значением.

Например, есть две фразы: «вставить „привет, друг“ в начало» и «вставить из буфера». Система определяет, что в первом случае после «вставить» (действие редактирования) идёт произвольный текст, а во втором — известный ей объект («буфер обмена»), и по-разному реагирует на эти команды. В традиционной системе это потребовало бы написания правил или грамматик вручную, а в новой технологии Яндекса анализ контекста происходит автоматически.

Автопунктуация


Диктуя что-либо, в получившемся тексте ожидаешь увидеть знаки препинания. И появляться они должны автоматически, чтобы не приходилось разговаривать с интерфейсом в телеграфном стиле: «Дорогой друг — запятая — как поживаешь — вопросительный знак». Поэтому дополняет SpeechKit система автоматической расстановки знаков препинания.

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

Большая сложность возникла с данными для обучения — в большинстве корпусов уже нормализованные тексты, в которых знаки препинания опущены. Также почти нет пунктуации и в текстах поисковых запросов. Мы обратились к «Эху Москвы», которые вручную расшифровывают все свои эфиры, и они разрешили нам использовать свой архив. Быстро выяснилось, что для наших целей эти транскрипции непригодны — они сделаны близко к тексту, но не дословно, а поэтому для машинного обучения не годятся. Следующая попытка была сделана с аудиокнигами, но в их случае, наоборот, качество оказалось слишком высоким. Хорошо поставленные голоса, с выражением декламирующие текст, слишком далеки от реальной жизни, и результаты обучения на таких данных никак не удавалось применить в спонтанной диктовке.

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

Начать пришлось с чистого листа — мы решили расставлять знаки препинания уже на этапе пост-обработки. Начали с одного из простейших методов, который, как ни странно, показал в итоге вполне приемлемый результат. Паузы между словами получают одну из меток: пробел, точка, запятая, вопросительный знак, восклицательный знак, двоеточие. Чтобы предсказать, какая метка соответствует конкретной паузе, используется метод условных случайных полей (CRF — conditional random fields). Для определения контекста учитываются три предшествующих и два последующих слова, и эти нехитрые правила позволяют с достаточно высокой точностью расставлять знаки. Но мы продолжаем экспериментировать и с полноценными моделями, которые смогут ещё на этапе распознавания голоса правильно интерпретировать интонации человека с точки зрения пунктуации.

Планы на будущее


Сегодня SpeechKit активно используется для решения «боевых» задач в массовых сервисах для конечных пользователей. Следующая веха — научиться распознавать спонтанную речь в живом потоке, чтобы можно было прямо в реальном времени расшифровать интервью или автоматически конспектировать лекцию, получая на выходе уже размеченный текст, с выделенными тезисами и ключевыми фактами. Это огромная и очень наукоёмкая задача, которую пока не удалось решить никому в мире — а других мы и не любим!

Для развития SpeechKit очень важна обратная связь. Поставьте Яндекс.Диктовку, разговаривайте с ней почаще — чем больше данных мы получаем, тем быстрее растёт качество распознавания в доступной всем вам библиотеке. Не стесняйтесь исправлять ошибки распознавания с помощью кнопки «Корректор» — это помогает разметить данные. И обязательно пишите в форму обратной связи в приложении.

habr.com

Языковые модели | Яндекс.Облако — Документация

Языковая модель — нейронная сеть, которая обучена на фразах из определенной тематики. Например, для распознавания номера телефона лучше подходит модель Числа, а для того чтобы распознать имя и фамилию абонента, следует использовать модель Имена.

Для обучения моделей используются массивы данных из сервисов и приложений Яндекса. Это позволяет постоянно улучшать качество распознавания.

Поддерживаемые языковые модели

Русский язык

Английский язык

Турецкий язык

  • Короткие запросы (general) — фразы (3—5 слов) на различные темы, в том числе запросы в поисковых системах (на сайтах). Например:
    • покажи следующий поворот
    • соединить с отделом продаж
    • еще чашку кофе и две мягких французских булочки
    • какая погода во владивостоке
    • напомни купить овощей и фруктов по дороге домой
  • Адреса (maps) — адреса, названия организаций и географических объектов:
    • поехали на улицу кирпичные выемки пять
    • сколько ехать от льва толстого до новой земли
    • покажи маршрут до музея маяковского
  • Даты (dates) — названия месяцев, порядковые и количественные числительные:
    • второго ноль седьмого две тысячи первого
    • двадцать седьмое апреля тысяча девятьсот девятнадцатого года
  • Имена (names) — имена и фамилии, просьбы соединить по телефону:
    • щукин платон
    • соедините с людчиком
    • переговорить с васей васиным
  • Числа (numbers) — количественные числительные от 1 до 999 и разделители — точка, запятая, тире. Модель подходит для диктовки номеров телефонов, счетов, документов:
    • два двенадцать восемьдесят пять ноль шесть
    • сто пятьдесят семь запятая пятнадцать сорок три
  • Короткие запросы (general) — фразы (3—5 слов) на различные темы, в том числе запросы в поисковых системах (на сайтах):
    • connect me to the sales department
    • another cup of coffee and two soft French rolls
  • Адреса (maps) — адреса, названия организаций и географических объектов:
  • Короткие запросы (general) — фразы (3—5 слов) на различные темы, в том числе запросы в поисковых системах (на сайтах):
    • satış departmanıyla görüşmek istiyorum
    • bir kahve daha ve iki küçük kurabiye
  • Адреса (maps) — адреса, названия организаций и географических объектов:

cloud.yandex.ru

Компания Яндекс — Технологии — SpeechKit

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

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

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

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

Голосовая активация

Когда вы хотите что-то сказать конкретному человеку, вы называете его по имени. Это своего рода условный сигнал: «Эй! То, что я сейчас скажу, адресовано тебе и только тебе». В Yandex SpeechKit таким сигналом выступает команда голосовой активации. Командой может служить любое слово или фраза — всё зависит от фантазии разработчика.

Когда пользователь произносит команду, компьютер переходит в режим распознавания — так как понимает: всё, что будет сказано в дальнейшем, предназначено ему. Нажимать кнопки не нужно, достаточно сказать кодовую фразу.

Голосовая активация в Yandex SpeechKit, по сути, представляет собой систему распознавания речи в миниатюре. Система запускается прямо на устройстве и не требует доступа в интернет. Она анализирует весь входящий звуковой поток на предмет наличия речи, и, если речь обнаружена, начинает искать в ней кодовую фразу. Такой подход позволяет сэкономить заряд батареи в смартфоне или планшете.

Выделение смысловых объектов

Представьте, что вы услышали фразу «В Москве сегодня семь градусов тепла». Вам без дополнительных объяснений понятно, что «Москва» — это город, «сегодня» — это 30 октября, а «семь градусов» — это температура воздуха. Иначе говоря, вы умеете извлекать из слов смысл.

В этом умении человек оставляет компьютер далеко позади, но кое-чему научить машину всё же можно. Мы добавили в Yandex SpeechKit технологию выделения в распознанном тексте смысловых объектов. Такими объектами могут быть дата и время, имена и фамилии или адреса.

Технология позволяет управлять компьютером или смартфоном простыми фразами, которые не нужно запоминать специально. Например, «Поставь будильник на семь утра» или «Поехали на улицу Льва Толстого, дом 16». Фраза может звучать по-разному — система поймёт, что «Набери номер Ивана Ивановича» и «Позвони Ивану Ивановичу» — это одно и то же. Yandex SpeechKit умеет анализировать контекст и поэтому уяснит, что во фразе «Позвони Владимиру» имеется в виду человек, а во фразе «Поехали во Владимир» — город.

Синтез речи

Хороший собеседник умеет не только слушать, но и отвечать. Поэтому в Yandex SpeechKit теперь есть технология синтеза речи — она позволяет компьютеру проговаривать текст вслух. Например, может рассказать про себя сама:

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

К синтезу речи существуют разные подходы. Один из них предполагает запись диктором отдельных фрагментов (сэмплов), из которых впоследствии «склеивается» речь. Такой подход трудоёмок, а кроме того, синтезированная таким способом речь звучит неестественно: обрывисто и с паузами в самых неожиданных местах.

В Yandex SpeechKit для синтеза речи мы используем систему на базе скрытых марковских моделей. Акустическая модель принимает на вход последовательность фонем и выдаёт на выходе соответствующий им звук. Это позволяет добиться более плавных интонаций, гибко управлять скоростью речи и даже придавать ей те или иные эмоции.***
Все технологии, о которых мы рассказали, входят в библиотеку SpeechKit Mobile SDK и облачный сервис SpeechKit Cloud и доступны сторонним разработчикам. Они могут встраивать их в свои продукты: мобильные приложения, игры, компьютерные программы, корпоративные сервисы. О том, как это сделать, можно узнать на сайте речевых технологий Яндекса.

yandex.ru

Разное

Отправить ответ

avatar
  Подписаться  
Уведомление о