python - pyttsx3:无法设置指定的语言
问题描述
显示所有可用的语音pyttsx3
:
import pyttsx3
engine = pyttsx3.init()
voices = engine.getProperty('voices')
voices[-2].id
'Mandarin'
我想弹奏中国弦乐Mandarin
import pyttsx3
engine = pyttsx3.init()
voices = engine.getProperty('voices')
engine.setProperty("voice", voices[-2].id)
engine.say('你好你好你好你好')
engine.runAndWait()
我已经录制了 pyttsx3 播放的声音并上传到 Dropbox。如果你听录音,你会听到,它不是Mandarin
。
如何修复我的代码?
用espeak和record播放字符串,上传到Dropbox,请下载并收听。
espeak -vzh '你好你好你好你好'
解决方案
我必须说这个模块pyttsx3
看起来对语言变化没有很好的反应。合成器很棒,但缺少一些东西。
直到我遇到了gtts
lib.
为了获得所有支持的语言,请使用以下内容:print(gtts.lang.tts_langs())
这将输出:
{'af': 'Afrikaans', 'ar': 'Arabic', 'bg': 'Bulgarian', 'bn': 'Bengali', 'bs': 'Bosnian', 'ca': 'Catalan', 'cs': 'Czech', 'cy': 'Welsh', 'da': 'Danish', 'de': 'German', 'el': 'Greek', 'en': 'English', 'eo': 'Esperanto', 'es': 'Spanish', 'et': 'Estonian', 'fi': 'Finnish', 'fr': 'French', 'gu': 'Gujarati', 'hi': 'Hindi', 'hr': 'Croatian', 'hu': 'Hungarian', 'hy': 'Armenian', 'id': 'Indonesian', 'is': 'Icelandic', 'it': 'Italian', 'ja': 'Japanese', 'jw': 'Javanese', 'km': 'Khmer', 'kn': 'Kannada', 'ko': 'Korean', 'la': 'Latin', 'lv': 'Latvian', 'mk': 'Macedonian', 'ml': 'Malayalam', 'mr': 'Marathi', 'my': 'Myanmar (Burmese)', 'ne': 'Nepali', 'nl': 'Dutch', 'no': 'Norwegian', 'pl': 'Polish', 'pt': 'Portuguese', 'ro': 'Romanian', 'ru': 'Russian', 'si': 'Sinhala', 'sk': 'Slovak', 'sq': 'Albanian', 'sr': 'Serbian', 'su': 'Sundanese', 'sv': 'Swedish', 'sw': 'Swahili', 'ta': 'Tamil', 'te': 'Telugu', 'th': 'Thai', 'tl': 'Filipino', 'tr': 'Turkish', 'uk': 'Ukrainian', 'ur': 'Urdu', 'vi': 'Vietnamese', 'zh-CN': 'Chinese', 'zh-TW': 'Chinese (Mandarin/Taiwan)', 'zh': 'Chinese (Mandarin)'}
正如您在末尾看到的那样,'zh': 'Chinese (Mandarin)'
普通话语言简单地表示为'zh'
您的代码应如下所示:
from gtts import gTTS
mytext = '你好你好你好你好'
language = 'zh'
myobj = gTTS(text=mytext, lang=language, slow=False)
# save to local folder:
myobj.save("mandarine_female_voice.mp3")
我检查了您的保管箱录音,在我的示例中确实说了同样的话。
推荐阅读
- java - Android SDKManager 仍然无法打开
- c# - Bot Framework PromptDialog 不询问第一个提示
- java - 在 MySQL 中处理 null
- ios - 将相同的本地通知限制为一个
- phpstorm - 为什么 PhpStorm 的调试窗口中没有显示变量?
- regex - RegExp 在线生成器?
- python - 丢弃一组相似图像中的图像
- c# - GTKSharp,使用 Mondevelop,Stetic GUI Designer 增加菜单栏的文本大小
- git - 如何在 Mac 上为交互式 git rebase 启用颜色突出显示
- reactjs - 如何将泛型类型传递给打字稿 tsx 文件中的匿名函数