wsug
1
装了eSpeak写了个elisp函数搞定
(defun my-read-aloud()
(interactive)
(let (wd)
(if mark-active
(setq wd (buffer-substring-no-properties
(region-beginning) (region-end)))
(progn
(setq wd (thing-at-point 'filename) )
))
(shell-command
(format "\"C:/Program Files/eSpeak NG/espeak-ng\" %s" wd)
) ))
在 github下载 的espeak-ng windows安装包,不能选安装路径,安装后没有提示怎么用,命令行里没有espeak-ng,环境变量也无,控制面板也找不到,最后在c盘里找到了,于是把整个目录复制到d盘在调用,但是发现用不了,安装时的绝对路径是写死的,可执行文件换一个目录就不能执行。这里只好把绝对路径写上。
另一个问题,就是中文读不出来,espeak-ng -v zh "不会中文"
,我看源码里是有中文语音数据的,论坛里有使用espeak的吗?有办法能对中文正常发音吗?
wsug
2
换成了日语,乌克兰语试了下,都不能正常读出,看来除了英语以外,其它语言都较难做到正常发音
把问题分开,先不管 Emacs,终端里能正常使用吗?
wsug
5
是在终端命令行里测试的,我把内容写在文件里,终端执行 espeak-ng -v cmn -f d:\file\test.org
读取文件内容,单个字进行测试,发现还是有极少字可以读出来,如:中
,收
,大部分字读的与这个字的普通话是完全不同的发声。
有没有这样一种可能:中文贡献者严重缺乏(就没有),开发者也不会读中文,就象征性的支持了几个中文音节,然后就在语言支持列表里把中文加上了
绝大多数中文汉字应该读的出来吧,或许是差字典? --with-extdict-cmn
多音字肯定不管了,随意读一个音
wsug
7
这个读出来的音不太好形容,我英语差,听不明白读的是啥,如 '中'
字可以读出,与'中'
发音相近的'重、种、忠'
都能读出,'和'
字我听不懂读的是啥,只能感觉到是英语读法,与'和'
发音相近的'合、河、贺'
就都差不多是这个发音。 所以我说支持了几个中文音节。
中文的同音字非常多,即使只支持几个中文音节,只要是近似这个读音的字都能读出,那就已经是支持了很多汉字了。但我确定离 '绝大多数中文汉字'
能准确读出还差得很远
看样子是因为在 windows 上用的 TTS 引擎是 Windows 旧版 SAPI,对中文支持程度不高。因为 API 代码版权问题没法用新版的。Reimplement the SAPI bindings. · Issue #7 · espeak-ng/espeak-ng · GitHub
网上找了个视频,哪怕是英语 macOS 的 TTS 也比这强多了,毕竟 Apple 早在 Macintosh 时代就在做 TTS 了。
显然在 macOS 就会用 macOS 的系统 TTS,对盲人来说 macOS 比 Windows 不要好太多。
wsug
9
20240930更新:
不能读中文其实不重要,装这个本来的目的是也是为了读英文,但英文读得也非常难听,分享一些办法可以提高音质:
提高音量 -a,提高音调 -p,保存成wav文件 -w,这一步最有效果,保存成wav文件后在读这个wav文件音质比直接用eSpeak读明显好得多。读wav文件我使用的是ffplay,D:\local\ffmpeg\bin\ffplay.exe -autoexit -nodisp d:/tmp/espeak/out.wav
后续计划准备借助AI写个浏览器插件,实现在浏览器中选中单词后右键菜单里出现 用本地espeak发音
这个选项。
我估计应该只有windows需要这么折腾,主流linux发行版下的espeak应该不是这个效果或有其它更好的选择,mac os就好得更多了