Festival は、次のディレクトリ構造の例に音声パケットデータを保存します。
/usr/share/festival/voices/<language>/<voicepack name>
できるだけ多くのサブディレクトリの中で最も簡単な1行(使用するのに最適ls
)は何を印刷しますか?<voicepack name>
<language>
ベストアンサー1
私はFedoraを使用しており、これらの音声パッケージの場所は少し異なります。
$ ls /usr/share/festival/lib/voices/*/ -1 | grep -vE "/usr|^$"
kal_diphone
ked_diphone
nitech_us_awb_arctic_hts
nitech_us_bdl_arctic_hts
nitech_us_clb_arctic_hts
nitech_us_jmk_arctic_hts
nitech_us_rms_arctic_hts
nitech_us_slt_arctic_hts
次のように変更できます。
$ ls /usr/share/festival/voices/*/ -1 | grep -vE "/usr|^$"
検索の使用
ls
の出力をls
解析するのは難しいので、この文脈で一般的に使用することは眉をひっくり返します。find
次のコマンドを使用することをお勧めします。
$ find /usr/share/festival/lib/voices -maxdepth 2 -mindepth 2 \
-type d -exec basename {} \;
nitech_us_awb_arctic_hts
nitech_us_bdl_arctic_hts
nitech_us_slt_arctic_hts
nitech_us_jmk_arctic_hts
nitech_us_clb_arctic_hts
nitech_us_rms_arctic_hts
ked_diphone
kal_diphone
検索と基本名の詳細
このコマンドは、ディレクトリに基づいて正確に2レベルの深さのファイルのフルパスリストを生成することによって機能します。
/usr/share/festival/lib/voices
リストは次のとおりです。
$ find /usr/share/festival/lib/voices -maxdepth 2 -mindepth 2
/usr/share/festival/lib/voices/us/nitech_us_awb_arctic_hts
/usr/share/festival/lib/voices/us/nitech_us_bdl_arctic_hts
/usr/share/festival/lib/voices/us/nitech_us_slt_arctic_hts
/usr/share/festival/lib/voices/us/nitech_us_jmk_arctic_hts
/usr/share/festival/lib/voices/us/nitech_us_clb_arctic_hts
/usr/share/festival/lib/voices/us/nitech_us_rms_arctic_hts
/usr/share/festival/lib/voices/english/ked_diphone
/usr/share/festival/lib/voices/english/kal_diphon
しかし、私たちはこのディレクトリの最後の部分であるリーフノードが欲しいです。したがって、basename
次のように解析できます。
$ basename /usr/share/festival/lib/voices/us/nitech_us_awb_arctic_hts
nitech_us_awb_arctic_hts
これをすべてまとめると、find
すべての2レベルのディープディレクトリをbasename
コマンドに渡すことができます。シンボルは、basename {}
これらの基本名変換を実行します。 Findはスイッチを介して呼び出します-exec
。