将 mpv 或 cvlc 可执行文件的文件夹添加到 PATH 环境变量。
或者设置 gt-tts-speaker
为 mpv/cvlc 的完整路径。
总之,确保 emacs 能发现 mpv/cvlc 等播放器的位置:
(executable-find gt-tts-speaker)
将 mpv 或 cvlc 可执行文件的文件夹添加到 PATH 环境变量。
或者设置 gt-tts-speaker
为 mpv/cvlc 的完整路径。
总之,确保 emacs 能发现 mpv/cvlc 等播放器的位置:
(executable-find gt-tts-speaker)
mpv 能找到,gt-tts-speaker
也设置了,仍然报这个错。
你的 mpv 安装路径是不是有空格?能不能贴一下你 gt-tts-speaker 的设置?
gt-tts-speaker
用的默认值nil,实际值是 C:\Users\xxx\scoop\shims\mpv.exe
,没有空格.
要么不设置 gt-tts-speaker
, 但是将 C:/Users/xxx/scoop/shims/
添加进 Windows 操作系统的 PATH 环境变量;
要么设置 gt-tts-speaker
为 mpv 的全路径:
(setq gt-tts-speaker "C:/Users/xxx/scoop/shims/mpv.exe")
总之,确保 (executable-find gt-tts-speaker)
在 emacs 中不为空。
如果按上面的配置,没理由会报上述所说错误啊。如果还是有错误,麻烦调试下 gt-play-audio
方法。
问题出在这里。用户名中有空格的话split-string就有问题了,这个条件没必要啊,直接判断就行了,为什么要分隔字符串?
(cl-defmethod gt-play-audio (data &optional wait)
(unless (and gt-tts-speaker (executable-find (car (split-string gt-tts-speaker))))
(user-error "You should install `mpv' first or config `gt-tts-speaker' correctly"))
我直接配置成这样是可以的。
(setq gt-tts-speaker "mpv")
为什么要分隔字符串
主要为了简化配置。通过这种方式,可以给播放器传递参数。比如:
(setq gt-tts-speaker "mpv --http-proxy=<proxy>")
最好是需要吧?我也不清楚,经常连接出错的话,大概率还是要挂代理的。
这样解决不了带空格路径的问题,可以加个args参数配置。
只要确保 mpv 能被 emacs 发现即可。
麻烦有在使用 go-translate 的伙伴帮我测试一下, 我这有问题
请教下你的stardict是如何配置的?Windows和macOS好使不?
我是这么配置的,请参考。我是Mac的系统,用的挺好,没啥问题。
(setq gt-default-translator (gt-translator
:taker (list
(gt-taker :prompt nil :if 'selection)
(gt-taker :langs '(en zh) :text 'word :pick 'paragraph :prompt t))
:engines (list
(gt-youdao-dict-engine)
(gt-stardict-engine
:dir (expand-file-name "~/Backup/Mac/stardict/") ; 指定数据文件位置
:dict "朗道英汉字典5.0" ; 可以指定具体使用的字典
:exact t)
)
:render (list
(gt-overlay-render :if 'selection) ; 如果翻译的是选中的文字,那么通过 overlay 方式渲染
(gt-posframe-pop-render :if 'word :frame-params (list :height 40 :border-width 5)) ; 如果翻译的是单词,那么通过 posframe 方式渲染
(gt-alert-render :if '(and read-only not-word)) ; 如果翻译的是只读 buffer 中的非单词,那么通过 alert 渲染
(gt-buffer-render)))
我也想这个功能