有哪些适用于Clojure的文本转语音和语音识别库?

7

2
我不知道有什么直接支持Clojure的东西,但通常平台上会有语音识别或合成引擎,然后人们会为他们选择的语言构建接口。也许你需要一个针对CMU SPhinx的Clojure接口?你可能会发现这个答案是一个有用的起点 - https://dev59.com/kGw15IYBdhLWcg3w3vle#6351055 - Michael Levy
关于基于Java的TTS解决方案,这个答案可能会有所帮助 - https://dev59.com/QXVC5IYBdhLWcg3w7V1q - raju-bitter
3个回答

6
我认为这是现有Clojure库中尚未探索的领域。
你最好的选择可能是查看许多可用的Java语音识别库,并从Clojure中使用它们 - 目前它们将更加成熟和功能强大。
你可能想要查看:
使用Java库来编写Clojure非常容易 - 通常只需要导入正确的类并执行(.someMethod someObject arg1 arg2)即可。
如果您创建了一个Clojure语音识别器包装器,请务必将其贡献给社区!我知道有相当多的人(包括我自己)都对在Clojure中进行一些与语音相关的工作感兴趣。

2

到目前为止,我已经能够使用本地系统的TTS,以下是我的代码,希望能对某些人有所帮助?

(use '[speech-synthesis.say :as say])
(use '[clojure.java.shell :only [sh]])


(defn festival [x](sh "sh" "-c" (str "echo " x " | festival --tts")))
(defn espeak [x] (sh "espeak" x))
(defn mac-say[x] (sh "say" x))
(defn check-if-installed[x] (:exit(sh "sh" "-c" (str "command -v " x " >/dev/null 2>&1 || { echo >&2 \"\"; exit 1; }"))))


(defn engine-check[]
(def engines (conj["Google" ]
(if (= (check-if-installed "festival") 0)  "Festival" )
(if (= (check-if-installed "espeak") 0) "ESpeak"   )
(if (= (check-if-installed "say") 0)  "Say"  ))) ;; Say is the Apple say command
(remove nil? engines))

(defn set-engine [eng](cond (= eng "Google")(def speak say)
                      (= eng "Festival" )(def speak festival)
                      (= eng "ESpeak") (def speak espeak)
                      (= eng "Say") (def speak mac-say)))

然后使用。
(set-engine "Festival") ;; set the engine
(speak "Hello, I can talk") ;; speak your text

1
我使用了通过JNI Java库所写的espeak来从Clojure文本生成语音。基本库可在Github上获得。不幸的是,由于无关原因,我暂时被迫将注意力转向另一个问题。但是,如果您想使用我的库来与Clojure中的espeak进行接口交互,请给我留言-我可以向您发送一些我如何使用它的示例。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接