Silero-TTS v5:俄语疑问句语调四大类型现已上线
Silero-TTS v5 俄语版本现已支持精准的疑问句语调生成。模型可处理四类问题:特殊疑问句(含疑问词)、一般疑问句(依赖语调强调)、选择疑问句和尾部疑问句。对于一般疑问句,通过在关键词前加星号(*)标记语调中心——无需额外参数即可显著提升表达力。
更新核心功能:
- 自动识别同音异义词与重音位置。
- 完全支持 SSML 语调控制。
- CPU 上推理速度极快。
- 支持声线:aidar、baya、kseniya、xenia(eugene 正在开发中)。
俄语疑问句语调的语言学基础
在俄语中,疑问句通过语法(词序,较少使用)、词汇(疑问词、助词)和语调(语调模式)三方面标记。一般疑问句完全依赖语调:语调重心可落在任意词语上,从而改变句子含义。
示例:
- 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))
音频样本显示,重音词处音高平滑上升,句末自然下降,符合自然口语习惯。
安装与基础用法
通过 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 示例:实现精细语调与停顿控制
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
暂无评论。