Indic Transliterator/解説

概略

 Unicodeのインド系文字の文字列を入力して、どの文字体系かを判別して、伝統的なインド学で用いられる特殊記号付きローマ字に翻字するためのJavaScriptユーティリティーです。ファイル作成はできません。必要に応じて出力されたものをコピーしてテキストエディタなどに貼り付けてください。パソコンにダウンロードして使うこともできます。必要なファイルは、ind2.html(入出力インターフェイス), ind2tr.js(プログラム定義)の2つです。それぞれ単一のファイルとして保存して同じフォルダーに置いてください。「Webページ完全」で保存すると、プログラム格納用にフォルダが作られ、このフォルダを参照するようにファイルが書き換えられます。

保存用リンク
ind2.html
ind2tr.js

変更履歴

05/15/2006 Malayalamが置換されないのを修正(16進と10進の混同)

必要環境

 ブラウザでJavaScript[スクリプト]の実行を有効にしてください。お使いのパソコンに対応するフォントがない文字は表示されませんが、フォント表示はなくても変換は行います。出力にUnicode(特殊記号つき)文字を指定した場合やIPAを指定した場合は、お使いのパソコンに対応するフォントがない部分が正しく表示されません。IPA(国際音声字母)はじめ、Unicodeに準拠した区別符号の充実したフォントとしては、Summer Institute of Linguistics(www.sil.org)のDoulos SIL, Charis SILなどがあります。

仕組み

 インド国内で使われているインド系文字のUnicode符号化は、インド国内規格ISCIIを基にして作られたため、コード番号の最下位の7bitがほぼ対応しています。このことを利用したインド国内各文字汎用のコード変換スクリプトです。このため、各文字セットごとに定義してよいことになっている最下位7bit0x70以上の部分に関しては、ごく限られた対応しかしていません。
 このスクリプトでプログラム化されている伝統的な西洋インド学のローマ字転写は、(文字の違いに関する情報のほか)本来のコードで区別されている母音字母と母音記号の違いに関する情報や、子音字が結合字で表現されていたか複数の文字で表記されていたかに関する情報を切り捨ててしまいます。このため、変換によって生じたローマ字転写は元のインド系文字に復元することができません。根本的に不可逆な変換であるといえます。(東アジア文化にどっぷりつかっている文字の民としては、あまりの思い切りの良さに驚かされてしまいます。)
 プログラムの手順は簡単です。文字列の先頭から、各文字のコードが子音文字のものか母音記号のものかそれ以外かを調べて対応するローマ字に変換し、子音文字の直後に来る文字のコードが母音記号や母音ナシ記号(変換せずスキップ)のものでなければその位置に(インド系文字がこの位置で明示しない)母音"a"を補う、というものです。

 コード変換手順としてはこれが許せる最低限度だと思いますが、さらに改悪するオプションが特色になっています。このままの転写では、特に、短母音"a"の有無に関する表記上の区別が曖昧な北インドの言語を表わしたテキストでは、本来発音されない部分の母音"a"まで転写されることになります。そこで、この部分を(形態素辞書ナシで)構造的に推定し、短母音"a"が発音されると推定されるところにだけ"a"を補う、というオプションを加えています。原文で区別されていないところに恣意的な区別を持ち込むわけです。
 また、もうひとつの組み合わせオプションは、anusvāraと呼ばれる、日本語の「ん」に似た機能をもつことがある鼻音記号の転写法です。この記号の使い方は、インドの文字体系ごと言語体系ごとに、おそらくその言語が鼻母音をもつかどうかや鼻子音の弁別がどれだけ機能的かなどの要素も関わって、ずいぶんばらつきがあります。鼻母音記号としてのみ(もうひとつ別の記号と役割分担して)使われる場合、同一調音点の非鼻音の前に現われる鼻子音のうち、その他の位置での用法をもたない子音のみに使われる場合、対応する鼻子音字があっても「ん」の位置では他の鼻音と区別なく用いられる場合、と考えればよいと思います。このうち、最後の用法で使われていると推定されるものを、すべて実際の発音ごとに区別する、というものです。原文で区別されていない恣意的な区別であるばかりでなく、実は鼻母音を表記していたはずのものをも子音として変換していないか、というリスクを伴います。
 以上のような変換オプションを組み合わせた四通りがあります。かなり凶悪な変換ですが、いちばん害の少なそうな変換との切り替えは可能です。

表示オプション

 Unicodeの区別符号の充実しすぎるほどの充実により、伝統的インド学の転写法のディジタルな再現も(一通り以上のやり方で)可能になりました。これらの特殊記号を用いた表示と、タイプライター時代のインド言語学で用いられていたAscii文字だけを使用する表示が選択できます。これらは原則として一対一に対応しています。これに、インドの地域による微妙な表記慣行の違いを組み合わせました。母音e,oに長短の区別のある南インドでは、a,i,uと同じく長音のほうが長音を示す区別符号で長母音を区別しますが、この区別のない北インドの諸言語ではe,oはつねに長母音扱いであるため、短いほうのe,oのコードに区別符号付のローマ字フォントや文字連続を宛てる、という表示形式です。その他の部分は原則として同じです。

 誤解を招きそうなもうひとつの表示オプションは、Unicode化されたIPA(国際音声字母)を用いるものです。音声記号を用いてはいますが、本質的には文字の転写であって音声表記ではありません。IPA符号もインド文字と同程度に入力するのに手間がかかるフォントであるため、綴り字からある程度までは自動的にフォントが選択できれば便利だろう、という程度の意味しかないユーティリティーであると考えてください。

文字→音声(Text-to-speech)

 音声記号を用いたことで、一見、文字列から(かな書きのような)「読み」を生成しているようにみえますが、音声言語の文字化は、「楽譜」とは異なり、音声情報の一部を犠牲にしても意味に関する情報(の一部)に視覚的に注意を向けさせることによって成り立っているため、「表音文字」とはいえ文字列だけから(機械的に)音声を復元することは不可能です。
 同綴異音語のペアを数多く含み、音声の自動手順による決定が原理的に不可能なことが明白なベンガル語(や英語)のような例はいうに及ばず、一見表音的に見えるヒンディー語でも、たとえば「インド下院」を表わすlōkasabhāという文字連続がlōkasbhāではなくlōksabhāという発音に対応する、ということは、この語がlōka+sabhāという構成をもっている、という綴り字では表現されていない情報に依存しています。文字→音声の自動生成には、音声情報を含む形態素辞書(この場合は区切り決定)の参照が不可欠なのです。

 にも関わらず、いわゆる歴史的な綴り字を使用し綴り字と発音の乖離が著しいことで知られるベンガル語の綴り字から、発音を近似するオプションを試作してみました。断っておきますが、私のベンガル語に関する音声知識は、聞いてベンガル語だとわかる程度です。生成手順は、主としてベンガル文字のUnicode化に係る研究チームの綴り字と発音の関係に関わる報告を参考にしました。手順上、決定できない点は以下のような点です。  意味ありげな音声記号列が出力されますが、細部の情報はかなりいい加減です。古い時代の綴り字からの現代発音の推定、という、言語の史的変化の再現に関心をもつ言語学者にとっては格好のお遊びですが、はたして意味はあるでしょうか。音声情報を付与した形態素辞書を作成するための準備作業としては無意味ではなさそうですが。私自身の経験から言えば、ベンガル語に手をつけなかったひとつの理由は、膨大な結合字を含む複雑な文字の割に、苦労して分析してもあまり発音に結びつかず、一方で音声に関する研究は綴り字と無関係に発音記号だけで行われている、というようなことだったように思います。いろいろな綴り字がどんなふうに変容するかを観察できる、という点では、たとえそれがコンピュータ訛りだとしてもまったく無意味ではないと思うのですが。