06月≪ 12345678910111213141516171819202122232425262728293031≫08月

英単語はgoogle先生に読み上げさせて覚えよう!

2017/07/13
ふとしたきっかけで音声合成の技術がすごいことになっていることに気づきました。google翻訳が読み上げるテキストの英語が相当自然な感じ。では,日本語はどうよ?ということで日本語を読み上げさせてみたところ,英語よりは随分ナチュラルさが掛けるけれども,まぁ聞けなくはない。そこでふとよぎったのが,英語と日本語をコンピュータに読み上げさせれば,自分オリジナルのボキャビル用の音声マテリアルが作れるではないかっ!!

というわけで,早速ネット上を漁って,google翻訳等のText To Speechサービスに任意の文章を読み上げさせた音声データのファイルをダウンロードする方法を調べてみた。

まず,gooole翻訳に英語を読み上げさせる方法(本日現在)。こんな感じでアクセスするだけ。

http://translate.google.com/translate_tts?tl=en&q="ここに読み上げさせたい文章をURLエンコードしたもの"&client=tw-ob


単にwgetコマンドでファイルをダウンロードしようとしてもgoogle先生に弾かれるので,UAをChromeに偽装w 今のところ,これでDLできていますが,そのうちできなくなるのかな。情報によると,節度なくこれでアクセスしているとgoogle先生が起こって,IPで弾かれることもあるそうです。

wget --user-agent="Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.2 Safari/537.36" "http://translate.google.com/translate_tts?tl=en&q=$encoded&client=tw-ob" -O /tmp/headword.mp3



次,日本語。同じくgoogle先生に読み上げさせてもいいのですが,HOYAがやっているVoiceTextというサービスが個人での利用に限って,APIの使用を許してくれているので,日本語はそちらから落とすことにします。

まず,VoiceText Web APIの頁から無料会員登録をします。すぐに登録したメールアドレスにAPI KEYが送られてきますので,これを使ってアクセスします。

curl "https://api.voicetext.jp/v1/tts" -o "/tmp/japanese.wav" -u "送られてきたAPI_KEY" -d "text=ここに読み上げさせるテキスト" -d "speaker=show"


意外と簡単でした。

これで,CSVファイルに見出し語,例文,日本語をずらずら並べたものを読み上げさせて音声ファイルに落とすシェルスクリプトにしてみました。

#! /bin/bash

rawurlencode() {
local string="${1}"
local strlen=${#string}
local encoded=""

for (( pos=0 ; pos c=${string:$pos:1}
case "$c" in
[-_.~a-zA-Z0-9] ) o="${c}" ;;
* ) printf -v o '%%%02x' "'$c"
esac
encoded+="${o}"
done
echo "${encoded}"
}

oldifs=$IFS
IFS=,

#行数のカウント
number=`wc -l $1.csv`
cln=1
cat $1.csv | while read hw example japanese; do

#head word
echo "Processing : $hw ($cln/$number)"
encoded=`rawurlencode "$hw"`
wget --user-agent="Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.2 Safari/537.36" "http://translate.google.com/translate_tts?tl=en&q=$encoded&client=tw-ob" -O /tmp/headword.mp3 -q

#example
encoded=`rawurlencode "$example"`
wget --user-agent="Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.2 Safari/537.36" "http://translate.google.com/translate_tts?tl=en&q=$encoded&client=tw-ob" -O /tmp/example.mp3 -q

#japanese
curl "https://api.voicetext.jp/v1/tts" -o "/tmp/japanese.wav" -u "6rpscyb36bl7o68r:" -d "text=$japanese" -d "speaker=takeru" -s -S

#convert
ffmpeg -i "/tmp/headword.mp3" -vn -ac 1 -ar 24000 -acodec pcm_s16le -f wav "/tmp/headword.wav" -loglevel error
rm /tmp/headword.mp3
ffmpeg -i "/tmp/example.mp3" -vn -ac 1 -ar 24000 -acodec pcm_s16le -f wav "/tmp/example.wav" -loglevel error
rm /tmp/example.mp3
ffmpeg -i "/tmp/japanese.wav" -vn -ac 1 -ar 24000 -acodec pcm_s16le -f wav "/tmp/japanese2.wav" -loglevel error
rm /tmp/japanese.wav
sox /tmp/headword.wav mute.wav /tmp/example.wav mute.wav /tmp/japanese2.wav mute.wav /tmp/temp.wav


#merge
if [ -e /tmp/temp2.wav ]; then
# 存在する場合
sox /tmp/temp2.wav /tmp/temp.wav /tmp/temp3.wav
rm /tmp/temp.wav /tmp/temp2.wav
mv /tmp/temp3.wav /tmp/temp2.wav
else
# 存在しない場合
mv /tmp/temp.wav /tmp/temp2.wav
fi
rm /tmp/headword.wav /tmp/example.wav /tmp/japanese2.wav

cln=`expr $cln + 1`
done

ffmpeg -i "/tmp/temp2.wav" -vn -ac 1 -ar 24000 -ab 128k -acodec libmp3lame -f mp3 "$1.mp3"
mv /tmp/temp2.wav $1.wav
IFS=$oldifs


URLエンコードする関数は,Create a speaking Linux shell script with Googleからパクりました。ありがとうございました。


スクリプト中のYOUR_API_KEYはご自分のAPIキーに置き換えてくださいね。
wgetコマンド,curlコマンド,soxコマンドが予め必要ですので,インストールしておいて下さい。
スクリプト本体がおかれているフォルダにポーズ用の無音のwavファイルをおいておく必要があります。私は0.7秒にしています。soxコマンドで結合するのに,サンプリングレートとチャンネル数を合わせる必要があるので,

$ sox -n -r 24000 -c 1 mute.wav trim 0.0 0.7


として,mute.wavという名前の無音のwavファイルを作って下さい。

使い方は,1行に,見出し語,例文,日本語の解説を書いたCSVファイルを用意して,スクリプトと同じフォルダに保存し,

./スクリプト名.sh CSVファイルの拡張子を除いたファイル名


で,勝手にmp3とwavファイルを作ってくれます。chmodお忘れなく。

あと,何故か分かりませんが,readコマンドが2行目から最初の3文字を正しく読み取ってくれないので,CSVは

yield,Higher-rate deposit accounts yield good returns.,産み出す
  yield,He reluctantly yielded to their demands.,圧力などに負けて,抵抗をやめる
↑半角スペース3つ


てな感じで,2行目以降は先頭の見出し語のまえに半角スペース3つを挿入しないといけません。詳しい方,なぜこうなるのか教えて下さい。

これ,便利です。さっそく通勤の車の中や,皿洗いをしながら聞いています。
スポンサーサイト
10:51 英語 | コメント(0) | トラックバック(0)

ボキャビルに使えるかも? 辞書ブックマークレット

2011/02/21
マックの場合,safariでテキストを選択して右クリックすると,辞書で調べるというメニューが出てきて,ぽちっとクリックすると,辞書アプリが立ち上がって意味を即座に調べることができます。これが英英辞書でできたらええなぁと前々から思っていて,なにやらブックマークレットなるものでそれが実現できそうだということは分かってました。

最近,フリーのボキャビルサイト(英検単語テスト)をやってて,激しくこの機能を欲しまして。4択の単語テストが出題されるんですけど,4択の枝とか,その解説って,訳語がボンッって書かれてるだけで,詳しい語義が知りたくて,辞書を引きたくなるんです。辞書サイトを立ち上げておいて,コピーして,貼りつけてってやるのが面倒になり,このページ参考に,というか流用して作ってみました。

私は,Lonman Web Dictionaryが好きなのでこのロングマンのものと,あと,Oxford Advanced Learner's Dictionaryとgooの英和辞書のを作りました。

Longman Web Dictionary : LWD

javascript:(function(){x=document;y=window;if(x.selection)%20{Q=x.selection.createRange().text;}%20else%20if%20(y.getSelection)%20{Q=y.getSelection();}%20else%20if%20(x.getSelection)%20{Q=x.getSelection();};m='http://www.ldoceonline.com/search/?q='+encodeURIComponent(Q);y.open(m,'_blank','width=640,height=1028,menubar=yes,%20toolbar=yes,%20scrollbars=yes,left=640,top=20');})();



Oxford Advanced Learner's Dictionary : OALD

javascript:(function(){x=document;y=window;if(x.selection)%20{Q=x.selection.createRange().text;}%20else%20if%20(y.getSelection)%20{Q=y.getSelection();}%20else%20if%20(x.getSelection)%20{Q=x.getSelection();};m='http://www.oxfordadvancedlearnersdictionary.com/dictionary/'+encodeURIComponent(Q);y.open(m,'_blank','width=700,height=1028,menubar=yes,%20toolbar=yes,%20scrollbars=yes,left=900,top=50');})();


goo英和辞書 : goo英和

javascript:(function(){x=document;y=window;if(x.selection)%20{Q=x.selection.createRange().text;}%20else%20if%20(y.getSelection)%20{Q=y.getSelection();}%20else%20if%20(x.getSelection)%20{Q=x.getSelection();};m='http://dictionary.goo.ne.jp/srch/ej/'+encodeURIComponent(Q)+'/m1u';y.open(m,'_blank','width=680,height=1028,menubar=yes,%20toolbar=yes,%20scrollbars=yes,left=1240,top=80');})();



safariでは,それぞれのリンクをブックマークバーにドラッグ&ドロップするとブックマークバーに登録されます。safariのテキストを選択してブックマークバーのボタンをクリックすると,それぞれの辞書が別ウィンドウで開かれます。私のsafariでは快適に使えています。

画面の一番左に英検単語テストを配置したときに,英検単語テストのウィンドウの右側に辞書のウィンドウがずれて表示されるようにしてあります。横1920ピクセルが表示できるディスプレイで丁度収まるようにしていますので,ご自分のディスプレイサイズに合わせて,ブックマークレット内のleftとtopのパラメータを変更してください。
11:54 英語 | コメント(0) | トラックバック(0)

桐原書店FOREST えいご@DS

2010/03/09
わたくし,英語上達完全マップの信奉者です。マップでは,英文法に関して,グラマーの問題集をこなして,問題に瞬間的に反応できるようになりなされ,というようなことを仰っているのだと勝手に理解しています。

それで一度,有名な桐原書店のフォレストとその問題集を買い込んできて,さっそく取り組んでみましたが,やはり,毎日定期的に机に向かって問題集を解くなんて,そんな芸当,学校を卒業して15年以上もたった今,できっこありません。

それが去年の今頃のことだったような気がします。

そのとき目に止まったのが,フォレストがニンテンドーDSのソフトになる!という記事。ただ,その時は未だ未発売で,発売時期だけがアナウンスされていました。それで発売を待っていたのですが,なかなかリリースされず,そうこうしているうちに,英文法のことなんてすっかり忘れてしまっていました。

先日,嫁さんがメシを作ってくれている間に退屈しのぎにDSでスーパーマリオでもやるかと超久々にDSを取り出した瞬間,おもむろに「桐原書店FOREST えいご@DS」のことを思い出し,速攻Amazonで注文。最近はアマゾンの配送も早いですね。2日で到着。

それからはまってます。とにかくガンガン問題解きまくって,間違えた問題はその場で解説を読む。間違っては解説を読むを繰り返していたら,難解で理解不能,そんな言い回し知らなくったって,なんとかなると思って諦めていた仮定法過去完了もおぼろげながら理解し始めたような気がします。

いいなと思うのが,問題を説いているうちに,細かいことまでいろいろ覚えられそうなこと。

文法の嫌なところってのが,大原則の説明の後に,たっくさんの「例外」「細則」みたいのがうじゃうじゃあって,「こんなのおぼえられるかー!!」ってくらいたくさん文法項目がありますが,これが,問題を解いては不正解,解説のサイクルを何度か繰り返しているうちに,自然と覚えちゃうんだな。しかも,コンピュータソフトだから,繰り返しがらくちん。いちいち,間違えた問題に印をつけて,最後までやったら,また間違えた問題だけ最初からやり直し,見たいな地道な努力が必要じゃない。とりあえず,電源入れて,タッチペンでタップしてれば,バンバン問題が出題されるってのが手軽でいい。

とりあえず,一番基本の基本練習みたいなのをここ数日やりまくっていたら,レベル10で全部正答してしまいました。とりあえず,レベル0~9も100%正答することが現在の目標。全部で6000問収録されているらしいので,これら全部を瞬殺できるようになったら,かなりのもんでは?とほくそ笑んでいます。

そのあと,データを消去してゼロからもう一度繰り返せば,穴も潰せるかなと。

いやぁー,ヒットです。

13:24 英語 | コメント(0) | トラックバック(0)

Spotlightがネットワークディスクを検索してくれない・・・の結末

2010/01/26
Spotlightがネットワークディスクを検索してくれない 、で書いたことですが、
来ました。アップルサポートからお返事が。本当はずーっと前にお電話をいただいていたのですが、私が風邪でぶっ倒れていたときにお電話をいただいていて、元気になったら電話してくださいと云われていたのに、電話していなくて。昨日、再びお電話をいただいてしました。恐縮です。

それで、肝心なネットワークディスクについてSpotlightがインデックスを作ってくれないことについては、

「NASのOSがMacOSXでなければ、Spotlightはインデックスを作れない」
「NASのOSがMacOSXでなければ、ファイル共有のプロトコルがAFPであっても、Spotlightはインデックスを作れない。」

ということでした。

MacOSXをOSに使ったNASなんてこの世に存在しない?だろうし、ということは、Macをファイルサーバにしない限りは、ネットワーク上のファイルはSpotlightの検索対象にできないってことですね.

21:15 英語 | コメント(0) | トラックバック(0)

リスニング力アップのために,ネットラジオを聞きながら,寝に落ちる

2010/01/21
どういう理屈に基づくものであれ,英語力のアップのために,たくさんリスニングするというのは概ね推奨されていることだと思います。

昔は,ネイティブがナチュラルに話している音源なんてのは映画とか,旧FENくらいしかなかったのでしょうか。それを繰り返し聞くとか,贅沢に聞き流すなんてことはほとんど無理だった。それが技術と商売の発達により,テレビの2か国語放送とか,語学用のカセットとか,音源自体は簡単に手に入るようになり,MD→MP3プレーヤの登場で,聞き取れないところをしつこく聞きまくるなどの語学練習向きの再生方法が可能になったりと,学習者にとってはありがたい限りです。ネットの登場で,貴重なものをタダで公開するありがたい人も多数登場。海外ドラマのトランスクリプトも簡単に手に入ります。

私個人は,英語の上達のためには,しつこくシャドーイングするなどして,集中してリスニングすることが必須だと思ってます。なんで,石川遼くんには悪いですけど,聞き流すだけで英語が話せるようになるっていうあのCMには賛同できません。

それで,少しでも英語に触れる時間が長くなるようにと,寝入りばなにiPodでリスニングをしたりしてましたが,ひとつのマテリアルを何度も聞いたり,シャドーイングしたりすると,飽きちゃうんです。どうせ,大抵は途中で寝てしまうので,どうてもいいっちゃいいのですが,やっぱり聴き始めの部分では,もうこれ聞きあきたなぁって。

Podcastで毎日新鮮なマテリアルを聞けばいいじゃん,という方法もありますが,こういうメモリーにストックされたものを聞くのって,後から消さなきゃなんないし,なんとなく「聞き流し感」がないので(ってさっき言ったことと矛盾しそうですが,集中して聞き流すんですっ!!),CNNなどの「放送」を聞きながら寝に落ちたい!!というのが強い願望でありました。AFNが入らない田舎者の私にとって,放送といえば,CNN。

で,
1 CNNを寝室にひく
・・・またスカパーの契約が必要なので,毎月ウン千円を払ってまでしたいことではない。

受信できる残された「放送」は,

2 PCでネットラジオを聞く
・・・寝返りをうったりして,ヘッドホンのコードでPCをひっくり返して壊しそう。ラジオを聞くごときでPCを立ち上げるのがうざい。スリープタイマーで途中で電源を落とすのも面倒そう。

みたいな検討の結果,私の希望は現状では叶えられないと諦めておりました。

ところが,iPhoneでインターネットラジオが聞けることがわかりまして。iTunesでもOKですし,Skycastとか,Fstreamという無料アプリもあります。NPRは専用のアプリがありますね。これでNPRとか,BBCとかのニュースを専門で流しているあちらの放送局を手軽に聞きながら,iPhone付属のタイマーでスリープ機能を使って,電源OFFにもでき,まさに私の希望していた環境があっさり実現!!

ただ,Wi-Fi接続なので,無線アクセスポイントが一晩中つきっぱななしなので,いまいちエコじゃないですが。3G接続ならいいのかな?3G接続とWi-Fi接続でどれくらい消費電力が違うんですかね。それと,どうせパケットし放題なんですが,なんとなく気分的にあんまり3Gで接続したくないみたいな気持ちが強いんですよね。

兎に角,日本にいながらにして,アチラのニュース専門局の放送を聞きながら寝に落ちるという一昔前では考えられなかったことが簡単にできるということ感謝。
12:35 英語 | コメント(0) | トラックバック(0)
 | HOME |