読者です 読者をやめる 読者になる 読者になる

TOEICのリスニングがだめだめだったので、鍛えることにした

Ruby

この前受けたTOEICの結果が返ってきたわけですが、リスニングがぼろぼろすぎたので、どうにかしようと思いました。というわけでdictationの練習でもすることにしました。で、dictationの準備が面倒なんで、適当に教材をダウンロード&加工するスクリプトをRubyで書いたりなど。本当はBBCのlearning englishというところからmp3をダウンロードしてきたかったんだけど、ファイルがどこにあるのかよく分からなかった。ブラウザで開くとプレイヤーが開いたりするし。

で、色々探したところ、VOA Newsというところならニュースの内容と音源を取ってこれそうだったので、ここで。引数にurlを指定するとmp3をダウンロードして、以下のようなdictation用のものを出力してくれます。

Afghan ___ _______ ______ ____ ________ _ _______ _______ __ _________________ __ _________, _________ _________ _______ _________, __________ _ _______ ______ __ ________ ___________ _____ _ ____ _________ __________ __ ______ _____. 

Afghan and foreign troops have launched a massive manhunt to recapturehundreds of prisoners, including suspected Taliban militants, whoescaped a central prison in southern Afghanistan after a raid byTaliban insurgents on Friday night.

で、mplayerで範囲を指定して、繰り返しやれば簡単に一人dictationができる環境が整います。

mplayer -ss 3 -endpos 5 -loop 2 Gul14jun08prison.mp3

Rubyのソースはこんなの。

#!/usr/bin/ruby
require 'rubygems'
require 'hpricot'
require 'mechanize'
require 'pp'

url = ARGV[0]

agent = WWW::Mechanize.new
agent.max_history = 1
source = Hpricot(agent.get_file(url))
agent.get((source/"a.media-asset")[0][:href]).save

(source/"span.body").each{ |item|
  original = item.inner_text.gsub(/\n/, '')
  text = []
  original.split(". ").each{|x|
    x += "."
    text.push x
  }
  text.each{|sentences|
    sentences.split(" ").each_with_index{|sentence,index|
      if index == 0
        print sentence
      else
        print sentence.gsub(/[a-zA-Z]/, '_')
      end
      print " "
    }
    puts "\n\n"
  }
  puts "\n"
  puts text
}

誰かBBC版でやってくれないかなー。