hgneng / ekho

Chinese text-to-speech engine
GNU General Public License v2.0
1.12k stars 263 forks source link

EKHO_DATA_PATH可以支持多个路径吗? #43

Closed qbladea closed 3 years ago

qbladea commented 3 years ago

我在GNU Guix打包了这个项目,但是最近我发现EKHO_DATA_PATH并不支持指定多个路径

比如 EKHO_DATA_PATH=/path/to/xxx 这样是可以工作的,但是 EKHO_DATA_PATH=/path/to/xxx:/path/to/xxx 无法工作

$ echo ${EKHO_DATA_PATH} 
/gnu/store/xjvgz01fbrvcbilih9gvp72kzg7s8b0r-profile/share/ekho-data:/gnu/store/xjvgz01fbrvcbilih9gvp72kzg7s8b0r-profile/share/ekho-data
$ ekho
Fail to open file /gnu/store/xjvgz01fbrvcbilih9gvp72kzg7s8b0r-profile/share/ekho-data:/gnu/store/xjvgz01fbrvcbilih9gvp72kzg7s8b0r-profile/share/ekho-data/zh_list at 1128
Fail to load espeak dictionary: /gnu/store/xjvgz01fbrvcbilih9gvp72kzg7s8b0r-profile/share/ekho-data:/gnu/store/xjvgz01fbrvcbilih9gvp72kzg7s8b0r-profile/share/ekho-data/zh
_list
Fail to find voice data directory: /gnu/store/xjvgz01fbrvcbilih9gvp72kzg7s8b0r-profile/share/ekho-data:/gnu/store/xjvgz01fbrvcbilih9gvp72kzg7s8b0r-profile/share/ekho-data
/pinyin
Fail to setVoice of dictionary
Floating point exception

https://git.savannah.gnu.org/cgit/guix.git/commit/?id=652861139fd92a5f8e55350c3d6286d9d8776ac3

hgneng commented 3 years ago

有什么特别原因需要支持多路径吗?看起来这不是很必要的呀?

qbladea commented 3 years ago

由于Nix/Guix这种软件管理方式并不会使用单个文件夹存放数据文件

比如传统发行一般只会在 /usr/share/xxx存放数据, 但Nix/Guix不存在它,它会创建多个profile

比如 /gnu/xxxxxa-profile/usr/share /gnu/xxxxxb-profile/usr/share

如果可以指定多个数据文件夹,对拓展的数据文件或者多个profile安装会有很大的帮助

如果这个不实现的话只能在打包时候指定硬编码路径读取程序目录下安装的数据文件.

hgneng commented 3 years ago

那是不是意味着我读每个ekho-data目录里的文件的时候,都要在候选列表里都找一遍才能确定文件是否存在?

有些文件是相关的,如果a1在一个目录里读,a2在另一个目录里读,而它们的版本并不一致,这样会导致严重错误哦。

qbladea commented 3 years ago

抱歉,我并不了解这个项目,我会换成硬编码路径的.

打扰了.