Потоковый режим позволяет вам одновременно отправлять аудио на распознавание и получать результаты распознавания в рамках одного соединения.
В отличие от других способов распознавания, вы сможете получать промежуточные результаты распознавания, пока фраза еще незакончена. После паузы сервис вернет финальные результаты и начнет распознавание новой фразы.
Например, как только пользователь начинает говорить с Яндекс.Станцией, она начинает передавать его речь на сервер для распознавания. Сервер обрабатывает данные и возвращает промежуточные и финальные результаты распознавания каждой фразы. Промежуточные результаты используются, чтобы показать пользователю ход распознавания, а после финальных результатов Яндекс.Станция выполняет действие, например включает фильм.
Чтобы использовать сервис, создайте приложение, которое будет осуществлять потоковое распознавания речи: отправлять аудиофрагменты и обрабатывать ответ с результатами распознавания.
Для распознавания речи приложение сначала должно отправить сообщение с настройками распознавания, а потом отправлять сообщения с аудиофрагментами.
Параллельно с тем как отправляются аудиофрагменты, в ответ сервис будет возвращать фрагменты распознанного текста, которые необходимо обрабатывать, например выводить их в консоль.
Чтобы приложение смогло обращаться к сервису, необходимо сгенерировать код интерфейса клиента для используемого языка программирования. Сгенерируйте этот код из файла stt_service.proto из репозитория Yandex.Cloud API.
Ниже представлены примеры клиентских приложений. Помимо этого, в документации gRPC вы можете найти подробные инструкции по генерации интерфейсов и реализации клиентских приложений для различных языков программирования.
В каждом запросе приложение должно передавать идентификатор каталога, на который у вас есть роль editor
или выше. Подробнее в разделе Управление доступом.
Также приложение должно аутентифицироваться при каждом запросе, например при помощи IAM-токенаПодробнее об аутентификации в сервисе.
В процессе распознавания речь делится на фразы. Фраза — это фрагмент речи из одного и более слов, после которого был период тишины. Фраза может состоять из предложений, если между ними не было паузы.
Результат распознавания — это варианты распознавания одной фразы. В ответе сервиса может содержаться несколько фраз.
Финальные результаты распознавания формируются, когда система распознавания обнаруживает конец фразы. При этом вы можете отправить несколько сообщений с аудиофрагментом и это будет одной фразой.
Промежуточные результаты распознавания формируются в процессе распознавания фразы. Получение промежуточных результатов позволит быстрее реагировать на распознаваемую речь, не дожидаясь окончания фразы для получения финального результата.
Вы можете указать, чтобы сервис возвращал промежуточные результаты распознавания. Для этого в сообщении с настройками распознавания укажите
. В ответе для промежуточных результатов final=false
, а для финальных final=true
.
После получения сообщения с настройками распознавания сервис начнет сессию распознавания. Для каждой сессии действуют следующие ограничения:
Если в течение 5 секунд в сервис не отправлялись сообщения или достигнут лимит по длительности или размеру данных, сессия обрывается. Чтобы продолжить распознавание речи, надо заново установить соединение и отправить новое сообщение с настройками распознавания.
Сервис располагается по адресу: stt.api.cloud.yandex.net:443
Параметр | Описание |
---|---|
config | object Поле с настройками распознавания и идентификатором каталога. |
config .specification | object Настройки распознавания. |
config .specification .languageCode | string Язык, для которого будет выполнено распознавание. Допустимые значения:
|
config .specification .model | string Языковая модель, которую следует использовать при распознавании. Чем точнее выбрана модель, тем лучше результат распознавания. В одном запросе можно указать только одну модель. Допустимые значения зависят от выбранного языка. Значение параметра по умолчанию: . |
config .specification .profanityFilter | boolean Фильтр ненормативной лексики. Допустимые значения:
|
config .specification .partialResults | boolean Фильтр промежуточных результатов. Допустимые значения:
|
config .specification .audioEncoding | string Формат передаваемого аудио. Допустимые значения: |
config .specification .sampleRateHertz | integer (int64) Частота дискретизации передаваемого аудио. Этот параметр обязателен, если значение format равно LINEAR16_PCM . Допустимые значения:
|
folderId | string Идентификатор каталога, к которому у вас есть доступ. Требуется для авторизации с пользовательским аккаунтом (см. ресурс UserAccount ). Не используйте это поле, если вы делаете запрос от имени сервисного аккаунта. Максимальная длина строки в символах — 50. |
При успешном распознавании фрагмента речи придет сообщение, содержащее список результатов распознавания chunks[]
. Каждый результат содержит поля:
alternatives[]
— список вариантов распознанного текста. Каждый вариант содержит поля:text
— распознанный текст.confidence
— достоверность определения. Сейчас сервис всегда возвращает значение 1
, которое эквивалентно 100%.final
— равно true
, если результат окончательный, и false
, если промежуточный.Соответствия gRPC-статусов с HTTP-кодами описаны в google.rpc.Code.
Список возможных gRPC-ошибок, возвращаемых сервисом:
Код | Статус | Описание |
---|---|---|
3 | INVALID_ARGUMENT | Клиент некорректно указал параметры запроса. Детальная информация представлена в поле details . |
16 | UNAUTHENTICATED | Для выполнения операции необходима авторизация. Проверьте IAM-токен и идентификатор каталога, которые вы передали |
13 | INTERNAL | Внутренняя ошибка сервера. Ошибка означает, что операция не может быть выполнена из-за технического состояния сервера. Например, из-за нехватки вычислительных ресурсов. |
Для того чтобы попробовать примеры в этом разделе:
git clone https://github.com/yandex-cloud/cloudapi
speech.pcm
в формате LPCM с частотой дискретизации 8000.Примечание
Нет аудиофайла для распознавания? Скачайте готовый пример.
После этого приступите к созданию клиентского приложения.
Установите пакет grpcio-tools с помощью менеджера пакетов pip:
$ pip install grpcio-tools
Перейдите в директорию с репозиторием Yandex.Cloud API, создайте директорию output
и сгенерируйте в ней код интерфейса клиента:
$ cd cloudapi
$ mkdir output
$ python -m grpc_tools.protoc -I . -I third_party/googleapis --python_out=output --grpc_python_out=output google/api/http.proto google/api/annotations.proto yandex/api/operation.proto google/rpc/status.proto yandex/cloud/operation/operation.proto yandex/cloud/ai/stt/v2/stt_service.proto
В результате в директории output
будут созданы файлы с интерфейсом клиента: stt_service_pb2.py
, stt_service_pb2_grpc.py
и файлы зависимостей.
Создайте файл в корне директории output
, например test.py
, и добавьте в него следующий код:
import argparse import grpc import yandex.cloud.ai.stt.v2.stt_service_pb2 as stt_service_pb2 import yandex.cloud.ai.stt.v2.stt_service_pb2_grpc as stt_service_pb2_grpc CHUNK_SIZE = 16000 def gen(folder_id, audio_file_name): specification = stt_service_pb2.RecognitionSpec( language_code='ru-RU', profanity_filter=True, model='general', partial_results=True, audio_encoding='LINEAR16_PCM', sample_rate_hertz=8000 ) streaming_config = stt_service_pb2.RecognitionConfig(specification=specification, folder_id=folder_id) yield stt_service_pb2.StreamingRecognitionRequest(config=streaming_config) with open(audio_file_name, 'rb') as f: data = f.read(CHUNK_SIZE) while data != b'': yield stt_service_pb2.StreamingRecognitionRequest(audio_content=data) data = f.read(CHUNK_SIZE) def run(folder_id, iam_token, audio_file_name): cred = grpc.ssl_channel_credentials() channel = grpc.secure_channel('stt.api.cloud.yandex.net:443', cred) stub = stt_service_pb2_grpc.SttServiceStub(channel) it = stub.StreamingRecognize(gen(folder_id, audio_file_name), metadata=(('authorization', 'Bearer %s' % iam_token),)) try: for r in it: try: print('Start chunk: ') for alternative in r.chunks[0].alternatives: print('alternative: ', alternative.text) print('Is final: ', r.chunks[0].final) print('') except LookupError: print('Not available chunks') except grpc._channel._Rendezvous as err: print('Error code %s, message: %s' % (err._state.code, err._state.details)) if __name__ == '__main__': parser = argparse.ArgumentParser() parser.add_argument('--token', required=True, help='IAM token') parser.add_argument('--folder_id', required=True, help='folder ID') parser.add_argument('--path', required=True, help='audio file path') args = parser.parse_args() run(args.folder_id, args.token, args.path)
Выполните созданный файл, передав в аргументах IAM-токен, идентификатор каталога и путь к аудиофайлу, который необходимо распознать:
$ export FOLDER_ID=b1gvmob95yysaplct532
$ export IAM_TOKEN=CggaATEVAgA...
$ python test.py --token ${IAM_TOKEN} --folder_id ${FOLDER_ID} --path speech.pcm
Start chunk:
alternative: привет
Is final: False
Start chunk:
alternative: привет мир
Is final: True
cloud.yandex.ru
Стоимость использования 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 |
Услуга | Цена за 1 млн символов, вкл. НДС |
---|---|
Синтез речи | 183,0508 ₽ |
cloud.yandex.ru
Yandex Compute Cloud
Создание виртуальных машин любой конфигурации и подключение к ним дисков.
Yandex Object Storage
Универсальное масштабируемое хранилище для данных любого формата до 5 ТБ.
Yandex Virtual Private Cloud
Создание сетей для передачи информации между облачными ресурсами и для связи облачных ресурсов с интернетом.
Yandex Identity and Access Management
Управление правами доступа к облачным ресурсам.
Yandex Load Balancer
Настройка балансировщиков для обеспечения отказоустойчивости и распределения сетевого трафика по облачным ресурсам.
Yandex Instance Groups
Компонент сервиса Yandex Compute Cloud, предназначенный для развёртывания и горизонтального масштабирования виртуальных машин.
Yandex DDoS Protection
Компонент сервиса Yandex Virtual Private Cloud, предназначенный для защиты от DDoS-атак приложений, размещённых в инфраструктуре Яндекс.Облака.
Yandex Managed Service for PostgreSQL
Развертывание объектно-реляционной СУБД и поддержка серверов и баз данных в инфраструктуре Яндекс.Облака.
Yandex Managed Service for ClickHouse
Развертывание столбцовой аналитической СУБД с открытым кодом и поддержка серверов и баз данных в инфраструктуре Яндекс.Облака.
Yandex Managed Service for MongoDB
Развертывание документоориентированной бессхемной СУБД и поддержка серверов и баз данных в инфраструктуре Яндекс.Облака.
Yandex Managed Service for MySQL®
Развёртывание объектно-реляционной СУБД и поддержка серверов и баз данных в инфраструктуре Яндекс.Облака.
Yandex Managed Service for Redis™
Развёртывание СУБД в формате ключ-значение и поддержка серверов и баз данных в инфраструктуре Яндекс.Облака.
Yandex SpeechKit
Речевые технологии Яндекса: распознавание и синтез речи через HTTP API.
Yandex Translate
Облачный сервис машинного перевода: поддерживает 90+ языков, доступен через API.
Yandex Vision
OCR технологии Яндекса: распознавание текста с помощью моделей машинного обучения.
tech.yandex.ru
Этим летом я участвовал в разработке бота Datatron, предоставляющего доступ с открытыми финансовыми данными РФ. В какой-то момент я захотел, чтобы бот мог обрабатывать голосовые запросы, и для реализации этой задачи решил использовать наработками Яндекса.
После долгих поисков хоть какой-то полезной информации на эту тему, я наконец-то встретил человека, который написал voiceru_bot и помог мне разобраться с этой темой (в источниках приведена ссылка на его репозиторий). Теперь я хочу поделиться этими знаниями с вами.
Ниже будет по фрагментам приведен код полностью готовый к применению, который практически можно просто скопировать и вставить в ваш проект.
Заведите аккаунт на Яндексе (если у вас его нет). Затем прочтите условия использования SpeechKit Cloud API. Если вкратце, то для некоммерческих проектов при количестве запросов не более 1000 в сутки использование бесплатное. После зайдите в Кабинет разработчика и закажите ключ на требуемый сервис. Обычно его активируют в течение 3 рабочих дней (хотя один из моих ключей активировали через неделю). И наконец изучите документацию.
Перед тем, как отправить запрос к API, нужно получить само голосовое сообщение. В коде ниже в несколько строчек получаем объект, в котором хранятся все данные о голосовом сообщении.
import requests
@bot.message_handler(content_types=['voice'])
def voice_processing(message):
file_info = bot.get_file(message.voice.file_id)
file = requests.get('https://api.telegram.org/file/bot{0}/{1}'.format(TELEGRAM_API_TOKEN, file_info.file_path))
Сохранив в переменную file объект, нас в первую очередь интересует поле content, в котором хранится байтовая запись отправленного голосового сообщения. Она нам и нужна для дальнейшей работы.
Голосовое сообщение в Telegram сохраняется в формате OGG с аудиокодеком Opus. SpeechKit умеет обрабатывать аудиоданные в формате OGG с аудиокодеком Speex. Таким образом, необходимо конвертировать файл, лучше всего в PCM 16000 Гц 16 бит, так как по документации этот формат обеспечивает наилучшее качество распознавания. Для этого отлично подойдет FFmpeg. Скачайте его и сохраните в директорию проекта, оставив только папку bin и ее содержимое. Ниже реализована функция, которая с помощью FFmpeg перекодирует поток байтов в нужный формат.
import subprocess
import tempfile
import os
def convert_to_pcm16b16000r(in_filename=None, in_bytes=None):
with tempfile.TemporaryFile() as temp_out_file:
temp_in_file = None
if in_bytes:
temp_in_file = tempfile.NamedTemporaryFile(delete=False)
temp_in_file.write(in_bytes)
in_filename = temp_in_file.name
temp_in_file.close()
if not in_filename:
raise Exception('Neither input file name nor input bytes is specified.')
# Запрос в командную строку для обращения к FFmpeg
command = [
r'Project\ffmpeg\bin\ffmpeg.exe', # путь до ffmpeg.exe
'-i', in_filename,
'-f', 's16le',
'-acodec', 'pcm_s16le',
'-ar', '16000',
'-'
]
proc = subprocess.Popen(command, stdout=temp_out_file, stderr=subprocess.DEVNULL)
proc.wait()
if temp_in_file:
os.remove(in_filename)
temp_out_file.seek(0)
return temp_out_file.read()
SpeechKit Cloud API принимает на вход файл размером до 1 Мб, при этом его размер нужно указывать отдельно (в Content-Length). Но лучше реализовать передачу файла по частям (размером не больше 1 Мб с использованием заголовка Transfer-Encoding: chunked). Так безопаснее, и распознавание текста будет происходить быстрее.
def read_chunks(chunk_size, bytes):
while True:
chunk = bytes[:chunk_size]
bytes = bytes[chunk_size:]
yield chunk
if not bytes:
break
Наконец, последний шаг – написать одну единственную функцию, которая будет служить «API» к этому модулю. То есть, сначала в ней будет происходить вызов методов, ответственных за конвертирование и считывание байтов по блокам, а затем идти запрос к SpeechKit Cloud и чтение ответа. По умолчанию, для запросов топик задан notes, а язык — русский.
import xml.etree.ElementTree as XmlElementTree
import httplib2
import uuid
from config import YANDEX_API_KEY
YANDEX_ASR_HOST = 'asr.yandex.net'
YANDEX_ASR_PATH = '/asr_xml'
CHUNK_SIZE = 1024 ** 2
def speech_to_text(filename=None, bytes=None, request_id=uuid.uuid4().hex, topic='notes', lang='ru-RU',
key=YANDEX_API_KEY):
# Если передан файл
if filename:
with open(filename, 'br') as file:
bytes = file.read()
if not bytes:
raise Exception('Neither file name nor bytes provided.')
# Конвертирование в нужный формат
bytes = convert_to_pcm16b16000r(in_bytes=bytes)
# Формирование тела запроса к Yandex API
url = YANDEX_ASR_PATH + '?uuid=%s&key=%s&topic=%s&lang=%s' % (
request_id,
key,
topic,
lang
)
# Считывание блока байтов
chunks = read_chunks(CHUNK_SIZE, bytes)
# Установление соединения и формирование запроса
connection = httplib2.HTTPConnectionWithTimeout(YANDEX_ASR_HOST)
connection.connect()
connection.putrequest('POST', url)
connection.putheader('Transfer-Encoding', 'chunked')
connection.putheader('Content-Type', 'audio/x-pcm;bit=16;rate=16000')
connection.endheaders()
# Отправка байтов блоками
for chunk in chunks:
connection.send(('%s\r\n' % hex(len(chunk))[2:]).encode())
connection.send(chunk)
connection.send('\r\n'.encode())
connection.send('0\r\n\r\n'.encode())
response = connection.getresponse()
# Обработка ответа сервера
if response.code == 200:
response_text = response.read()
xml = XmlElementTree.fromstring(response_text)
if int(xml.attrib['success']) == 1:
max_confidence = - float("inf")
text = ''
for child in xml:
if float(child.attrib['confidence']) > max_confidence:
text = child.text
max_confidence = float(child.attrib['confidence'])
if max_confidence != - float("inf"):
return text
else:
# Создавать собственные исключения для обработки бизнес-логики - правило хорошего тона
raise SpeechException('No text found.\n\nResponse:\n%s' % (response_text))
else:
raise SpeechException('No text found.\n\nResponse:\n%s' % (response_text))
else:
raise SpeechException('Unknown error.\nCode: %s\n\n%s' % (response.code, response.read()))
# Создание своего исключения
сlass SpeechException(Exception):
pass
Теперь дополним главный метод, из которого будем вызывать функцию speech_to_text. В ней нужно только дописать обработку того случая, когда пользователь отправляет голосовое сообщение, в котором нет звуков или распознаваемого текста. Не забудьте сделать импорт функции speech_to_text и класса SpeechException, если необходимо.
@bot.message_handler(content_types=['voice'])
def voice_processing(message):
file_info = bot.get_file(message.voice.file_id)
file = requests.get(
'https://api.telegram.org/file/bot{0}/{1}'.format(API_TOKEN, file_info.file_path))
try:
# обращение к нашему новому модулю
text = speech_to_text(bytes=file.content)
except SpeechException:
# Обработка случая, когда распознавание не удалось
else:
# Бизнес-логика
Вот и все. Теперь вы можете легко реализовывать обработку голоса в ваших проектах. Причем не только в Telegram, но и на других платформах, взяв за основу эту статью!
» @voiceru_bot: https://github.com/just806me/voiceru_bot
» Для работы с API Telegram на Python использовалась библиотека telebot
habr.com
Распознавание речи работает для 80 языков. Возможно распознавание речи в прямом эфире через микрофон или аудиозаписей из файлов (вероятно, до 2 минут). Поддерживаются многочисленные форматы, в том числе FLAC, AMR и PCMU.
Теперь для любой программы можно встроить, например, голосовое управление через Cloud Speech API. Система выдаёт распознанный текст мгновенно в процессе работы.
Google утверждает, что Speech API достаточно точно работает даже с зашумлённым фоном, так что материал не требуется предварительно очищать, обрабатывая фильтрами или используя дорогое оборудование и микрофоны для шумоподавления.
Для некоторых языков поддерживается автоматическая фильтрация нежелательного контента.
Слухи об открытии интерфейсов ходили в последнее несколько недель. Эксперты выражали мнение, что Google собирается выйти на рынок, где сейчас работает Nuance и некоторые другие компании, специализирующиеся на распознавании речи. Теперь тягаться с Google им будет тяжело, в её системе используются последние разработки в области самообучаемых нейросетей — тот же движок, что и в голосовом поиске Google и голосовом наборе с клавиатуры Google. С каждым месяцем Cloud Speech API будет распознавать текст всё точнее.
Новость о Cloud Speech API компания объявила вчера на конференции NEXT. Кроме распознавания речи, теперь разработчикам открыт доступ к платформе машинного обучения Cloud Machine Learning.
Открытие Google API для распознавания речи ударит не только по специализированным компаниям, но и по Apple, у которой голосовой помощник Siri значительно уступает нейросети Google по точности распознавания и функциональности.
habr.com
Хотите добавить коммуникационный интерфейс в стиле Siri в ваше приложение или устройство? Тогда вы попадаете в целевую аудиторию api.ai, открытого в Пало-Альто стартапа, который работает совместно с российской командой над Speaktoit Assistant – голосовым помощником для Android, iOS and Windows Phone.
Но сейчас компания улучшила свое предложение, сделав возможным использование их технологии при разработке приложений для IoT, включая умные дома и носимые устройства.
api.ai в прошлом сентябре запустили свою технологию искусственного интеллекта и распознавания естественного языка, которая находится в основе Speaktoit, так что разработчики получили возможность добавлять коммуникационные интерфейсы в свои приложения. Около 5,000 разработчиков подписалось на платформу, а полученный от них фидбек позволил команде api.ai понять две вещи.
Первая, к их продукту возник большой интерес не только среди мобильных разработчиков, но и в сфере IoT, особенно умных домов и носимых устройств вроде умных часов – эти области компания изначально планировала покрыть.
Вторая, для многих разработчиков оказалось слишком сложно встраивать платформу напрямую; несмотря на огромную работу по созданию технологии машинного обучения, разработчикам нужны был готовый к употреблению продукт, который можно было бы просто встроить в свое приложение.
В результате, команда api.ai сделала свой UI более контекстным, добавив так называемые “предопределенные домены”, включая разные категории IoT. Это значит, что платформа заранее знает, в каких областях расположены какие устройства и что можно с ними делать.
Например, если разработчик хочет добавить распознавание голоса в умную систему управления светом, api.ai знает заранее, что она работает внутри умного дома, и позволит подключить существующую специальную библиотеку.
“Разработчики могут теперь потреблять продукт прямо из коробки”, – расказал TechCrunch со-основатель и СЕО Илья Гельфенбейн. – “Можно использовать домены вроде новостей, погоды или умного дома и т.д.”
Еще разработчики могут предлагать свои варианты коммуникации и сценарии, просто добавляя несколько примеров на основе возможностей устройства, а платформа api.ai будет использовать их для более полного коммуникационного UI.
“Наша система самообучается на основе этих примеров, находя общие семантические единицы, которые делают возможным понимание следующих примеров, которые не учел разработчик”, – объясняет Илья.
Вот примеры из api.ai, которые можно попробовать на практике:
Человек: Здесь очень темно
Умный дом: Давайте тогда включим свет
Человек: Переключи в романтичный режим
Умный дом: Ок, я понял. Вот.
Человек: Все еще слишком ярко.
Умный дом: Уменьшил до минимума.
Человек: И в кухне.
Умный дом: Свет на кухне включен.
Человек: Включи еще отопление.
Умный дом: Термостат включен только на кухне.
Вот как могло бы выглядеть усиленное api.ai приложение для умных часов Magic:
Тем временем, технологии компании поддерживают 13 языков, включая китайский, английский, французский, корейский, португальский и испанский. С точки зрения разработки: поддерживается несколько платформ и языков программирования, включая iOS, Android, HTML, Cordova, Python, C#, Xamarin и Unity.
Если вы нашли опечатку — выделите ее и нажмите Ctrl + Enter! Для связи с нами вы можете использовать [email protected].apptractor.ru
Все чаще в повседневной жизни стали использовать синтезаторы речи. Синтезаторы речи, как становится видно уже по одному названию, осуществляют синтез речи, то есть форматируют письменный текст в устный.
Благодаря этому можно учить новые иностранные слова с правильным произношением, читать книги не отвлекаясь от своих дел или, например, находясь в транспорте. Изначально разработкой таких программ занимались организации, специализирующиеся на технике для людей с проблемами зрения.
Сейчас же, любой пользователь может скачать одну из программ, установить ее на свой компьютер или телефон и синтезировать речь, в том числе и русскую.
Для этого было разработано множество различных программ, приложенный и даже целых систем. К сожалению, не все из них предназначены для русскоязычной аудитории.
Содержание статьи:
Acapela — один из самых распространенных речевых синтезаторов во всем мире. Программа распознает и озвучивает тексты более, чем на тридцати языках. Русский язык поддерживается двумя голосами: мужской голос — Николай, женский — Алена.
Женский голос появился значительно позднее мужского и является более усовершенствованным.
Прослушать, как звучат голоса, можно на официальном сайте программы. Достаточно лишь выбрать язык и голос, и набрать свой небольшой текст.
Кстати, для мужского голоса был разработан отдельный словарь ударений, что позволяет достичь еще большей четкости произношения.
Установка программы проходит без проблем. Разработаны версии для операционных систем Windows, Linux, Mac, а также для мобильных ОС Android u IOS.
Программа платная, скачать ее можно с официального сайта Acapela.
Вторым в нашем списке, но не по популярности является движок Милена от разработчика программы Vocalizer компании Nuance.
Голос звучит очень естественно, речь чистая. Есть возможность установить различные словари, а также подкорректировать громкость, скорость и ударение, что не маловажно.
Как и в случае с Акапелой, программа имеет различные версии для мобильных, автомобильных и компьютерных приложений. Прекрасно подходит для чтения книг.
Скачать все версии Vokalizer и русскоязычный движок Милена можно на официальном сайте производителя программы.
Синтезатор речи RHVoice был разработан Ольгой Яковлевой. Программа озвучивает русские тексты тремя голосами: Елена, Ирина и Александр. Подробнее об установке и применении, а также прослушать голоса Вы сможете в прошлой статье
Код синтезатора открыт для всех, программы же абсолютно бесплатны.
RHVoice выпущена в двух вариантах: как отдельная программа, так и как приложение к NVDA.
Все версии можно скачать с официального сайта разработчика.
Первая версия бесплатного синтезатора речи eSpeak была выпущена в 2006 году. С тех пор компания-разработчик постоянно выпускает все более усовершенствованные версии. Последняя версия была представлена в конце весны две тысячи тринадцатого года.
eSpeak можно установить под следующие операционные системы:
Возможна также компиляция кода для Windows Mobile, но делать ее придется самостоятельно.
А вот с мобильной ОС Android программа работает без проблем, хотя русские словари еще не до конца разработаны. Русскоязычных голосов много, можно выбрать на свой вкус.
Для разработчиков будет интересно узнать, что C++ код программы доступен в сети. Скачать программу, а также посмотреть ее код можно на официальном сайте.
Festival — это целая система распознавания и синтеза речи, которая была разработана в эдинбургском университете.
Программы и все модули абсолютно бесплатно и распространяются по системе open source. Скачать их и ознакомиться с демо-версиями можно на официальном сайте университета Эдинбурга.
Русский голос представлен в одном варианте, но звучание довольно хорошее и ясное, без акцента и с правильной расстановкой ударений.
К сожалению, программа пока может быть установлена только в среде API, Linux. Также есть модуль для работы в Mac OS, но русский язык пока поддерживается не очень хорошо.
Стоит отметить, что любой из вышеприведённых синтезаторов отлично исполнен, но выбор программы индивидуален. Всё объясняется различным произношением голосов. Смею посоветовать второй вариант с голосом Милена. ОЧень выразительный голос, насыщенное звучание и приятная во всех смыслах интонация голоса!
поделитесь с друзьями:
ВКонтакте
OK
Google+
wd-x.ru