【コラム】

日本語で10行プログラミング

78 単語帳に読み上げ機能をつける

 

78/90

開発日誌~我が家もついにマルチディスプレイ

私は、主にノートPCで開発したり原稿を書いたりしています。最近のノートPCはバッテリが長時間持つので、電車の中、街角、家の中(居間・トイレなど)のいろいろなところに持ち歩いて仕事をしています。それで十分満足していたので、ノートPCさえあれば他には何もいらないなぁと思っていたのです。

ところが、先日より会社で各机に液晶ディスプレイが備えられ、ノートPCに液晶ディスプレイをつなげて作業ができるようになったのです。デスクトップの広さが2倍になり、左の画面でネットで調べ物、右の画面で原稿を書くことができるようになりました。プログラムを書くときも、左で実行テスト、右でプログラムを書くと役割を分けて使うことができます。

この便利な環境に慣れてしまうと、もう後戻りはできません。液晶ディスプレイは薄いので、机の上に乗せてもそれほど邪魔にならず、値段が安くなっているので買い時です。それでとうとう我慢できず個人用に買ってしまいました。マルチディスプレイのおかげで、とにかく作業が快適です。

快適と言えば先日、足のローラー式マッサージ機械を頂くという幸運がありました。それで仕事場の机の足元にマッサージ機を設置しました。作業の合間にごろごろと足のマッサージを行うことができます。新しい液晶ディスプレイで映画を見ながらマッサージされていると、仕事が溜まっていることをすっかり忘れてリラックスしてしまうのでした。

単語帳に読み上げ機能をつける

今回は、連載75回76回で作った英単語帳をさらに改造して、英単語の読み上げ機能を実装してみようと思います。単語帳に読み上げ機能があれば、学習効果がさらに高くなることでしょう。

読み上げには、Microsoft Agentという機能を利用します。Agentは、Officeにあるアシスタント(イルカやロボット)のようなマスコットキャラクターを操作することで、文章の読み上げが可能です。

ただしWindows XPでは、この読み上げエンジンが標準搭載されているわけではなく、追加コンポーネントをインストールする必要があります。そこで今回は、追加コンポーネントのインストールと簡単な使い方、そして英単語帳に読み上げ機能を追加するところまでを解説します。

Microsoft Agentのインストール

はじめに、Microsoft Agentのインストール方法を紹介します。Microsoft Agentの機能を使うには、いくつかのコンポーネントをダウンロードしてインストールする必要があります。

ダウンロードのページは英語なのですが、英語だけでなく、日本語や韓国語に対応した読み上げエンジンをダウンロードできます。また、以下のコンポーネントもダウンロードできます。

  • Microsoft Agent core components
  • Language component
  • Agent character files
  • Text-to-speech engines (American English / Japanese)
  • SAPI 4.0 runtime
  • Speech recognition engines
  • Speech control panel

Windows XPの場合、最低限必要なのは、以下の2つでのコンポーネントす。しかし場合によっては、これだけでは動かない場合もあるようです。必要に応じてコンポーネントをダウンロードしてみてください。

  • Text-to-speech engines (American English / Japanese)
  • SAPI 4.0 runtime

ダウンロードしたファイルは、実行ファイル形式になっているので、ダブルクリックしてインストールします。

動作テスト

なでしこのエディタに以下のように書いて実行してみてください。

エージェントマーリン召喚
「こんにちは」とエージェント言う

Agent が表示され挨拶をします

うまくAgentがインストールされていれば、「こんにちは」とテキストを読み上げます。Agentが表示され、フキダシが出ても読み上げがされなければ、それはText-to-speechエンジンとSAPIランタイムがインストールされていない状態です。その際はコンポーネントのインストールが必要です。

Agentの使い方

では、簡単なAgentの使い方を見てみましょう。

Agentを使うときには、まず、Agentを呼び出す必要があります。なでしこでは、「(エージェント定義ファイル)から(キャラクタ名)をエージェント召喚」という書式で、好きなAgentを呼び出すことができます。

ただし、いちいち定義ファイルなど指定するのが面倒なので、標準的なキャラクターである「マーリン」を呼び出す命令が用意されています。以下のように一行書くとマーリンを呼び出すことができます。

エージェントマーリン召喚。

次に、エージェントに読み上げをさせるには、「(内容)とエージェント言う」と書きます。

エージェントマーリン召喚。
「こんにちは」とエージェント言う。

「こんにちは」の部分を、適当なテキストに置き換えるとその通りに読み上げます。

次に英語を喋らせて見ます。英語を喋らせるには"「英語」へエージェント言語変更"と書きます。

エージェントマーリン召喚。
「英語」へエージェント言語変更。
「Hi, My name is Jane.」とエージェント言う。

もし、これを書かずに英語を喋らせると……(笑)。どうなるのかは面白いので、ぜひ自分で試してみてください。

他にもAgentの話すトーンを変更したり、速度を変更できます。以下は話す速度を変える例です。

エージェントマーリン召喚
120へエージェント速度変更
「青巻紙、赤巻紙、黄巻紙」とエージェント言う
150へエージェント速度変更
「青巻紙、赤巻紙、黄巻紙」とエージェント言う
170へエージェント速度変更
「青巻紙、赤巻紙、黄巻紙」とエージェント言う

声の高さを変えるには以下のようにします。

エージェントマーリン召喚
30へエージェントトーン変更
「なでしこが楽しい」とエージェント言う
90へエージェントトーン変更
「なでしこが楽しい」とエージェント言う
200へエージェントトーン変更
「なでしこが楽しい」とエージェント言う

パラメーターを変更するといろいろな声色で話してくれるので、遊ぶだけでも十分に楽しめます。

10行プログラム

では、読み上げ機能付の単語帳を作ってみましょう。プログラムの流れは以下のように組み立ててみました。

  1. どの単語データを使うか選択する
  2. データを読み込む
  3. 単語の数だけ以下の4~7を繰り返す
  4. 4.エージェントが英単語を読み上げる
  5. 英単語をダイアログに表示する
  6. エージェントが単語の意味を読み上げる
  7. 意味をダイアログに表示する

プログラムは、本連載の76回目で作ったものに、読み上げ機能を加えたものになっています。プログラムを実行すると、単語データファイルを選択するダイアログが出ますので、本連載の75回、76回で作成した英単語データを指定します。そして、単語データをAgentが単語を読み上げます。

以下がなでしこの10行プログラムです。

エージェントマーリン召喚。#1
「.csv」のファイル選択。#2
もし、それが空ならば、終わり。#3
それを開き、CSV取得して反復 #4
  問題=対象【0】。#5
  答え=対象【1】。#6
  「英語」へエージェント言語変更。#7
  問題をエージェント言う。問題を言う。#8
  「日本語」へエージェント言語変更。#9
  答えをエージェント言う。答えを言う。#10

Agentが単語を読み上げます!

1行目でAgentを呼びます。2行目でCSVファイルを選択するダイアログを表示します。3行目では、キャンセルが押されたときに終了するようにします。4行目では、ファイルを開いて各行を繰り返し実行するように指定しています。5行目、6行目では、繰り返し対象の行から問題・答えを切り出します。

7行目では、エージェントの言語を「英語」に切り替えます。8行目では、問題を読み上げ、ダイアログで表示します。9行目では、エージェントの言語を「日本語」に切り替えます。10行目では、答えを読み上げ、ダイアログで表示します。

改造のヒント

今回のプログラムでは、単語を読み上げるだけでテスト機能は省略してしまいました。そこで、せっかくの読み上げ機能を活かす意味でも、テスト機能をつけて効果的な学習に使える単語帳を作ってみてください。

また、読み上げの機能は単語帳だけでなく、ソフトの機能紹介やナビなど、もっといろいろなことにも応用できると思います。Agentを利用して、ぜひ面白いプログラムを作ってみてください。

78/90

インデックス

連載目次
第90回 10行プログラミング最終回~10行プログラミングを振り返って
第89回 フォルダ一括圧縮
第88回 テキストエディタに貼り付けたExcelの表を見やすく整形する
第87回 一発加算電卓
第86回 ブログにHTMLソースを貼れるよう変換する
第85回 カード式メモ帳
第84回 時間電卓を作る
第83回 アスキーアート地図エディタ
第82回 縦書き風テキスト作成ツール
第81回 Excelシートの比較を行う
第80回 ノルマ計算機
第79回 高速バックアップ
第78回 単語帳に読み上げ機能をつける
第77回 ホームページのバックアップツール
第76回 英単語帳を作成する(その2)
第75回 英単語帳を作成する(その1)
第74回 メモリカード挿入でデータをコピーするツール
第73回 モールス信号ソフトの作成
第72回 フォトCDランチャーを作る
第71回 残暑見舞い作成ツールを作る
第70回 画面キャプチャプログラムを作る
第69回 様々なルールに対応するビンゴシートのプログラムを作る
第68回 ビンゴカードを作る
第67回 ビンゴマシンを作る
第66回 パスワードマネージャの作成
第65回 アンドゥ機能をつける
第64回 テキストの比較ツール~FCフロントエンド
第63回 システム情報クリップ
第62回 飲み会電卓を作る
第61回 バイナリエディタの作成
第60回 メールフッタ作成ツール(その2)
第59回 メールフッタ作成ツール(その1)
第58回 プロセス監視ツールを作成する
第57回 TODOメモを作る
第56回 携帯電話をテキストリーダーに使う(2)
第55回 携帯電話をテキストリーダーに使う(1)
第54回 「オープンソースカンファレンス2006 Tokyo/Spring」に参加しました
第53回 10行でチャットソフトを作る(2)
第52回 10行でチャットソフトを作る(1)
第51回 プレゼンタイマーを作る
第50回 カラーピッカーを作る
第49回 簡単な暗号作成プログラム
第48回 お手軽データベース「SQLite」を使う
第47回 CUI(コマンドライン)環境を拡張する
第46回 デスクトップ画像を記録するプログラム
第45回 市外局番で住所を調べる検索プログラム
第44回 コマンドライン型ランチャーを作る
第43回 文字数カウンタを作る
第42回 日本語でバッチ処理
第41回 イベントドリブンと電光掲示板
第40回 なでしこでWindowsの「送る」メニューを使いやすくする
第39回 同人音楽即売会M3に参加して思ったこと
第38回 画像のサムネイル作成
第37回 なでしことExcelで行事予定カレンダーを作ろう
第36回 なでしことExcelで月間カレンダーを作ろう!
第35回 なでしことExcelで年間カレンダーを作ろう
第34回 急な電話にも安心、意外と便利な「手書きメモ」
第33回 携帯電話のアドレスデータを取り出す
第32回 記念日カウンターを作る
第31回 顔文字入力支援ソフト
第30回 アスキーアートのためのエディタ
第29回 HTTPサーバーを作る
第28回 手紙のあいさつ文を作成するプログラム
第27回 ギターコードの構成音を表示
第26回 音楽の再生スピードを変える
第25回 ミニスライドショーを作る
第24回 撮影日で写真を振り分け
第23回 PSP用テキスト画像の作成
第22回 金種計算
第21回 パスワードを自動生成
第20回 携帯メールでWEBを更新する
第19回 時間の使い方を反省するプログラム
第18回 ウェブを画像でキャプチャ
第17回 ラーメンタイマーを作る
第16回 画像のトリミングツール
第15回 ごみの分別カレンダー
第14回 デスクトップ検索ツール
第13回 フォント見本帳
第12回 セピア調の画像ビューワー
第11回 健康チェック
第10回 10行で壁紙にらくがきする
第9回 WEBサイトの更新チェッカー
第8回 WEBページのリンク切れをチェック その2
第7回 WEBページのリンク切れをチェック
第6回 音楽ファイルの整理 - メディアタグから自動フォルダ分類
第5回 請求書の自動作成・印刷~Word連携技
第4回 重要データのバックアップ術
第3回 10行ニュースリーダーを作ろう!
第2回 なでしことは その2
第1回 なでしことは? その1

もっと見る

人気記事

一覧

イチオシ記事

新着記事