yandex-speechkit


Nameyandex-speechkit JSON
Version 1.5.0 PyPI version JSON
download
home_pageNone
SummarySpeechKit package
upload_time2024-06-14 13:32:43
maintainerNone
docs_urlNone
authoreranik
requires_python>=3.7
licenseapache-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` &mdash; [тег версии](https://cloud.yandex.com/en-ru/docs/speechkit/stt/models#tags) модели распознавания, например `general` (основная версия модели) или `general:rc` (версия-кандидат для релиза)
* `language` &mdash; [язык распознавания](https://cloud.yandex.com/en-ru/docs/speechkit/stt/models#languages)
* `audio_processing_type` &mdash; параметр, определяющий способ обработки аудио (в режиме реального времени, после получения всей аудиозаписи и т.п.)

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` &mdash; тег версии модели синтеза, на текущий момент для полнотекстового синтеза доступна только версия `general`
* `voice` &mdash; один из [доступных голосов](https://cloud.yandex.com/en-ru/docs/speechkit/tts/voices#premium)
* `role` &mdash; одна из [доступных эмоций](https://cloud.yandex.com/en-ru/docs/speechkit/tts/voices#premium) для указанного голоса
* `speed` &mdash; скорость речи
* `norm_type` &mdash; тип нормализации громкости (`LUFS` или `MAX_PEAK`)
* `volume` &mdash; значение громкости, соответствующее указанному типу нормализации громкости
* `unsafe_mode` &mdash; специальный флаг, разрешающий синтез длинных текстов (по умолчанию можно синтезировать текст не длиннее 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) &mdash; это возможность синтезировать речь по заранее заготовленным фразам (шаблонам), в которых изменяются отдельные ключевые части — переменные. Данная технология доступна только пользователям [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` &mdash; [\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` &mdash; [\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` &mdash; \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` &mdash; \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` &mdash; \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` &mdash; \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` &mdash; \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u0440\u0435\u0447\u0438\n* `norm_type` &mdash; \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` &mdash; \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` &mdash; \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) &mdash; \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"
}
        
Elapsed time: 0.83518s