You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

pyttsx3俄语Windows系统下英文播报时数字读俄语如何调整为英文

问题根因

你的Windows系统默认TTS语音为俄语,pyttsx3默认调用系统默认语音的文本解析规则,英文文本中的数字会被俄语语音引擎自动转为俄语读法输出。

pyttsx3 内置解决方案

方案1:切换为英文TTS语音

首先确认你的Windows系统已安装英文语音包(可在「设置-时间和语言-语音-添加语音」中安装英文(美国/英国)语音),之后通过以下代码切换播报语音为英文:

import pyttsx3
engine = pyttsx3.init()
# 获取所有可用语音
voices = engine.getProperty('voices')
# 遍历找到英文语音,替换下方索引为你对应英文语音的索引
for idx, voice in enumerate(voices):
    # 打印语音信息,找到name或languages包含English的条目
    print(idx, voice.name, voice.languages)
# 示例:如果英文语音索引为1,执行以下代码设置
engine.setProperty('voice', voices[1].id)
# 后续播报逻辑不变
cake = "honey cake"
v = pastry[cake]
engine.say(f'The cake {cake} {v[2]} grams left')
engine.runAndWait()

切换为英文语音后,所有播报内容都会按英文规则解析,数字也会自动读为英文。

方案2:数字转英文文本后播报

如果不想切换整体播报语音,可以先把数字转为英文单词字符串再拼接播报,需要用到num2words库:

  1. 安装依赖:pip install num2words
  2. 代码修改示例:
from num2words import num2words
# 原有初始化逻辑不变
cake = "honey cake"
v = pastry[cake]
# 把数字转为英文单词
num_str = num2words(v[2])
engine.say(f'The cake {cake} {num_str} grams left')
engine.runAndWait()

这种方法即使使用俄语语音,也会直接朗读英文数字单词,不会触发俄语数字转换逻辑。

替代库方案

如果pyttsx3无法满足需求,可以选择以下本地离线库:

  • pyttsx4:pyttsx3的社区维护升级版本,多语音切换逻辑更稳定,API和pyttsx3完全兼容,现有代码几乎无需修改即可迁移
  • eSpeak NG + py-espeak-ng:跨平台开源语音引擎,可强制指定发音规则,不依赖Windows系统内置语音

内容的提问来源于stack exchange,提问作者nrameyka

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 06:27:02