ひさしぶりに英語学習熱がよみがえってきたので、Duo3.0使って勉強するか〜と思っていたらDuo3.0の復習CDを分割するCUEシートが見つかったので、これは、英文と和訳を歌詞として入力して、androidの音楽プレーヤーで英文・和訳を見えるようにできれば、学習しやすいじゃん!と思い、やってみました。
Duo3.0って発売して10年以上たちますが、いまだに売れ筋の単語集なのですね。
ざっくりとした手順を書いてみます。わたしはMacつかっているんですが、1.のfoobar2000のくだりはVMWare Fusionを使ってWindowsでやりました。3のくだりはWindowsでもできると思います(未確認)。
1.Duo3.0の復習CDを分割してmp3にする。
「英語の会」というサイトに書いてあったやりかたを踏襲します。Duo3.0の文ごとに分割できるCUEシートを使って分割を行っています。
で、途中から手順変えてmp3にしているのですが、必要なLAMEエンコーダーは、Windows版だとここいらからとってくると良いかと。
http://www.rarewares.org/mp3-lame-bundle.php
そして、ここにあるやりかたをスライドNo.33基本的に踏襲します。
http://eigonokai.jp/duo30-splitting-method/
スライドNo.33でWAVに一度落としているけど、”Output Format”をmp3にする。エンコーダは、さきほど見つけてきたlame.exeを使う。
これで一文ごとにばらばらになったmp3ができました。
2.DUO3.0の英文、和訳を取得する。
Scansnap等々使い、DUOの復習CDについてあった本をスキャンするなり、手打ちするなりして、英文、和訳を取得します。
(グレーな話ですが、Duoの英文、和訳がネットのどこかにあります。そのものずばりの場所を書くのは著作権上どうかと思いますのでヒント・・・。googleで、DUO3.0の和訳をひとつ入れてみれば何かしらでてくるのではないでしょうか。)
3.mp3にテキストを組み込む。
3.1.rubyとtaglibとtaglib-rubyのインストール
なんとなく書けるrubyでタグ変更をやることにしました。rubyでID3v2タグ(mp3の曲情報の規格)を編集できるライブラリを使って「ちゃっちゃと」できると思ったら大はまり。ID3v2タグを編集できるライブラリは幾つかあったのですが、まともにUSLT(Unsychronised lyrics/text transcription)タグを入れられるものが”taglib-ruby”一個しかなかった。ほかのライブラリはダメダメです。
http://robinst.github.com/taglib-ruby/
ちなみ、taglib-rubyはtaglibというライブラリのバインディングになるので、taglibのインストールも合わせて必要です。Macではbrewでインストールできました。
http://developer.kde.org/~wheeler/taglib.html
3.2.mp3に英文、和訳を組み込むためのスクリプトを書く。
一応、自分で書いたスクリプトをさらしておきます。適当に作ったので、お好みにあわせて適宜変えてみてください。Duo3.0の英文テキストがDUO3_eng.txt、和訳テキストがDUO3_jpn.txtに、つくったmp3がすべてカレントディレクトリにあると想定していて、実行するとカレントディレクトリのmp3ファイルにタグ情報を直接書きこみます。テキストの先頭には xxx. と文章番号とピリオドが入っている前提でパースしています。
日本語テキストファイルはUTF-8で保存されている前提です。USLT.language=”eng”設定がおかしいように見えますが、特に問題にならないのでこうしておきます(というか、ID3.orgを見てもどう書いて良いのかちゃんと書いてない)。
[ruby]
require "taglib"
# DUO例文英文テキストからセンテンスごとに配列に入れる
f=open("DUO3_eng.txt")
current_sentence = 0
sentences = []
while line = f.gets
if (/^(d+).(.*)/ =~ line)
current_sentence = $1.to_i
sentences[current_sentence] = sprintf "%d.%sn",current_sentence,$2
else
sentences[current_sentence] << line
end
sentences[current_sentence].gsub!(/nn/,”)
end
f.close
# DUO例文日本語テキストからセンテンスごとに配列に入れる
f=open("DUO3_jpn.txt")
current_sentence = 0
while line = f.gets
line.strip!
if (/^(d+).(.*)/ =~ line)
prev_sentence = current_sentence
current_sentence = $1.to_i
if(current_sentence-1) != prev_sentence
p current_sentence
abort("mismatch")
end
sentences[current_sentence] = sprintf "%snnnnnnn%d.%sn",sentences[current_sentence],current_sentence,$2
else
sentences[current_sentence] << line
end
end
f.close
#フレーズごとのmp3ファイルに英文の配列を入れる
for current_sentence in 1..560
filename = sprintf("%.3d.mp3",current_sentence)
TagLib::MPEG::File.open(filename) do |mp3|
printf "%dn",current_sentence
tag = mp3.id3v2_tag
tag.artist = "DUO3.0_eng_jpn"
uslt = TagLib::ID3v2::UnsynchronizedLyricsFrame.new
uslt.language = "eng"
uslt.text = sentences[current_sentence]
uslt.text_encoding = TagLib::String::UTF8
tag.add_frame(uslt)
mp3.save
end
end
[/ruby]
3.3.iTunesで確認
iTunesでmp3のファイルを開いて曲の情報→歌詞プロパティで正しく英文→日本語が出ていれば成功。うまくいかなかったらバイナリエディタとにらめっこっこしてみましょう。
4.androidに入れる。
androidでUSLTタグをちゃんと認識できるプレーヤーが意外に少ないです。私がみつけたのは、”Astro Player”というもの。スキンを変えると、かなり大きく歌詞が出ます。
mp3に組み込んだテキストは、英語→日本語の部分で大きく改行いれてますが、このプレーヤーでの利用を想定して、歌詞の部分をフリックすると、日本語訳ができるようにしたのでした。
うーん、満足・・・じゃなかった、これ使って勉強しないとな!