SpeechKit package
Project description
С чего начать
Приведённые ниже примеры показывают, как использовать библиотеку Yandex SpeechKit для распознавания и синтеза аудио.
Чтобы реализовать примеры, установите пакет yandex-speechkit
с помощью менеджера пакетов pip.
pip install yandex-speechkit
Аутентификация в сервисе
Аутентификация происходит от имени сервисного аккаунта с помощью IAM-токена или API-ключа. Подробнее об аутентификации в API SpeechKit.
Вы можете использовать один из следующих сниппетов для определения способа аутентификации в сервисе:
Использование аутентификации через API-ключ
from speechkit import configure_credentials, creds
configure_credentials(
yandex_credentials=creds.YandexCredentials(
api_key='<api key>'
)
)
Использование аутентификации через IAM-токен
from speechkit import configure_credentials, creds
configure_credentials(
yandex_credentials=creds.YandexCredentials(
iam_token='<iam token>'
)
)
Использование распознавания речи
Используйте приведённый ниже пример для распознавания аудио в текст. Вы также можете выставить следующие параметры модели:
model
— тег версии модели распознавания, напримерgeneral
(основная версия модели) илиgeneral:rc
(версия-кандидат для релиза)language
— язык распознаванияaudio_processing_type
— параметр, определяющий способ обработки аудио (в режиме реального времени, после получения всей аудиозаписи и т.п.)
NB. На текущий момент в библиотеке не поддерживана возможность потокового и асинхронного распознавания, но их можно просимулировать с помощью опции audio_processing_type
.
from speechkit import model_repository
from speechkit.stt import AudioProcessingType
model = model_repository.recognition_model()
model.model = 'general:rc'
model.language = 'en-US'
model.audio_processing_type = AudioProcessingType.Full
result = model.transcribe_file('path/to/audio')
for c, res in enumerate(result):
print(f'channel: {c}\n'
'raw_text: {res.raw_text}\n'
'norm_text: {res.normalized_text}\n')
Синтез речи
Используйте приведённый ниже пример для синтеза речи. Доступные параметры модели:
model
— тег версии модели синтеза, на текущий момент для полнотекстового синтеза доступна только версияgeneral
voice
— один из доступных голосовrole
— одна из доступных эмоций для указанного голосаspeed
— скорость речиnorm_type
— тип нормализации громкости (LUFS
илиMAX_PEAK
)volume
— значение громкости, соответствующее указанному типу нормализации громкостиunsafe_mode
— специальный флаг, разрешающий синтез длинных текстов (по умолчанию можно синтезировать текст не длиннее 250 символов)
По умолчанию все аудио синтезируются в формате WAV
с частотой дискретизации 22050 Гц. Вы можете изменить это поведение, указав опции audio_encoding
и sample_rate
(доступно только для аудио в формате PCM).
Более полное описание доступных значений параметров можно найти в официальной документации.
from speechkit import model_repository
model = model_repository.synthesis_model()
model.voice = 'john'
result = model.synthesize('Hello, world!', raw_format=False) # returns audio as pydub.AudioSegment
result.export('path/to/audio', format='wav')
Синтез речи на основе шаблона
Синтез по шаблонам — это возможность синтезировать речь по заранее заготовленным фразам (шаблонам), в которых изменяются отдельные ключевые части — переменные. Данная технология доступна только пользователям SpeechKit Brand Voice.
В базовом сценарии вам будет необходимо самостоятельно подготовить шаблоны и разметить переменные, но в рамках данного примера мы сделаем это автоматически.
from speechkit import model_repository
from speechkit.stt import AudioProcessingType
from speechkit.tts import AudioEncoding
from speechkit.tts.yandex import AudioTemplate, AudioTemplateVar, TextTemplate, TextTemplateVar
# preparing the template phrase text
var_desc = '{var}'
var_original = 'Садовая'
var_synthesis = 'Спортивная'
text = f'Следующая станция - {var_desc}.'
# using synthesis model to prepare template audio
synthesis_model = model_repository.synthesis_model()
synthesis_model.model = 'general'
synthesis_model.voice = 'alena'
original_audio = synthesis_model.synthesize(text.replace(var_desc, var_original), raw_format=True)
# using recognition model to obtain timings for our variable
recognition_model = model_repository.recognition_model()
recognition_model.model = 'general'
recognition_model.language = 'ru-RU'
recognition_model.audio_processing_type = AudioProcessingType.Full
original_recognition = recognition_model.transcribe(original_audio)[0]
assert original_recognition.raw_text == 'следующая станция садовая'
variable_markup = original_recognition.words[-1]
# forming the request
text_template = TextTemplate(
text=text,
variables=[
TextTemplateVar(
name=var_desc,
value=var_synthesis
)
]
)
audio_template = AudioTemplate(
audio=original_audio,
audio_format=AudioEncoding.WAV,
variables=[
AudioTemplateVar(
name=var_desc,
start_ms=variable_markup.start_time_ms,
length_ms=variable_markup.end_time_ms - variable_markup.start_time_ms
)
]
)
pattern_based_synthesis_model = model_repository.synthesis_model()
pattern_based_synthesis_model.model = 'zsl' # set this parameter if you use SpeechKit Brand Voice Call Center
pattern_based_synthesis_model.voice = '<voice_id>' # set this parameter if you do not use SpeechKit Brand Voice Call Center
result = pattern_based_synthesis_model.synthesize_template(text_template, audio_template, raw_format=False)
result.export('path/to/audio', format='wav')
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distribution
Hashes for yandex_speechkit-1.3.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 77477b96884a9421948bb3bfe91e6ebf0e71e48b03ea2e1a7ee1ccf682215949 |
|
MD5 | ef793f273e4b0ad6447b6ec0a5c2bc15 |
|
BLAKE2b-256 | 2e538979200aa8e3fe7fb24aff43386e64dc5914c5ba6b3f011f7df59cab19fd |