Name | yandex-speechkit JSON |
Version |
1.5.0
JSON |
| download |
home_page | None |
Summary | SpeechKit package |
upload_time | 2024-06-14 13:32:43 |
maintainer | None |
docs_url | None |
author | eranik |
requires_python | >=3.7 |
license | apache-2.0 |
keywords |
speechkit
|
VCS |
|
bugtrack_url |
|
requirements |
No requirements were recorded.
|
Travis-CI |
No Travis.
|
coveralls test coverage |
No coveralls.
|
С чего начать
---------------
Приведённые ниже примеры показывают, как использовать библиотеку Yandex SpeechKit для распознавания и синтеза аудио.
Чтобы реализовать примеры, установите пакет `yandex-speechkit` с помощью менеджера пакетов [pip](https://pip.pypa.io/en/stable/).
```bash
pip install yandex-speechkit
```
### Аутентификация в сервисе
Аутентификация происходит от имени сервисного аккаунта с помощью [IAM-токена](https://cloud.yandex.com/en-ru/docs/iam/concepts/authorization/iam-token) или [API-ключа](https://cloud.yandex.com/en-ru/docs/iam/concepts/authorization/api-key). Подробнее об [аутентификации в API SpeechKit](https://cloud.yandex.com/en-ru/docs/speechkit/concepts/auth).
Вы можете использовать один из следующих сниппетов для определения способа аутентификации в сервисе:
#### Использование аутентификации через API-ключ
```python3
from speechkit import configure_credentials, creds
configure_credentials(
yandex_credentials=creds.YandexCredentials(
api_key='<api key>'
)
)
```
#### Использование аутентификации через IAM-токен
```python3
from speechkit import configure_credentials, creds
configure_credentials(
yandex_credentials=creds.YandexCredentials(
iam_token='<iam token>'
)
)
```
### Использование распознавания речи
Используйте приведённый ниже пример для распознавания аудио в текст. Вы также можете выставить следующие параметры модели:
* `model` — [тег версии](https://cloud.yandex.com/en-ru/docs/speechkit/stt/models#tags) модели распознавания, например `general` (основная версия модели) или `general:rc` (версия-кандидат для релиза)
* `language` — [язык распознавания](https://cloud.yandex.com/en-ru/docs/speechkit/stt/models#languages)
* `audio_processing_type` — параметр, определяющий способ обработки аудио (в режиме реального времени, после получения всей аудиозаписи и т.п.)
NB. На текущий момент в библиотеке не поддержана возможность потокового и асинхронного распознавания, но их можно просимулировать с помощью опции `audio_processing_type`.
```python3
from speechkit import model_repository
from speechkit.stt import AudioProcessingType
model = model_repository.recognition_model()
model.model = 'general'
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'
f'raw_text: {res.raw_text}\n'
f'norm_text: {res.normalized_text}\n')
```
Также в библиотеке поддержано разделение текста на фразы:
```python3
for c, res in enumerate(result):
print(f'channel: {c}')
for utterance in res.utterances:
print(utterance)
```
### Синтез речи
Используйте приведённый ниже пример для синтеза речи. Доступные параметры модели:
* `model` — тег версии модели синтеза, на текущий момент для полнотекстового синтеза доступна только версия `general`
* `voice` — один из [доступных голосов](https://cloud.yandex.com/en-ru/docs/speechkit/tts/voices#premium)
* `role` — одна из [доступных эмоций](https://cloud.yandex.com/en-ru/docs/speechkit/tts/voices#premium) для указанного голоса
* `speed` — скорость речи
* `norm_type` — тип нормализации громкости (`LUFS` или `MAX_PEAK`)
* `volume` — значение громкости, соответствующее указанному типу нормализации громкости
* `unsafe_mode` — специальный флаг, разрешающий синтез длинных текстов (по умолчанию можно синтезировать текст не длиннее 250 символов)
По умолчанию все аудио синтезируются в формате `WAV` с частотой дискретизации 22050 Гц. Вы можете изменить это поведение, указав опции `audio_encoding` и `sample_rate` (доступно только для аудио в формате PCM).
Более полное описание доступных значений параметров можно найти в [официальной документации](https://cloud.yandex.com/en-ru/docs/speechkit/tts-v3/api-ref/grpc/tts_service).
```python3
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')
```
### Синтез речи на основе шаблона
[Синтез по шаблонам](https://cloud.yandex.com/en-ru/docs/speechkit/tts/templates) — это возможность синтезировать речь по заранее заготовленным фразам (шаблонам), в которых изменяются отдельные ключевые части — переменные. Данная технология доступна только пользователям [SpeechKit Brand Voice](https://cloud.yandex.ru/docs/speechkit/tts/brand-voice/).
В базовом сценарии вам будет необходимо самостоятельно подготовить шаблоны и разметить переменные, но в рамках данного примера мы сделаем это автоматически.
```python3
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')
```
Raw data
{
"_id": null,
"home_page": null,
"name": "yandex-speechkit",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.7",
"maintainer_email": null,
"keywords": "speechkit",
"author": "eranik",
"author_email": "eranik@yandex-team.ru",
"download_url": null,
"platform": null,
"description": "\u0421 \u0447\u0435\u0433\u043e \u043d\u0430\u0447\u0430\u0442\u044c\n---------------\n\n\u041f\u0440\u0438\u0432\u0435\u0434\u0451\u043d\u043d\u044b\u0435 \u043d\u0438\u0436\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u044b \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0442, \u043a\u0430\u043a \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443 Yandex SpeechKit \u0434\u043b\u044f \u0440\u0430\u0441\u043f\u043e\u0437\u043d\u0430\u0432\u0430\u043d\u0438\u044f \u0438 \u0441\u0438\u043d\u0442\u0435\u0437\u0430 \u0430\u0443\u0434\u0438\u043e.\n\n\u0427\u0442\u043e\u0431\u044b \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u0438\u043c\u0435\u0440\u044b, \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0435 \u043f\u0430\u043a\u0435\u0442 `yandex-speechkit` \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440\u0430 \u043f\u0430\u043a\u0435\u0442\u043e\u0432 [pip](https://pip.pypa.io/en/stable/).\n```bash\npip install yandex-speechkit\n```\n\n### \u0410\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f \u0432 \u0441\u0435\u0440\u0432\u0438\u0441\u0435\n\n\u0410\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u043e\u0442 \u0438\u043c\u0435\u043d\u0438 \u0441\u0435\u0440\u0432\u0438\u0441\u043d\u043e\u0433\u043e \u0430\u043a\u043a\u0430\u0443\u043d\u0442\u0430 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e [IAM-\u0442\u043e\u043a\u0435\u043d\u0430](https://cloud.yandex.com/en-ru/docs/iam/concepts/authorization/iam-token) \u0438\u043b\u0438 [API-\u043a\u043b\u044e\u0447\u0430](https://cloud.yandex.com/en-ru/docs/iam/concepts/authorization/api-key). \u041f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u043e\u0431 [\u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u0432 API SpeechKit](https://cloud.yandex.com/en-ru/docs/speechkit/concepts/auth).\n\n\u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043e\u0434\u0438\u043d \u0438\u0437 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u0441\u043d\u0438\u043f\u043f\u0435\u0442\u043e\u0432 \u0434\u043b\u044f \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0441\u043f\u043e\u0441\u043e\u0431\u0430 \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u0432 \u0441\u0435\u0440\u0432\u0438\u0441\u0435:\n\n#### \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u0447\u0435\u0440\u0435\u0437 API-\u043a\u043b\u044e\u0447\n```python3\nfrom speechkit import configure_credentials, creds\n\nconfigure_credentials(\n yandex_credentials=creds.YandexCredentials(\n api_key='<api key>'\n )\n)\n```\n\n#### \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u0447\u0435\u0440\u0435\u0437 IAM-\u0442\u043e\u043a\u0435\u043d\n```python3\nfrom speechkit import configure_credentials, creds\n\nconfigure_credentials(\n yandex_credentials=creds.YandexCredentials(\n iam_token='<iam token>'\n )\n)\n```\n\n### \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0440\u0430\u0441\u043f\u043e\u0437\u043d\u0430\u0432\u0430\u043d\u0438\u044f \u0440\u0435\u0447\u0438\n\n\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u043f\u0440\u0438\u0432\u0435\u0434\u0451\u043d\u043d\u044b\u0439 \u043d\u0438\u0436\u0435 \u043f\u0440\u0438\u043c\u0435\u0440 \u0434\u043b\u044f \u0440\u0430\u0441\u043f\u043e\u0437\u043d\u0430\u0432\u0430\u043d\u0438\u044f \u0430\u0443\u0434\u0438\u043e \u0432 \u0442\u0435\u043a\u0441\u0442. \u0412\u044b \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u0432\u044b\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043c\u043e\u0434\u0435\u043b\u0438:\n* `model` — [\u0442\u0435\u0433 \u0432\u0435\u0440\u0441\u0438\u0438](https://cloud.yandex.com/en-ru/docs/speechkit/stt/models#tags) \u043c\u043e\u0434\u0435\u043b\u0438 \u0440\u0430\u0441\u043f\u043e\u0437\u043d\u0430\u0432\u0430\u043d\u0438\u044f, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 `general` (\u043e\u0441\u043d\u043e\u0432\u043d\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f \u043c\u043e\u0434\u0435\u043b\u0438) \u0438\u043b\u0438 `general:rc` (\u0432\u0435\u0440\u0441\u0438\u044f-\u043a\u0430\u043d\u0434\u0438\u0434\u0430\u0442 \u0434\u043b\u044f \u0440\u0435\u043b\u0438\u0437\u0430)\n* `language` — [\u044f\u0437\u044b\u043a \u0440\u0430\u0441\u043f\u043e\u0437\u043d\u0430\u0432\u0430\u043d\u0438\u044f](https://cloud.yandex.com/en-ru/docs/speechkit/stt/models#languages)\n* `audio_processing_type` — \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440, \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u044e\u0449\u0438\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0430\u0443\u0434\u0438\u043e (\u0432 \u0440\u0435\u0436\u0438\u043c\u0435 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438, \u043f\u043e\u0441\u043b\u0435 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0432\u0441\u0435\u0439 \u0430\u0443\u0434\u0438\u043e\u0437\u0430\u043f\u0438\u0441\u0438 \u0438 \u0442.\u043f.)\n\nNB. \u041d\u0430 \u0442\u0435\u043a\u0443\u0449\u0438\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u0432 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0435 \u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0430\u043d\u0430 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043f\u043e\u0442\u043e\u043a\u043e\u0432\u043e\u0433\u043e \u0438 \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u043e\u0433\u043e \u0440\u0430\u0441\u043f\u043e\u0437\u043d\u0430\u0432\u0430\u043d\u0438\u044f, \u043d\u043e \u0438\u0445 \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0441\u0438\u043c\u0443\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043e\u043f\u0446\u0438\u0438 `audio_processing_type`.\n\n```python3\nfrom speechkit import model_repository\nfrom speechkit.stt import AudioProcessingType\n\nmodel = model_repository.recognition_model()\n\nmodel.model = 'general'\nmodel.language = 'en-US'\nmodel.audio_processing_type = AudioProcessingType.Full\n\nresult = model.transcribe_file('path/to/audio')\nfor c, res in enumerate(result):\n print(f'channel: {c}\\n'\n f'raw_text: {res.raw_text}\\n'\n f'norm_text: {res.normalized_text}\\n')\n```\n\n\u0422\u0430\u043a\u0436\u0435 \u0432 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0430\u043d\u043e \u0440\u0430\u0437\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u0442\u0435\u043a\u0441\u0442\u0430 \u043d\u0430 \u0444\u0440\u0430\u0437\u044b:\n```python3\nfor c, res in enumerate(result):\n print(f'channel: {c}')\n for utterance in res.utterances:\n print(utterance)\n```\n\n### \u0421\u0438\u043d\u0442\u0435\u0437 \u0440\u0435\u0447\u0438\n\n\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u043f\u0440\u0438\u0432\u0435\u0434\u0451\u043d\u043d\u044b\u0439 \u043d\u0438\u0436\u0435 \u043f\u0440\u0438\u043c\u0435\u0440 \u0434\u043b\u044f \u0441\u0438\u043d\u0442\u0435\u0437\u0430 \u0440\u0435\u0447\u0438. \u0414\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043c\u043e\u0434\u0435\u043b\u0438:\n* `model` — \u0442\u0435\u0433 \u0432\u0435\u0440\u0441\u0438\u0438 \u043c\u043e\u0434\u0435\u043b\u0438 \u0441\u0438\u043d\u0442\u0435\u0437\u0430, \u043d\u0430 \u0442\u0435\u043a\u0443\u0449\u0438\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u0434\u043b\u044f \u043f\u043e\u043b\u043d\u043e\u0442\u0435\u043a\u0441\u0442\u043e\u0432\u043e\u0433\u043e \u0441\u0438\u043d\u0442\u0435\u0437\u0430 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0430 \u0442\u043e\u043b\u044c\u043a\u043e \u0432\u0435\u0440\u0441\u0438\u044f `general`\n* `voice` — \u043e\u0434\u0438\u043d \u0438\u0437 [\u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0445 \u0433\u043e\u043b\u043e\u0441\u043e\u0432](https://cloud.yandex.com/en-ru/docs/speechkit/tts/voices#premium)\n* `role` — \u043e\u0434\u043d\u0430 \u0438\u0437 [\u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0445 \u044d\u043c\u043e\u0446\u0438\u0439](https://cloud.yandex.com/en-ru/docs/speechkit/tts/voices#premium) \u0434\u043b\u044f \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u0433\u043e \u0433\u043e\u043b\u043e\u0441\u0430\n* `speed` — \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u0440\u0435\u0447\u0438\n* `norm_type` — \u0442\u0438\u043f \u043d\u043e\u0440\u043c\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0433\u0440\u043e\u043c\u043a\u043e\u0441\u0442\u0438 (`LUFS` \u0438\u043b\u0438 `MAX_PEAK`)\n* `volume` — \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0433\u0440\u043e\u043c\u043a\u043e\u0441\u0442\u0438, \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0435 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u043c\u0443 \u0442\u0438\u043f\u0443 \u043d\u043e\u0440\u043c\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0433\u0440\u043e\u043c\u043a\u043e\u0441\u0442\u0438\n* `unsafe_mode` — \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0439 \u0444\u043b\u0430\u0433, \u0440\u0430\u0437\u0440\u0435\u0448\u0430\u044e\u0449\u0438\u0439 \u0441\u0438\u043d\u0442\u0435\u0437 \u0434\u043b\u0438\u043d\u043d\u044b\u0445 \u0442\u0435\u043a\u0441\u0442\u043e\u0432 (\u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u043c\u043e\u0436\u043d\u043e \u0441\u0438\u043d\u0442\u0435\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0442\u0435\u043a\u0441\u0442 \u043d\u0435 \u0434\u043b\u0438\u043d\u043d\u0435\u0435 250 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432)\n\n\u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0432\u0441\u0435 \u0430\u0443\u0434\u0438\u043e \u0441\u0438\u043d\u0442\u0435\u0437\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0435 `WAV` \u0441 \u0447\u0430\u0441\u0442\u043e\u0442\u043e\u0439 \u0434\u0438\u0441\u043a\u0440\u0435\u0442\u0438\u0437\u0430\u0446\u0438\u0438 22050 \u0413\u0446. \u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u044d\u0442\u043e \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435, \u0443\u043a\u0430\u0437\u0430\u0432 \u043e\u043f\u0446\u0438\u0438 `audio_encoding` \u0438 `sample_rate` (\u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u0430\u0443\u0434\u0438\u043e \u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0435 PCM).\n\n\u0411\u043e\u043b\u0435\u0435 \u043f\u043e\u043b\u043d\u043e\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0445 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u0432 [\u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0439 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438](https://cloud.yandex.com/en-ru/docs/speechkit/tts-v3/api-ref/grpc/tts_service).\n\n```python3\nfrom speechkit import model_repository\n\nmodel = model_repository.synthesis_model()\n\nmodel.voice = 'john'\n\nresult = model.synthesize('Hello, world!', raw_format=False) # returns audio as pydub.AudioSegment\nresult.export('path/to/audio', format='wav')\n```\n\n### \u0421\u0438\u043d\u0442\u0435\u0437 \u0440\u0435\u0447\u0438 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0448\u0430\u0431\u043b\u043e\u043d\u0430\n\n[\u0421\u0438\u043d\u0442\u0435\u0437 \u043f\u043e \u0448\u0430\u0431\u043b\u043e\u043d\u0430\u043c](https://cloud.yandex.com/en-ru/docs/speechkit/tts/templates) — \u044d\u0442\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0441\u0438\u043d\u0442\u0435\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0440\u0435\u0447\u044c \u043f\u043e \u0437\u0430\u0440\u0430\u043d\u0435\u0435 \u0437\u0430\u0433\u043e\u0442\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u043c \u0444\u0440\u0430\u0437\u0430\u043c (\u0448\u0430\u0431\u043b\u043e\u043d\u0430\u043c), \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0438\u0437\u043c\u0435\u043d\u044f\u044e\u0442\u0441\u044f \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0435 \u043a\u043b\u044e\u0447\u0435\u0432\u044b\u0435 \u0447\u0430\u0441\u0442\u0438 \u2014 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435. \u0414\u0430\u043d\u043d\u0430\u044f \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0430 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\u043c [SpeechKit Brand Voice](https://cloud.yandex.ru/docs/speechkit/tts/brand-voice/).\n\n\u0412 \u0431\u0430\u0437\u043e\u0432\u043e\u043c \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0438 \u0432\u0430\u043c \u0431\u0443\u0434\u0435\u0442 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u0438\u0442\u044c \u0448\u0430\u0431\u043b\u043e\u043d\u044b \u0438 \u0440\u0430\u0437\u043c\u0435\u0442\u0438\u0442\u044c \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435, \u043d\u043e \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 \u0434\u0430\u043d\u043d\u043e\u0433\u043e \u043f\u0440\u0438\u043c\u0435\u0440\u0430 \u043c\u044b \u0441\u0434\u0435\u043b\u0430\u0435\u043c \u044d\u0442\u043e \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438.\n\n```python3\nfrom speechkit import model_repository\nfrom speechkit.stt import AudioProcessingType\nfrom speechkit.tts import AudioEncoding\nfrom speechkit.tts.yandex import AudioTemplate, AudioTemplateVar, TextTemplate, TextTemplateVar\n\n# preparing the template phrase text\nvar_desc = '{var}'\nvar_original = '\u0421\u0430\u0434\u043e\u0432\u0430\u044f'\nvar_synthesis = '\u0421\u043f\u043e\u0440\u0442\u0438\u0432\u043d\u0430\u044f'\ntext = f'\u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0430\u044f \u0441\u0442\u0430\u043d\u0446\u0438\u044f - {var_desc}.'\n\n\n# using synthesis model to prepare template audio\nsynthesis_model = model_repository.synthesis_model()\nsynthesis_model.model = 'general'\nsynthesis_model.voice = 'alena'\n\noriginal_audio = synthesis_model.synthesize(text.replace(var_desc, var_original), raw_format=True)\n\n\n# using recognition model to obtain timings for our variable\nrecognition_model = model_repository.recognition_model()\nrecognition_model.model = 'general'\nrecognition_model.language = 'ru-RU'\nrecognition_model.audio_processing_type = AudioProcessingType.Full\n\noriginal_recognition = recognition_model.transcribe(original_audio)[0]\nassert original_recognition.raw_text == '\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0430\u044f \u0441\u0442\u0430\u043d\u0446\u0438\u044f \u0441\u0430\u0434\u043e\u0432\u0430\u044f'\nvariable_markup = original_recognition.words[-1]\n\n\n# forming the request\ntext_template = TextTemplate(\n text=text,\n variables=[\n TextTemplateVar(\n name=var_desc,\n value=var_synthesis\n )\n ]\n)\n\naudio_template = AudioTemplate(\n audio=original_audio,\n audio_format=AudioEncoding.WAV,\n variables=[\n AudioTemplateVar(\n name=var_desc,\n start_ms=variable_markup.start_time_ms,\n length_ms=variable_markup.end_time_ms - variable_markup.start_time_ms\n )\n ]\n)\n\npattern_based_synthesis_model = model_repository.synthesis_model()\npattern_based_synthesis_model.model = 'zsl' # set this parameter if you use SpeechKit Brand Voice Call Center\npattern_based_synthesis_model.voice = '<voice_id>' # set this parameter if you do not use SpeechKit Brand Voice Call Center\n\nresult = pattern_based_synthesis_model.synthesize_template(text_template, audio_template, raw_format=False)\nresult.export('path/to/audio', format='wav')\n```\n\n\n",
"bugtrack_url": null,
"license": "apache-2.0",
"summary": "SpeechKit package",
"version": "1.5.0",
"project_urls": null,
"split_keywords": [
"speechkit"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "aa5630ae86f0efbbdd98f35f856822a46ddfca998b419e9a888672796fdaab6e",
"md5": "5e06ec0e87227065eb75d740b10c715b",
"sha256": "ca44b10c30d6acb6440ef623e559341205b269672ae7fecc52290cc6375884fb"
},
"downloads": -1,
"filename": "yandex_speechkit-1.5.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "5e06ec0e87227065eb75d740b10c715b",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.7",
"size": 118729,
"upload_time": "2024-06-14T13:32:43",
"upload_time_iso_8601": "2024-06-14T13:32:43.222788Z",
"url": "https://files.pythonhosted.org/packages/aa/56/30ae86f0efbbdd98f35f856822a46ddfca998b419e9a888672796fdaab6e/yandex_speechkit-1.5.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-06-14 13:32:43",
"github": false,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"lcname": "yandex-speechkit"
}