返回首页

Silero-TTS v5:俄语中的疑问句语调

Silero-TTS v5 为俄语更新,支持四种疑问句类型:一般疑问句通过 *asterisks* 进行韵律重音、SSML 和自动同形异义词。pip 和 torch.hub 上的代码示例演示 CPU 上的音频生成。

silero-tts v5 中的疑问句:俄语韵律和重音
Advertisement 728x90

Silero-TTS v5:俄语疑问句语调四大类型现已上线

Silero-TTS v5 俄语版本现已支持精准的疑问句语调生成。模型可处理四类问题:特殊疑问句(含疑问词)、一般疑问句(依赖语调强调)、选择疑问句和尾部疑问句。对于一般疑问句,通过在关键词前加星号(*)标记语调中心——无需额外参数即可显著提升表达力。

更新核心功能:

  • 自动识别同音异义词与重音位置。
  • 完全支持 SSML 语调控制。
  • CPU 上推理速度极快。
  • 支持声线:aidar、baya、kseniya、xenia(eugene 正在开发中)。

俄语疑问句语调的语言学基础

在俄语中,疑问句通过语法(词序,较少使用)、词汇(疑问词、助词)和语调(语调模式)三方面标记。一般疑问句完全依赖语调:语调重心可落在任意词语上,从而改变句子含义。

示例:

Google AdInline article slot
  • Did he COME? — 强调动作本身。
  • HE came? — 强调主语。

训练模型需标注问题类型及重音位置。缺乏此类标注的语料库数据不足以支撑有效训练。

一般疑问句合成示例

以下代码可生成不同重音位置的疑问句:

import IPython.display as ipd

texts = [
  '*Organizers* sent us electronic tickets?',
  'Organizers *sent* us electronic tickets?',
  'Organizers sent *us* electronic tickets?',
  'Organizers sent us *electronic* tickets?',
  'Organizers sent us electronic *tickets*?'
]

for i, text in enumerate(texts):
    audio = model.apply_tts(text=text, speaker='xenia')
    ipd.display(ipd.Audio(audio, rate=48000))

音频样本显示,重音词处音高平滑上升,句末自然下降,符合自然口语习惯。

Google AdInline article slot

安装与基础用法

通过 pip 安装:

!pip install silero
from silero import silero_tts
model, example_text = silero_tts(language='ru', speaker='v5_4_ru')
audio = model.apply_tts(text=example_text)

通过 torch.hub 完整初始化:

import torch

language = 'ru'
model_id = 'v5_4_ru'
device = torch.device('cpu')
model, example_text = torch.hub.load(repo_or_dir='snakers4/silero-models',
                                     model='silero_tts',
                                     language=language,
                                     speaker=model_id)
model.to(device)
sample_rate = 48000
speaker = 'xenia'
put_accent=True
put_yo=True
put_stress_homo=True
put_yo_homo=True

example_text = 'My name is Leva Korolev. I am ready. And I am ready to open locks of any complexity!'

audio = model.apply_tts(text=example_text,
                        speaker=speaker,
                        sample_rate=sample_rate,
                        put_accent=put_accent,
                        put_yo=put_yo,
                        put_stress_homo=put_stress_homo,
                        put_yo_homo=put_yo_homo)

SSML 示例:实现精细语调与停顿控制

Google AdInline article slot
ssml_sample = """
              <speak>
              <p>
                  When I wake up, <prosody rate="x-slow">I speak quite slowly</prosody>.
                  Then I start speaking in my normal voice,
                  <prosody pitch="x-high">and I can speak in a higher tone</prosody>,
                  or <prosody pitch="x-low">conversely, lower</prosody>.
                  Then, if I am lucky, <prosody rate="fast">I can speak quite quickly.</prosody>
                  And I can make pauses of any length, for example, two seconds <break time="2000ms"/>
                  <p>
                    Also I can make pauses between paragraphs.
                  </p>
                  <p>
                    <s>And I can also make pauses between sentences.</s>
                    <s>Here, for example, like now.</s>
                  </p>
              </p>
              </speak>
              """

audio = model.apply_tts(ssml_text=ssml_sample,
                        speaker=speaker,
                        sample_rate=sample_rate)

语调参数与使用建议

  • intensity=3:疑问语调强度(默认值,推荐使用)。
  • 特殊、选择和尾部疑问句中,重音为可选。
  • 一般疑问句必须使用 * 星号精确标记重音位置。

问题类型及其处理方式:

  • 特殊疑问句:What? Where? When? — 词汇标记 + 标准语调。
  • 一般疑问句:You home? — 语调重音可落在任意词上。
  • 选择疑问句:Fish or meat? — 语调聚焦于选项之间。
  • 尾部疑问句:No, really? — 尾部使用升调。

关键亮点

  • Silero-TTS v5 可在无 GPU 情况下,对任意位置进行语调重音的疑问句合成。
  • 一般疑问句仅需简单添加星号即可支持四种问题类型。
  • 通过 SSML 实现语调与停顿的精细化调节。
  • 支持 pip/torch.hub 安装,采样率固定为 48000 Hz。
  • 陈述句重音功能计划在后续版本中推出。

— Editorial Team

Advertisement 728x90

继续阅读