在 GoldenDict 中调用微软「大声朗读」实现即时发音与朗读

前情提要

今年年初,楼主曾发帖 关于调用微软“大声朗读”解决发音资源匮乏的提案,试图利用微软「大声朗读」功能解决日语词典发音库匮乏问题,楼主苦于技术小白的身份,只能厚着脸皮向社区提案寻求帮助,但效果甚微。

在偶然的一次上网冲浪中,楼主发现 GitHub 用户 kxxt 开发了一款名为 aspeak 的工具(截至发帖日,源码使用 MIT 授权),可以通过终端命令行工具调用 Azure’s speech synthesis API 以实现 TTS (Text To Speech) 功能,顿时心生欢喜,赶紧阅读了下开发文档,发现只要经过简单的设置,便可完美联动 GoldenDict


自此,楼主便再也没有因为不知道词或句子的读音而烦恼过了。

鉴于 aspeak 是 MIT 授权,本着论坛自由开放互助的精神,特开此贴简单分享下 GoldenDict 与 aspeak 的联动方法,同时也请各位不要忘记原作者 kxxt 的伟大工作,至少去原 repo 点个 star :star:

准备工作

aspeak 的文档非常详细,你甚至不需要看我的介绍。楼主仅抛砖引玉介绍下自己的方法,步骤如下:

  • 下载 并安装 Python
  • 使用 pip 安装 aspeak(打开终端工具,输入 pip install -U aspeak
  • 打开终端工具,测试环境变量是否配置正确,输入 aspeak --help 观察能否正常启动 aspeak

如果你的终端输出以下内容,说明安装完毕。如果报错,请检查环境变量是否配置正确,实在不行,可以评论区讨论。

接下来是在 GoldenDict 中调用 aspeak。

如何联动

打开 GoldenDict → 编辑 → 词典 → 词典来源 → 程序 → 添加 → 选择「音频」

名称自拟,命令行内容根据目标语言自行选择,楼主分享日语和美式英语的,其他语言请查看 aspeak 文档

  • 日语(使用 Nanami 女声)aspeak -t "%GDWORD%" -v ja-JP-NanamiNeural
  • 英语(使用美式英语)aspeak -t "%GDWORD%" -l en-US

添加完成后将其勾选上,切换至「词典」选项卡,你会发现最下方出现了一个齿轮状的条目。回到查词界面,在右上方将添加的朗读工具勾选上,至此,输入对应的语言便可听到自然、流畅的发音。

注意事项

尽管 aspeak 是自由软件,但上游微软 TTS 服务不是,关于 Azure Cognitive Services 的使用限制,请仔细阅读 aspeak 文档,尽量不要过度薅微软羊毛。

最后,欢迎大家讨论。

11 Likes

感谢分享经验。

微软这个AI语音引擎还是挺不错的,不生硬

谢谢分享,很实用。
另外不知道日语英语混在一起的时候,有自动分辨的设置吗?

谢谢,用上了,很不错。如果是一段话不知道如何发音,将其拷贝至“放大镜”旁的地址栏点击查询即可

可以通过将不同语言分列至不同群组来实现

是的,SSML可以实现的,谢谢回信。