玩式草子─ソフトウェアとたわむれる日々

第63回 お家通信カラオケシステムを作ろう[その2]

この記事を読むのに必要な時間:およそ 4 分

前回楽曲ごとに切り出したビデオカラオケの動画をMP4形式に変換すれば,HTML5のビデオ機能を使って新しめのブラウザで再生できることを確認しました。動画再生の部分は何とかなりそうなので,今回からは目的の動画にスムーズにたどりつくための検索システムについて考えてみましょう。

検索システムの検討

前回紹介したように,手元では,キャプチャした動画ファイルを楽曲ごとに切り出す作業と平行して,各曲のタイトルや歌手名,作詞・作曲者名等を一行に記録した楽曲リストを作ってきました。

8140 & 1 & 01 & むらさき雨情 & 三浦康照 & 山口ひろし & 藤あや子 
8140 & 1 & 03 & あなたの隣を歩きたい & 坂口照幸 & 三木たかし & 都はるみ 
8140 & 1 & 04 & 虞美人草 & 鳥井実 & 深谷昭 & 長保有紀 
...

この楽曲リストを元に,たとえば「むらさき雨情」というタイトルや「藤あや子」という歌手名から,"8140-1-01"という楽曲IDにたどりつくのが検索システムの目的です。

VHDカラオケには,目的の曲が何番のディスクの何トラック目にあるかを調べるために,曲の「タイトル」「歌手名」をそれぞれ五十音順に並べた「歌本」と呼ばれる索引集が付属していました。確かに,紙の上で目的の曲を探す場合はタイトルや歌手名をシーケンシャルに並べておくことが必須でしょう。それに対し,データベースを利用して任意のキーワードからランダムアクセスできるようにすれば,索引集のような五十音(読み方)順の情報は必要なくなるので,楽曲リストと同様なレコードを定義したデータベースにデータを流しこんでやるぐらいで間にあうだろう,当初はそう単純に考えていたものの,使い方を少し考えてみるとそれだけでは使いものにならないことに気づきました。

というのも,カラオケになるような楽曲の場合,曲のイメージや雰囲気を重視して,凝ったタイトルを付けることが多く,⁠女」「おんな」⁠⁠一人」「ひとり」などの表記揺れや,⁠詩」と書いて「うた」と読んだり,⁠故郷」と書いて「ふるさと」「さと」と読ませる当て字読みがよくあります。

楽曲リストに写した正式なタイトルのみならず,このような表記揺れや当て字読みを吸収できるようにしておかないと,⁠みちのくひとりたび」って「一人旅」だっけ,⁠ひとり旅」だっけ?と検索するたびに悩むハメになりそうです。

また,"Forever"や"TSUNAMI"といった英語表記のタイトル,"T.M.Revolution","Mr.Children"といった歌手名を,アルファベットだけで検索するのか,日本語の読みでも検索できるようにするのかも考えておく必要があるでしょう。

さて,どうしたものかな,と考えているうちに,通信カラオケ「セガカラ」のフリーワード検索は,⁠全角ひらがな8文字以内」「前方一致検索」というシンプルな仕様になっていることを思い出しました。

図1 ⁠セガカラ」の楽曲検索ページ

図1 「セガカラ」の楽曲検索ページ

紹介されている例を見ると,SMAPは「すまっぷ」で,Dreams Come Trueは「どりーむずかむと」で,⁠北へ…ひとり旅」「きたへひとりたび」と検索すればいいようです。

検索キーワードをひらがなのみにすると,⁠一人」「ひとり」の表記揺れは吸収できますし,⁠SMAPだっけ,スマップだっけ?」と悩む必要もありません。これくらいならタイトルと歌手名に読みを追加すれば実現できそうなので,まずはこの仕様にならってみることにしました。

タイトルと歌手名をひらがなで検索すると決めたものの,楽曲の切り出し時に作成してきた楽曲リストには「読み」の項目はありません。そこで,まずは楽曲リストにひらがなの読みを追加することから始めました。

漢字かな変換ソフト kakasi

集積してきた楽曲リストには,VHDディスクとカラオケの画面表示から,⁠ディスク番号」⁠サイド(表裏)」⁠トラック番号」⁠タイトル」⁠作詞家名」⁠作曲家名」⁠歌手名」⁠コメント」などのデータを拾っています。

「コメント」「音飛びあり」「ノイズ多し」のように,状態に注意が必要な動画に付けたメモです。

これらのうち,⁠作詞家」⁠作曲家」から検索する必要はほとんど無いと考えて,⁠タイトル」「歌手名」に読みを付けることにしました。

しかしながら3000件を越える楽曲それぞれにひらがなの読みを入力するのも面倒な作業です。前述のように,楽曲のタイトルや歌手名には表記揺れや当て字読みといった問題はあるものの,たいていの単語は普通に読めるので,漢字を自動的にひらがなに変換するようなツールは無かったかな,と考えて思いだしたのがkakasiというソフトウェアです。

図2 kakasiのホームページ

図2 kakasiのホームページ

kakasiは"KAnji KAna Simple Inverter" の略で,漢字かな混じり文をひらがな文やローマ字文に変換するためのソフトウェアです。

kakasiとは変った名前のように聞こえますが,元々はEmacsの世界で開発され,筆者も愛用しているSKK(Simple Kana-Kanji conversion program)というかな漢字変換ソフトウェアがあり,このソフトウェアが利用している膨大な辞書データを元に,漢字からかなへ逆変換するソフトウェアとして開発されたので,SKKの綴りを逆転させたKKSという頭文字が先に決まって,そこからkakasiという名称が考案された,という経緯があるそうです。

実のところkakasiは1990年代の前半に生まれたかなり古いソフトウェアです。当初は,日本語の学習者用に漢字かな混じり文をひらがな文やローマ字文に変換するために開発されたそうですが,90年代の後半には全文検索ソフトウェアNamazuと組み合わせて,HDD内のテキストファイルを全文検索するために広く利用されていました。

しかしながら,2000年代になるとGoogleに代表されるWebベースの全文検索システムが急速に普及し,Namazuやkakasiはあまり使われなくなり,開発も停滞するようになりました。kakasiのバージョン2.3.4が公開されたのが2001年9月,誰もがこのバージョンで開発が途絶えてしまったと思っていました。しかし,2014年1月になって新しいバージョン2.3.5が公開され,その2ヵ月後にはいくつかのバグを修正したバージョン2.3.6が公開されました。

上記のような理由で,Plamo Linuxも含め最近のLinuxディストリビューションにはkakasiの最新版のパッケージは用意されていないようです。kakasi自身のビルドやインストールは容易なので,以下の操作を試してみたい方は上記サイトからkakasiのソースコードを入手して試してみてください。

kakasiは標準入力から受けとった漢字かな混じり文を,引数で指定した指示に応じてひらがな文やカタカナ文に変換します。

$ echo '柿食えば鐘が鳴るなり法隆寺' | kakasi -JH
かきくえばかねがなるなりほうりゅうじ

kakasiでは変換する文字の種類を引数で指定します。'J'が漢字,'H'がひらがな,'K'がカタカナ,'E'がその他の文字を意味し,引数の慣例である'-'を付けた'-(from)(to)'の形でそれぞれの文字種間の変換を指示します。上記の'-JH'は「漢字(J)」「ひらがな(H)」に変換する指示で,これを'-HK'とすると,⁠ひらがな(H)」の部分が「カタカナ(K)」に変換されます。

$ echo '柿食えば鐘が鳴るなり法隆寺' | kakasi -HK
柿食エバ鐘ガ鳴ルナリ法隆寺

文字種の変換は複数指定することも可能で,'-JK'と'-HK'を指定すれば全体がカタカナに変換されます。

$echo '柿食えば鐘が鳴るなり法隆寺' | kakasi -JK -HK
カキクエバカネガナルナリホウリュウジ

また,今回は利用しないものの,全文検索用のインデックスを作成するために,入力された文章を単語ごとに区切る'-w'というオプションも用意されています。

$ echo '柿食えば鐘が鳴るなり法隆寺' | kakasi -w
柿 食え ば 鐘 が 鳴る なり 法隆寺

「故郷」「ふるさと」と読むような当て字読みには個別対応が必要なものの,⁠一人」「ひとり」かといった表記揺れは吸収できそうなので,まずはkakasiを使って自動で楽曲リスト全体にひらがなの読みを追加し,その後,手動でチェックすることにして,楽曲リストを操作するためのコードを書いてみました。

著者プロフィール

こじまみつひろ

Plamo Linuxとりまとめ役。もともとは人類学的にハッカー文化を研究しようとしていたものの,いつの間にかミイラ取りがミイラになってOSSの世界にどっぷりと漬かってしまいました。最近は田舎に隠棲して半農半自営な生活をしながらソフトウェアと戯れています。

URLhttp://www.linet.gr.jp/~kojima/Plamo/index.html

コメント

コメントの記入