2011年10月28日

GNOME Orca で日本語を使う方法(Ubunt11.10向け) 準備

Linux には GNOME Orca というスクリーンリーダーがありますが、現在日本語の利用ができません。そこで少し改造して日本語でしゃべるようにしました。その方法を以下に紹介します。まだ実験的なものなので、その点を御理解なさってお使いください。できれば、日常使われるマシンではなく、ヴァーチャルマシン上での利用をお勧めします。

なお、以下の説明は視覚障害者がご自身でできる手順としては書いてありません。音声ガイドを導入する前段階の手順ですので、サポートの方に手伝ってもらう必要があります。

■準備

Ubuntu11.10 がインストールされたパソコンを用意します。パソコンの能力が十分ならばWindowsやMac上にインストールした VMWare Player 上に構築したほうが、手軽に試せると思います。それから確実にアップデートを実行し、確実に最新の状態にしておいてください。アップデートしていない場合、Nautilus (GNOMEでのエクスプローラのようなもの)の動作がおかしくなる可能性があります。

これはVMWare Player上に構築したばかりの Ubuntu11.10 です。

a

右上のメニューから、アップデートマネージャを呼び出して、最新の状態にしておきます。

c

最新の状態にしたら、お好みで「端末」を左横のランチャに追加します。今後の作業はどうしてもコマンドラインからの入力が増えますので、手軽に呼び出せるようにしておきます。

ALT+F2(ALTキーを押しながらF2キー)で「端末」もしくは「terminal」と入力し、エンターを押すと端末が起動します。

e

起動すると左のランチャーに起動している間アイコンが現れます。このアイコンの上で、右クリックして出てくるメニューの「ランチャーに常に表示」を選びクリックします。

h

これで端末の起動が楽になります。またキーボードのショートカットも利用できるようになって、上の画像の例だと、Windowsキーを押しながら、上段数字の「9」を押すと、端末が現れるようになります。この数字は上からの順番なので、順番を入れ替えれば別の数字になります。アイコン上でマウスを左ボタンをずっと押さえているとアイコンが移動できるようになります。

端末が自由に出せるようになりましたが、ディレクトリの移動を手入力するのは面倒ですので、今度は開いている任意のフォルダで端末が開けるように設定します。Windowsでシフトを押しながら右クリックすると「コマンドウィンドウをここで開く」というメニュー項目が出てきますが、それと同じことをできるようにするわけです。

端末を開き、

sudo apt-get install nautilus-open-terminal

と入力しエンターをすると、パスワードの入力が求められます。ここで自分のログインパスワードを入力すると、パッケージがインストールが開始されます。完了すると、以後、作業中のフォルダ内で、右クリックをすると、「端末の中に開く」という項目ができます。これを使うと、そのフォルダにあるファイルなどに対して操作がしやすくなります。

menu

準備の最後は、標準のOrcaのアンインストールです。標準でインストールされているOrcaをコンピュータから外しておきます。端末を開き、

sudo apt-get remove gnome-orca

と入力します。パスワードを求められるので、入力すると、削除が始まります。これで準備が整いました。
続く





posted by takayan at 00:21 | Comment(0) | TrackBack(0) | GNOME Orca | このブログの読者になる | 更新情報をチェックする

2011年10月30日

GNOME Orca で日本語を使う方法(Ubunt11.10向け) インストール

GNOME Orca を少しいじって、Ubuntuに日本語スクリーンリーダーを導入する方法の続きです。前回「GNOME Orca で日本語を使う方法(Ubunt11.10向け) 準備」は準備だけでしたが、今回はいよいよ本番のインストールです。

前回、書き忘れていましたが、「端末の中に開く」は少なくともログアウトしないと有効になりません。

GNOME Orca には日本語を処理する部分がないので、これを以前作ったmbttsというマルチプラットフォームのPythonのモジュールを組み込んで使います。その改造を行い、新しい日本語対応のOrcaを組み立てるのが次のファイルのです。

ダウンロード→ orca-3.2.1-jp_scripts-003.tar.gz

なお、orca-jp 関連ファイルはしばらく orca-jp-alpha フォルダに置いておきますので、最新のものを使ってください。

上記のファイルをダウンロードします。どこに置いてもいいですが、今回はわかりやすいように「ドキュメント」に移動させます。

このファイルの上にマウスを持ってきて、右クリックしてコンテキストメニューを出し、その中の「ここに展開する」を選びます。

orca1

「orca-3.2.1-jp」というフォルダができるので、フォルダの中に入ります。中には4つのファイルがあるはずです。

・prepare.sh
・install.sh
・orca-3.2.1-003.patch
・ap_inst.sh

それぞれの役割は、次のようにしています。

・prepare.sh
ビルドやインストールに必要なファイルをダウンロードしたり、展開する手順が書いてあります。

・install.sh
日本語が使えるように修正し、ビルドしインストールします。前もってprepare.shを実行する必要があります。

・orca-3.2.1-003.patch
本来のorcaとの差分です。ほとんどは翻訳チームの方々が訳されていますが、台詞の部分は動作に支障を来すので意図的に訳されていません。そういう部分を訳しています。しかしその日本語訳がまだ未完です。少しずつ修正していく予定です。現在は003です。

・ap_inst.sh
Linux版AquesTalk2の体験版を利用できるようにするスクリプトです。アクエスト社のホームページに行って、Linux版の体験版をダウンロードして、先ほどのフォルダの中に入れたあと、このスクリプトを実行すると、mbttsの機能として、AquesTalk2の音声を使えるようになります。なお体験版は機能が制限され、発音できない文字があります。

orca2

なお、以前のスクリプトでは、管理者権限で実行するコマンドも他のものも一緒に記述していましたが、ログインパスワードを求めるコマンドを、動作を把握するのが面倒な長いスクリプトの中に入れるのは行儀が悪いと思いましたので、二つのファイルに分けることにしました。prepare.sh に記述されているスクリプトは管理者権限は必要ありません。一方 install.sh は内部でsudoを使って管理者権限で実行するコマンドが記述してありますが、コマンドの単純な羅列ですので、内容は把握しやすくしくなっています。

 

■ スクリプトの実行

まず、これは準備編に書くべきだったかもしれませんが、端末を開き、次のコマンドを入力し、エンターを押して実行してください。差分を使ってプログラムを修正できるようになります。

sudo apt-get install patch

次に、スクリプトに実行許可を与えます。現在のフォルダで端末を開いて「chomod a+x *.sh」でもいいですが、ここではマウスを使ってやってみます。

「.sh」で終わっている三つのファイルをコントロールキーを押しながら選択し、右クリックをしてメニューを出し、プロパティを選びます。

orca5

すると、プロパティのウィンドウが開きます。「基本」、「アクセス権」、「開き方」とタブが並んでいますが、その中の「アクセス権」を選びます。中程にある「プログラムとして実行可能」をチェックします。そして右下の「閉じる」ボタンを押して閉じます。

orca6

これで、スクリプトが実行可能になりました。

現在のフォルダの中でファイル上ではない余白の部分を右クリックして、メニューを出し、「端末の中に開く」を選びます。そして、

./prepare.sh

と入力しエンターします。すると、ダウンロードが始まります。残り時間を表示しながらダウンロードが数回行われます。展開の時は大量のメッセージが流れていきます。すべてが終わると、$の横で四角いカーソルが点滅します。

今度は、

./install.sh

を入力しエンターします。するとログインパスワードの入力が求められるので、入力してください。そのあと大量のメッセージが流れ出します。すべてが終わると、同じようにカーソルが点滅します。

これで、インストール完了です。

 

■ 初期設定

端末を開き、

orca -t

と入力しエンターします。初回起動ならば「orca」とだけ入力しても同じですが、テキストベースの設定はこのオプションをつけて起動させます。いくつかの質問が出されますので、それに答えていきます。

読み上げシステムを選択してください:
1.読み上げディスパッチャ
2.mbtts
番号を入力してください。

これに対しては、mbttsの方の「2」と答えます。絶対「1」と答えてはいけません。このシステムは日本語の文字列に対応していないので、最悪の場合、設定画面も開けず、終了時の「さようなら」がしゃべれなくて終了させることもできない状態になります。

そのほかの質問には次の解答をします。なおこの設定は後からいくらでも変更できます。

音声の種類を選択してください:    1
単語毎にエコーを返しますか?:    y
キーエコーを返しますか?:    y
アルファベットと数字、句読点のキーエコーを有効にしますか?:    y
修飾キーのキーエコーを有効にしますか?:    y
ロック・キーのキーエコーを有効にしますか?:    y
ファンクション・キーのキーエコーを有効にしますか?:    y
アクション・キーのキーエコーを有効にしますか?:    y
キーボード・レイアウトの選択:    1
点字を有効にしますか?:    n
点字モニタを有効にしますか?:    n

最後にいったんログアウトしてください。

 

■ Orcaの実行

いよいよ実行です。

ALTキーを押しながらF2キーを押して、orcaと入力して、エンターします。
すると、白杖を持ったオルカのスプラッシュ画面が出てきて、四つのボタンの並んだ
横長の小さなウィンドウが現れます。

orca3

キーボードの左右矢印キーを動かすと、フォーカスがボタンを移動し、ボタンの名前を読み上げてくれるはずです。

とりあえず、今回は「終了」ボタンを押して、終了してください。このボタンを押すと終了するかどうかの確認ダイアログウィンドウが出ますので、終了を選んでください。

orca4


申し訳ありませんが、日本語のOrcaは不安定なので、もしかするとここで終了しても閉じないこともあります。しばらく待っても変化がないときは、お手数ですが、Ubuntuを再起動してください。

Orcaを起動中は左側のランチャーにもオルカのアイコンが出てきます。必要ならば、このアイコンの上で右クリックをして「ランチャーに常に表示」を選んで登録してください。

 

■ ログイン時に自動的に起動できるようにする

いろいろ使ってみて使えそうでしたら、ログイン時に自動的に起動できるように設定してみてください。

画面右上のボタンをクリックして、メニューを出し、一番上の「システム設定…」を選びクリックします。すると、次のウィンドウが出てきます。

orca8

その中の「ユニバーサルアクセス」をクリックすると次のウィンドウが出てきます。

orca9

このウィンドウの下段にある「スクリーンリーダー」のスライドスイッチを「オン」にします。設定が終わったら、左上の×印をクリックして、閉じます。

以後、ログインするとすぐにOrcaが起動するようになります。

 

■ 最後に

インストールの方法を詳しく書いてきましたが、はっきり言って、この日本語版はまだ動作が不安定なところがあります。問題が解決しないようでしたら、すぐに使用をやめてください。そういう状態です。

まだ日本語版は実用レベルには達してないように思います。改善すべき点はまだまだたくさんあります。少しずつ積み重ねて、よりよい環境ができればいいと思います。



posted by takayan at 00:57 | Comment(0) | TrackBack(0) | GNOME Orca | このブログの読者になる | 更新情報をチェックする

2012年04月04日

そろそろ GNOME Orca を本格的に日本語対応させないと

Ubuntu 12.04のベータ2 をいろいろいじっていますが、Open JTalk が公式リポジトリに入っていて、簡単にインストールできるようになってますね。

参考
日本語の文字列をオーディオデータに変換するOpen JTalkの概要とインストール(2012年1月上旬時点) - 試験運用中なLinux備忘録
Open JTalk    [ja.nishimotz.com]

Orca への日本語対応をやり始めて二年も経つのに全然進展できてません。パッチをあてる余り美しくない解決策のままです。Open JTalk が利用しやすくなったからには、この機会に本格的に対応させることにしましょう。

とりあえず、音読対応のメッセージカタログ(ベータ) ja.po を Orca3.4.0 向けに更新しました。これ単体ではまだ何もできませんが、とりあえず。



posted by takayan at 19:40 | Comment(0) | TrackBack(0) | GNOME Orca | このブログの読者になる | 更新情報をチェックする

2013年11月10日

gnome orcaでespeakに日本語をしゃべらせる方法

現在書いているものが終わるまで他のことを書かないでおこうと思ってましたが、面白いアイデアが浮かんだのでここでプログラミングの話題を書くことにします。

集中力が切れたので、気分転換にUbuntu13.10を入れていろいろ試していました。久しぶりに起動したスクリーンリーダーgnome orcaのeSpeakの音声が、仮名文字や漢字のところで、ジャパニーズレターとかチャイニーズレターと言うようになっていました。以前は日本語文字列のところで意味不明な記号の羅列を延々と読み上げていたので、親切な修正と言えます。うるさいことには変わりないですが。

ちなみに、gnome orcaをオン/オフする標準のキーボードショートカットは、altキー+superキー(win)+sキーです。マウスでの操作だと、画面右上の[システム]ボタンを押して、出てきたメニューの中から[システム設定]を選び、開いた「システム設定」ウィンドウの中の[ユニバーサルアクセス]ボタンを押して、[視覚]タブにあるスクリーンリーダーのトグルボタンで切り替えます。

検索してみると、NVDA日本語版のてくてくラボのespeakのページにespeakのその指摘がありました。半年以上前の記事です。そこにはen_extraファイルを使って言語enで日本語を読ませる短いですが興味深い実験が書いてありました。

これはorcaに使えます。orcaの標準音声はespeakのenなので、これで日本の文字を発音できるようになれば素晴らしいです。さっそく勢いで作ってみました。

英語の発音記号を使ってカナ文字の発音をen_extraに定義していきます。このファイルを追加して、発音辞書であるen_dictにその内容を反映させると、eSpeakでカナ文字を発音してくれるようになります。Windowsでこの作業を行うには、eSpeakのホームページからespeak-1.47.11-win.zip や espeakedit-1.47.11-win.zipをとってきてインストールしておく必要があります。

発音辞書の設定は、espeakがインストールされた場所のdictsourceフォルダにあるrules、list、extraファイルで行います。その実行ファイルはcommand_lineフォルダにあるespeak.exeです。英語enの場合は次のコマンドになります。

espeak --compile=en

dictファイルはespeak-dataフォルダに生成されます。なお最近のWindowsでは管理者権限で実行しないと、VirtualStore内に作られてしまいます。

本当は言語jaを創設すべきところなんでしょうが、理解するのに時間がかかりそうだったので、このまま英語の追加の発音として作ってみました。今後、日本語独自のrules、list、extraファイルを作る場合は、eSpeakのサイトにあるPronunciation Dictionaryのページを参考にすればいいはずです。

せっかくなので、今後のことを考えて、仮名文字単体ではなく、長音、促音、拗音なども合わせて、ある程度の日本語の音節を表現するものを作ってみました。「ん」の発音の区別はしていません。これはカナ文字ではなくローマ字に変換するとやりやすくなるでしょう。他にも漏れてるものもあるかもしれません。発音も間違っているかもしれません。

このen_dictをNVDAにあるen_dictファイルと置き換えると、たどたどしくですが、かなを読み上げてくれるようになりました。同じファイルをubuntuに持っていってgnome orcaのen_dictと置き換えても、うまくいきました。漢字などまだ読めない文字がたくさんありますが、いかにも電子音電子音しているeSpeakの読み上げの中から日本語が聞こえてくると、それだけでも楽しいものです。

具体的なubuntuでのen_dictの置き換えですが、次の通りです。

まず、下記のアーカイブをダウンロードして、展開します。

ダウンロード:orca-3.10.1-espeak-jp_003.zip

(2013/12/13追記 後日作った数値読みの機能を追加したものにアーカイブを差し替えます。またubuntu13.10のorcaが3.10.1になったので対応バージョンも変えます。関連記事「gnome orcaでespeakに日本語をしゃべらせる方法2」 )

このアーカイブの内容は次の通りです。
・en_extra
・en_dict
・katakanize.py
・speechdispatcherfactory.patch

この中のen_dictを使います。新しいこのファイルがあるところで、端末から次のコマンドを実行します。

32ビット版ubuntuの場合、

sudo cp en_dict /usr/lib/i386-linux-gnu/espeak-data/en_dict

64ビット版ubuntuの場合、

sudo cp en_dict /usr/lib/x86_64-linux-gnu/espeak-data/en_dict

ただし別個にespeak関連パッケージをインストールした場合は別の場所のespeak-dataに変わるようです。

 

カナ文字だけならば発音できるようになりました。今度は、漢字の読み方を教えて漢字も読めるようにしてみます。要は漢字をカナ文字列に変換できればいいわけです。この問題の解決には、やはりMeCabを使います。gnome orcaなのでPython3で考えます。

ところが、ubuntuではpython3用のMeCabモジュールはapt-getでまだ入手できません。そのため自分でビルドしインストールする必要があります。修正も必要です。具体的な方法は、「Ubuntu - MeCabをPython3上から使えるようにする - Qiita [キータ]」に書かれています。注意点として、ビルド環境を整えるために、g++やpython3-devなどをapt-getでインストールしておかなければなりません。それから手順には書いてありませんでしたが、setup.pyも入手して実行しました。

ubuntuのpython3でmecabが使えるようになったので、次のような漢字の文字列をカタカナに変換する関数を作りました。(35行目にループ終了後に残ったwordを追加する処理を追加。2013/12/13)

# /usr/bin/env python3
# coding: utf-8

import MeCab
import re

def katakanize(text):
    regexp = re.compile(r'^[\x20-\x7E]+$')
    if regexp.match(text):
    	return text

    tagger = MeCab.Tagger('--node-format=%pS%f[8] --unk-format=%M --eos-format=\n')
    text = tagger.parse(text)
    #text = unicode(tagger.parse(text.encode('utf-8')),'utf-8')

    list = []
    word = ""
    prev = False
    for ch in text:
        if regexp.match(ch):
            if prev:
                word = word + ch
            elif word:
                list.append(word)
                word = ch
            else:
                word = ch
            prev = True
        else:
            if word:
                list.append(word)
                word = ""
            list.append(ch)
            prev = False
    else:
        if word:
            list.append(word)

    result = []
    word = ""
    for ch in list:
        if regexp.match(ch):
            if word:
                result.append(word)
                word = ""
            result.append(ch)
        elif ch == u"ッ":
            if word:
                result.append(word)
            word = ch
        elif ch == u"ー":
            word = word + ch
            result.append(word)
            word = ""
        elif ch == u"ャ" or ch == u"ュ" or ch == u"ョ":
            word = word + ch
        elif ch == u"ァ" or ch == u"ィ" or ch == u"ゥ" or ch == u"ェ" or ch == u"ォ":
            word = word + ch
        elif len(word) >= 1 and ( word[-1] == u"ク" or word[-1] == u"グ" )\
            and ( ch == u"ヮ" or ch == u"ヰ" or ch == u"ヱ" ):
            word = word + ch
        elif len(word) >= 1 and word[-1] == u"ッ":
            word = word + ch
        else:
            if word:
                result.append(word)
            word = ch
    if word:
        result.append(word)

    if result:
        return " ".join(result)
    else:
        return ""

if __name__ == "__main__":
    text = "これは文章変換の実験です。"
    text = katakanize(text)
    #text = katakanize(unicode(text,'utf-8')).encode('utf-8')
    print(text)

最後の数行はテスト用のコードです。python2で試してみるときは、辞書のエンコードを考慮して二か所のコメントアウトした部分を直前の行と入れ替えます。

カタカナ化という名前にしていますが、やっているのはもう少し複雑です。まず、MeCab.Taggerの引数内のf[8]で示している通り、表記ではなく発音の文字列を出力しています。例えば助詞の「は」は「ワ」となります。それから日本語文字とそれ以外を区別して、さらに日本語の場合は今回のen_extraにあるような塊になるように分かち書きになります。 この関数の部分を適当な箇所に貼付けて、その呼び出しをeSpeakに文字列を渡す直前に配置します。例えば変数textに文字列が入っていれば、その直前にtext = katakanize(text)という行を入れます。なおpython2では文字列や辞書のエンコードを考える必要があるので、上記のコメントアウト部分のような記述になります。

それでは具体的な修正方法です。 ここに示す方法はあくまでも実験です。ここに書いてあることを試したいときは、実務機以外、仮想マシーン(VMware PlayerVirtualBox)などにとどめてください。もちろん自己責任でお願いします。orcaのバージョンが変わったときは修正箇所もその影響も変わる可能性もあるので、そのときはあきらめてください。

やることはとてもシンプルです。先ほどやったen_dictをコピーする操作に加えて、一つのファイルにパッチをあてるだけです。その修正対象となるファイルは  /usr/lib/python3/dist-packages/orca/speechdispatcherfactory.pyです。このファイルには、linuxで標準的な音声合成のインターフェイスであるSpeech DispatcherへOrcaからコマンドを送るコードが書かれています。この中の、特に文字列を送って音声を鳴らすspeakコマンドのあるところが修正すべき箇所となります。Speech DispatcherはeSpeak以外の音声合成システムも管理しているので、それぞれの音声合成でカナ文字日本語の処理を用意しておけば、使えるようになるかもしれません。

端末を開いてorcaのバージョンを確認します。次の行を実行します。

orca -v

返ってきた文字列が3.10.1が3.9.92であることを確認してください。このバージョン以外ならば、うまくいくかどうかわかりませんので、あきらめてください。このバージョンだったならば、アーカイブの中のpatchファイルのあるところで、次のコマンドを実行します。問題があったときは、ソフトウェアセンターでorcaをインストールしなおすか、バックアップファイルをもとの場所に戻してください。

cp /usr/lib/python3/dist-packages/orca/speechdispatcherfactory.py speechdispatcherfactory.py
sudo patch /usr/lib/python3/dist-packages/orca/speechdispatcherfactory.py<speechdispatcherfactory.patch

これで、漢字交じりの日本語をカタカナ音節に変換する機構が組み込まれました。Alt+Win+sでOrcaを起動してみてください。

とりあえず、eSpeakの声で日本語をしゃべっています。問題はまだたくさんあります。数字の部分も英文と同じように本来のenで読んでもらうようにしています。そのため数値が英語読みになって、ちょっとおかしな表現になってしまいます。数字を日本語読みにする処理は以前ここでも書いたことがありますが、面倒そうだったので今回は入れていません。それくらいになると別ファイルにするか、モジュールとして独立させた方がよさそうです。他にも実用的にするにはもっと多くの処理が必要になってくるでしょう。

言語jaを作って、日本語用の音素を作って、別のfactory.pyを作って、さらにアクセント情報のあるunidicかOpen JTalkの辞書を使ったり、いろいろできるはずです。日本語の音声が必要な人たちに標準で用意できるようになると素晴らしいでしょう。

また新たな中途半端なものを作ってしまったわけですが、これを足掛かりに先に進めればいいと思います。



posted by takayan at 23:44 | Comment(0) | TrackBack(0) | GNOME Orca | このブログの読者になる | 更新情報をチェックする

2013年12月09日

gnome orcaでespeakに日本語をしゃべらせる方法2

前回の続きです。数字を日本語で読むようにしてみました。

ファイルのダウンロード先はこの記事の最後に書いてあります。利用法は前回書いたとおりです。現時点でUbuntu13.10で使われているGnome orcaのバージョンは3.10.1なので、今回のパッチはこのバージョン向けのものです。他のバージョンで動くかどうか分かりません。Ubuntu以外で動くことはFedora 19で確認しましたが、speechdispatcherfactory.pyやen_dictの場所はシステム毎に確認する必要があります。またPython3用のMeCabモジュールもインストールしておく必要があります。

日本語の中の数字の読みの規則を明文化していくと、ほんとに複雑なことを頭の中で処理しながら日本人が生きていることを思い知らされます。漢数字に算用数字、漢数字でも位取り表記で使ったり、さらに万進数の位の漢字に算用数字をくっつけた折衷表記をしたり、その算用数字は整数だけでなく小数を使ったりもします。

それだけでなく読み方も大変です。本や匹など助数詞が後ろに付くと、数字は促音化したりしなかったり、助数詞の方は濁音になったり、半濁音になったり、ならなかったり、規則的な傾向はあるのだけれど、覚えなくてはならない例外がいくつもあります。四はヨンなのか、ヨなのか、シなのか、助数詞によって使い分けています。七もそうです。九もそうです。

そういう日本語の複雑な数字の読みをGnome Orca のespeakで発音できるようにプログラムを作ってみました。日本語のスクリーンリーダーや、日本語の音声合成ソフトでは当たり前の機能ですが、いざ作ってみるといろいろ面倒でした。

作っている間ずっと考えていたのは、こういうのは一人のプログラマが個人的に読み方を決めてはいけないなということです。日本語を普段使っている人なら違和感のある表現もいろいろくみ取って理解してもらえますが、それに期待して手抜きしたものが、日本語学習者にそれが本来の形だと思い込まれても困ります。また音声ガイドという性質上、一般的な日本人の日本語よりも、アナウンサーの日本語を手本にすべきだと考えました。

面白かったので、実験的にいろいろなことをしています。具体的には次の読みをできるようにしてみました。
・数字と助数詞によって起きる発音の変化は『NHKことばのハンドブック』の第5章の表を手本とする。
・算用数字の直後の英字の列は単位でないかを確認し、そうならばカタカナ表記に置き換えて読む。
・コロンで区切った2桁:2桁:2桁の数値は時刻とする。
・スラッシュで区切った4桁/2桁/2桁の数値は日付とする。ハイフンで区切られた同様の日付は直後に時刻があるときだけ日付とする。これに関連して、括弧で囲まれた曜日を表す1文字の漢字を常に曜日として読み上げる。
・ハイフンや2つ以上のピリオドでつながれた算用数字は一字ずつ読む。
・電話番号、郵便番号だとはっきり分かるものはハイフンを「ノ」と読む。
・コンマによる桁区切りは3桁だけでなく4桁区切りにも対応する。
・位を表す漢字と位取りの数字の組み合わせの読みは、万の位以上や小数の算用数字にも対応する。算用数字と組み合わせる位の漢字は万進数に限らず、百万や千などの位に対応する。このとき本来の値で読み替える。
・整数の左側、小数部分の右側にある桁埋めの「0」は読み上げない。
・16進数と2進数の接頭語として0xと0bを認識し、ついでに読み終わった後に十進数での値も読み上げる。
・URLに現れるパーセントエンコードは16進数数字として読み上げず、デコードして文字として読み上げる。

eSpeakの方ですが、jaの作り方は分かりましたが、他にもファイルをインストールしないといけなくなるので、今回もen_dictの置き換えだけにします。前回は、音声表記をローマ字に変えた方が細かな発音指定ができるんじゃないかなと考えていまいしたが、結局カタカナの方が都合がいいことに気がつきました。漢字仮名交じり文からカタカナにするだけでも情報をたくさんそぎ落としてしまっているのに、これをアルファベットにしたら、文中の英単語と日本語との区別ができなくなってしまいます。意外にこの区別は便利です。そういうわけで、今回もカタカナで作っています。ほんの少し、「ンム」を[m]、「ング」を[ng]を表すように変えてみました。なお日本語の中の無声音化は、eSpeak側で記述するルールで対応できるかもしれませんが、まだ理解できていないので今回はやっていません。


アーカイブに入れてあるkatakanize.pyは動作の確認ができるように、標準入力の1行をespeakで解釈できる形式で出力するようにしています。次のコマンドでキーボードからの入力を読み上げてくれます。なお以前はちょっと書き換えれば、python2で動くようにしていましたが、python3のみで動きます。

python3 katakanize.py|espeak

また、test.txtにutf-8の文字コードで日本語を1行書いておくと、次のコマンドでwavファイルを作ります。

cat test.txt|python3 katakanize.py|espeak -wtest.wav

ダウンロード:orca-3.10.1-espeak-jp_003.zip

更新履歴
コンマの区切りが思ったようになっていなかったので修正しました。2013/12/13
テスト用のコードを入れたままにしていたので修正しました。2013/12/16



posted by takayan at 08:15 | Comment(2) | TrackBack(0) | GNOME Orca | このブログの読者になる | 更新情報をチェックする
×

この広告は180日以上新しい記事の投稿がないブログに表示されております。