3
後我做了樹莓派一個很小的應用程序,使用西納特拉調用系統:
https://github.com/khebbie/SpeakPi從西納特拉
該應用程序允許用戶輸入一些文字的文本區域,並要求谷歌創建一個mp3爲它的文件。
在那裏我有一個shell腳本調用speech2.sh它調用谷歌和播放MP3文件:
#!/bin/bash
say() {
wget -q -U Mozilla -O out.mp3 "http://translate.google.com/translate_tts?tl=da&q=$*";
local IFS=+;omxplayer out.mp3;
}
say $*
當我打電話speech.sh從命令行像這樣:
./speech2.sh %C3%A6sel
它發音爲%C3%A6
,如丹麥語字母'æ',這是正確的!
我打電話speech2.sh從西納特拉路線,像這樣:
post '/say' do
message = params[:body]
system('/home/pi/speech2.sh '+ message)
haml :index
end
當我這樣做,谷歌宣告了一些非常奇怪的字符,如「斷管......」這是錯誤的!
所有字符a-z
正確
我嘗試過的一些URL編碼和解碼明顯,毫無效果。
我試着輸出消息到命令行,它確切地說是"%C3%A6"
沒有任何意義。 你知道我在做什麼錯嗎?
編輯
來概括和簡化 - 如果我在bash鍵入像這樣:
./speech2.sh %C3%A6sel
它的工作原理
如果我啓動IRB會話並鍵入:
system('/home/pi/speech2.sh', '%C3%A6sel')
它不工作!
您是否嘗試過硬編碼字符串,例如'message =「%C3%A6」'檢查它是否與params對象有關? – iain
不會,會試試,謝謝:-) – khebbie
我這樣做了,我在路由中對它進行了硬編碼,並且發現它是錯誤的。所以這就清楚地表明,這是對系統的調用失敗... – khebbie