7

什麼文本到語音識別庫可用於Clojure? 到目前爲止,我已經找到Clojure提供哪些文本到語音和語音識別庫?

https://github.com/klutometis/speech-recognition

https://github.com/klutometis/speech-synthesis

這兩種使用谷歌,因此依賴網絡的。

我找那些不依賴在互聯網上工作

+2

我不知道任何直接支持clojure的東西,但通常有一個平臺的語音識別或合成引擎,然後人們爲他們選擇的語言構建接口。也許你需要CMU SPhinx的Clojure接口?你可能會發現這個答案是一個有用的起點 - http://stackoverflow.com/a/6351055/90236 – 2012-08-15 22:37:50

+0

而對於基於Java的TTS解決方案,這個答案可能會有所幫助 - http://stackoverflow.com/questions/143390/ java的文本到語音引擎 - 概述 – 2012-08-16 13:03:16

回答

6

我覺得這是一個非常處女地儘可能現有Clojure庫去。

最好的辦法是看看許多可用的Java語音識別庫,並從Clojure中使用它們 - 它們將會更加成熟和有能力。

你可能想看看:

使用從Clojure的Java庫是非常容易的 - 它通常是作爲進口權類和做(.someMethod someObject arg1 arg2)

一樣簡單如果你確實爲語音識別器創建了一個Clojure包裝器,請將其貢獻給社區!我知道不少人(包括我自己)會對在Clojure做一些與演講有關的工作感興趣。

1

到目前爲止,我已經能夠使用本機系統的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庫,我寫信給生成Clojure中的文本語音espeak的使用。基本庫在github上可用。不幸的是,由於不相關的原因,我不得不把目光投向另一個問題。然而,如果你想用我的庫與clojure進行交流,請給我留言 - 我可以向你發送一些關於我如何使用它的例子。