Skip to main content

Posts

Showing posts with the label volunteer

ビデオ字幕のタイミング作成の半自動化

概要 私はボランティア活動として誰もが無料で利用できる算数の解説のビデオの翻訳をしている.このビデオに字幕をつける作業に費やす時間が意外に多くて困っている.作業の流れ(ワークフロー)から,字幕作成時には既に音声の入ったビデオとそのスクリプトがあるので,これを使ってできるだけ自動で字幕を作成できないかと考えた.今回,タイミング作成のエンジンとして YouTube の transcript機能を使って,半自動で字幕タイミングを作成したところ,作業時間をある程度短縮することができた.YouTube のtranscript 機能では text フォーマットが入力となるので,srt ファイルを text にする filter を実装した.また,transcript 機能でタイミングを作成した場合,字幕に不自然な改行が入ることがある.そこでこれを除く機能も実装した.以前,13分のビデオの字幕のタイミング生成をした時,手動で 4 時間半程度かかったが,今回の方法でほぼ同じ長さのビデオの字幕タイミング作成を3時間弱程度に短縮することができた.今回作成したソフトウェアは new BSD license で公開しているので,誰でも自由に利用することができる. 字幕のタイミング作成の半自動化 私はボランティア活動で「どうして分数の割り算はひっくりかえしてかけるのか」とか「そもそも分数で割るというのはどういう意味か? 3で割るという意味ならわかるが,2/3 で割るとはどういう意味なのか?」のような算数の解説のビデオ作成をしている.その際に字幕も作成するのだが,このタイミングの作成にかなりの時間をとられている.例えば,13分のビデオの字幕タイミング作成に4時間半程度かかったことがある. しかし,私には字幕のスクリプトがあり,そして音声も作成している.今回,これを使ってできるだけ字幕のタイミング生成を自動化できないかをSundayResearch のテーマとした. 私の友人の一人に音楽の mp3 ファイルをフーリエ解析し,そこからリズムをとり出すというソフトを作った人がいる.その人はダンスダンスレボリューションというゲームのマットを持っているのだが,ゲーム機は持っていないので,それで遊ぶために作ってみたということである.最初は字幕作成には音声の解析をすべき...

Scratch を学ぶ (2)

前回は scratch というプログラミング環境がどういうものかを簡単に話しました.そこではイベントという考えを使ってプログラムが動きます.今回はこの環境でキャラクターを動かした10歳の生徒の話です. この Scratch というプログラミング環境では,キーイベントというイベントの一種が提供されています.たとえば,「右の矢印キーを押す」というイベントがあります.このイベントが起こると,x を 10 増やすというようなプログラムを書きます.すると,右の矢印キーを押すたびに猫を右に動かすことができます.これを上下左右のキーでそれぞれ行うことで,キーを使って猫を移動させることができます. 今日の生徒はドラゴンを登場させて,同じことをしました.するとなんと,猫もドラゴンも全く同じ動きをしてしまいます.まあ,そのようにプログラムしたので当然です.コンピュータはとても速く計算し,とても正確で,そしてとても愚かなものです.書いたとおりのことしかしません.その生徒はドラゴンを速く動かしたいと言いました.私は動く量を変えましょうと答えました.今は1回のキーを押すと,動く量が 10 です.速さとは一定時間に動く距離のことですから,これを増やせば速度は思いのままに変えられます.しばらくしてどうしたかなと思って見たら,この生徒はなんと,同じキーイベントをもう1つ作っていました. つまり,右矢印のイベントが発生すると,2つのプログラムが起動するのです.1つのプログラムは10右へ移動であり,2つのプログラムでは合わせて20の移動になります.この環境では並列に動く部分でもちゃんと考慮されているようにできているらしく,これで正しく2倍の速度で動くのです.3倍速く動かすためには,もう1つプログラムを起動すればできます.なんという発想! 私はジョジョという漫画の1シーンを突然思い出しました.主人公がスタンドで浮くという場面です.(知らない人はすみません) 仗助がスタンドに押されて移動する場合,私の発想はスタンドの押す速度を変えることでしたが,この生徒の発想はスタンドの数を増やすことだったのです. しかし,この生徒の方法では基本的に整数倍にしか速くできません.もちろん1つのプログラムがキャラクターを10押して,もう1つが同じキャラクターを5押すとすれば 15 押すことになり.1.5 倍の...

Scratch を学ぶ (1)

しばらく前から私は Scratch [1] というプログラム言語を10歳から12歳の生徒達に教えています.時々見る生徒の創造力というのはかなり驚くものです.その1つをここに書いておこうと思います. まずはプログラムを少し知っている人に向けての概念的な説明をしましょう.後で10歳の生徒にする例による説明も書きます.概念を理解した方が応用がきくのですが,どうしてもとっつきにくいものです.また,例による説明はその例についてはわかるのですが,その他の場合にどうなるかがわからないことが多いという問題があります. Scratch というのは言語名でもありますが,プログラム環境でもあります.その環境ではスプライトキャラクター [2] というものをイベントリブンで動かすプログラムができます.スプライトキャラクターはオブジェクトと考えても良いもので,イベントによってプログラムが起動し,それぞれのプログラムは並列に走ります. しかし,このような説明ではプログラムをしたことのない人には何のことはわからないでしょう.プログラム環境,スプライト,イベント,オブジェクトなどはプログラミングで使う概念なので,それぞれについて理解する必要があります.しかし,もちろんこのような概念は10歳の生徒にはあまり話をすることはありません.先に述べたように例による説明には問題点がありますが,ここではまず例を使って説明をしたいと思います. たとえば scratch を起動すると,猫がいます(図 1).この猫に何かが起こるとどうするかということをプログラムするのです.ここで何かが起こるというのは,マウスのボタンが押されたとか,何かキーが押されたとか,そういうことです.それをイベントが発生すると言います.イベントが発生するとプログラムが動き出すので,イベントで駆動(driven: ドリブン)のプログラムと言います.それぞれのキャラクター,猫とか犬とかは自分の状態を持っており,その状態を使ってプログラムが動きます.状態というのは,猫がどこにいるかという位置とか,猫がどちらの方向を向いているとかのことです.プログラミングでは,状態を持っているものをオブジェクトということがあります.ここでは猫は1つのオブジェクトであり,犬もまた1つのオブジェクトです. Figure 1. Scratch pro...

Frontline Volunteer

私の一番良く知っている人が先日エボラの感染を食い止めるためのボランティアに応募した.彼はプログラマであって,医者でも看護師でもないので,何ができるのかと思ったが,どうやらサポートの人員もボランティアで募集しているそうである.たとえば,データーセンターを作る IT テクニシャンというポジションがある. 応募するのは怖くはないのかと尋ねると,怖いそうだ.感染したら致死率が 50から 80 パーセントという病気,しかも治療薬はまだ開発途上である.気軽に休暇に行くというわけにはいかない. しかし,outbreak がこちらまで来てから考えるよりも,発生源に近い方で止めるべきだと思ったそうだ.また,彼には家族もいないので誰かがすべきなら自分でも良いと思ったそうだ.それでもボランティア応募のフォームを埋めて,送信のボタンを押した時には手がふるえたそうだ. フォームを送ってからの最初の一週間は,もし行くとしたらその前に何をすべきかということを考えて過ごしたということだ.彼は算数の教材のビデオを趣味で作っていて,その週にはその作成が進んだということである.しかし私はその作業がすぐには終わらないことを知っているので,一週間だけ進んでもどうなのかなと思った.彼も私の考えていことはわかるようで,もしかしたら帰ってこないかもしれないと考えると何かしておきたいと思ったそうだ.また,何か医療のトレーニングができないかと知っていそうな友人に尋ねたりしたそうだ. 彼がエボラのボランティアに応募して一週間とちょっとして応募の返事が来た.「ボランティアへの参加応募,本当にありがたい.しかし今回はお願いしない.次回に何かあればまた連絡する.」という主旨の手紙であった.一週間ちょっとで人員を選んだというのはやはりかなり緊急なのだろう.ただ,彼の専門はコンピュータで,まったく医療の訓練もoutbreak についての経験もないということで選ばれなかったのだろう.断りの手紙がくるまで彼は医療のトレーニングについて知っていそうな人以外には誰もこの話をしなかった. 返事が来るまでの一週間とちょっとは,普段とは違った感覚だったという.帰ってこれないかもしれないという考えはどうも日常とは違っていて,しかしよく考えてみると別に帰って来たら何かどうしてもしたいことがあるのかと思うと別にないことも気がつい...

隙間時間でボランティアのすすめ・ランチブレイクボランティア編

「隙間時間」と私が呼んでいる時間は,電車を待っている間とか,人との待合せの時間,通勤時間など,ちょっとした「待ち」の発生する時間のことです.私は教材の翻訳というボランティアをしていますが,この隙間時間をよく使います. 私の場合,ものぐさなのでまとまった時間をつくるのはなかなか大変です.また無理をするとボランティアは続かないと思います.ちょっとした時間に無理をせずに少しづつ,ただし長く続けたいと思っています. 私が具体的にしているのは Khan academy  の教材を英語から日本語とドイツ語へ翻訳することです.日本語訳は自分一人でできるのですが,問題なのはドイツ語の翻訳です.私のドイツ語はまだまだなので,誰かにチェックしてもらう必要があります.私は仕事の同僚と昼食に行き,そこでコーヒーを一杯飲む時間で誰かに私の翻訳を見てもらうことにしました.つまりコーヒー待ち時間,隙間時間のボランティアの1つです. できるだけ毎日私は算数の練習問題を1つか2つドイツ語に翻訳します.それを印刷して,同僚との昼食に持っていきます.そして,コーヒーを注文して来るまでの間に見てもらいます.その時々によって一緒にコーヒーを飲む同僚は違います.同僚のうち6人ほどがこれに協力してくれています.その様子の1コマが以下の写真です.また,見てもらった例とそのいくつかが残っていますのでそれも写真でご覧下さい. Lunch break volunteer snapshot A sample proofreading result Recent results これをはじめて約一年半が過ぎました.翻訳した量は日独合わせて 450,000 語になります.そのうちドイツ語は 40,000語ほどです.ドイツ語に関しては1日5分から10分の隙間時間でも毎日一年半続けるとこれだけになります.これは全必要作業量の1%近くですから,私と同じようなことをする人がドイツに100人いるだけでドイツ語の作業は完了します.ドイツ語は比較的ボランティアがいますし,1日2問というのは他の翻訳者に比較したらかなり少ないものなので,実際にはそんなに人数は不要でしょう.しかし,日本語は残念ながら参加者がほとんどいないのでまだまだかかりそうです.私は翻訳の準備には1日25分以上はかけないこと...