3

Sinatraを使用するラズベリーパイ用の非常に小さなアプリを作成しました:
https ://github.com/khebbie/SpeakPi

このアプリを使用すると、ユーザーはテキストエリアにテキストを入力し、Googleにそのためのmp3ファイルを作成するように依頼できます。

そこに、Googleを呼び出してmp3ファイルを再生するspeech2.shというシェルスクリプトがあります。

#!/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')

それは動作しません!

4

1 に答える 1

0

# encoding: UTF-8UTF-8を処理しているため、Rubyスクリプトの先頭にマジックコメントを追加し、 ie=UTF-8Google翻訳を呼び出すときにクエリ文字列にパラメータを渡すことで、エンコードがプロセスの途中で正しく行われるようにします。

于 2012-12-30T12:04:57.463 に答える