EV3に話す機能があります
speak(){ espeak -a 200 -s 130 -v la --stdout "$@" | aplay; }
仕組みは簡単です
speak "Say this"
ファイルの内容を言いたいので、これを持っています。
printf '%b\n' "$(cat joyPhrase)"
printfの出力を文の周囲に引用符で囲むにはどうすればよいですか?
答え1
二重引用符を避けることができます
printf '%b\n' "\"$(cat joyPhrase)\""
私のコンピュータに
$ echo this is a file >> testfile
$ printf '%b\n' "\"$(cat testfile)\""
"this is a file"
catを使用する代わりにリダイレクトを使用できます。
$ printf '%b\n' "\"$(< testfile)\""
"this is a file"
答え2
espeak
サポートの使用--stdin
パイプから読み取るので、1つのオプションは、引数の代わりにパイプを使用するように関数呼び出しを変更し、printf出力を関数にパイプすることです。
speak(){ espeak -a 200 -s 130 -v la --stdout --stdin | aplay; }
printf '%b\n' "$(cat joyPhrase)" | speak
あるいは、次のように他のコマンドの出力をspeak
引数に渡すことができます(ただし、制御文字がある場合は機能しない可能性があります)。
speak $(printf '%b\n' "$(cat joyPhrase)")