(A)実施形態
以下、本発明にかかる音声データ提供装置、音声データ提供方法、および音声データ提供プログラムを、Webによる通信システムに適用した場合を例に、実施形態について説明する。
この通信システムによるサービスの提供方法は、リアルタイム型とバックグラウンド型に分けることができる。
リアルタイム型は、ユーザから要求が届くことを契機としてすべての処理を開始し、処理が終了したときに、処理の結果を返すものである。
これに対しバックグラウンド型は、予めユーザからの要求またはユーザからの要求に相当する情報を得ておき、その情報に基づいて処理を行って音声ファイルを蓄積しておくものである。したがってバックグラウンド型では、実際にユーザからの要求が届いたときには、すでに生成し蓄積済みの音声ファイルを即座に返すことができる。
音声ファイルを蓄積しておくための記憶容量が少ない点やコンテンツの最新性を確保できる点などでは、リアルタイム型のほうが有利であるが、ユーザからの要求が届いてから音声ファイルを返送するまでの応答時間の短さに対応するレスポンス性能の点では、バックグラウンド型のほうが有利である。本実施形態の通信システムは、リアルタイム型、バックグラウンド型のいずれを用いることも可能であるが、以下の説明では、主としてリアルタイム型を想定する。
(A−1)第1の実施形態の構成
本実施形態にかかる通信システム10の全体構成例を図1に示す。
図1において、当該通信システム10は、インターネット11と、音声データ配信サーバ12と、音声データ合成サーバ13と、情報サーバ群14とを備えている。
このうちインターネット11は、広域イーサネット(登録商標)網やIP−VPN網などのWAN(ワイドエリアネットワーク)であってもよく、比較的大規模なLAN(ローカルエリアネットワーク)などに置換することも可能であるが、ここでは、インターネットであるものとする。
また、情報サーバ群14に含まれる各情報サーバ(例えば、14A)は、要求に応じてWebページを提供する機能を要するWebサーバであるものとする。例えば、FTPサーバなどを用いても、Webページに相当するHTMLファイルを提供することが可能であるため、当該情報サーバ群14に含まれる全部または一部の情報サーバがFTPサーバなどであってもかまわないが、ここでは説明を簡単にするため、情報サーバ14A〜14Dはすべて、Webサーバであるものとする。
本実施形態の構成上、当該Webサーバ14A〜14Dは、合成サーバ13とのみ通信する。もちろん、利用者端末15にWebブラウザが搭載されていれば、利用者端末15から直接、Webサーバ(例えば、14A)にアクセスすることも可能であるが、そのアクセスで利用者端末15がWebサーバから受信できるコンテンツは単なるWebページであり、本実施形態で提供する後述の音声ファイル(例えば、PA11)ではない。
1つのWebサーバには多数のWebページが登録されていてよいが、ここでは、説明を簡単にするため、Webサーバ14Aには、WebページWA1とWA2が登録され、Webサーバ14BにはWebページWB1が登録され、Webサーバ14CにはWebページWC1が登録され、Webサーバ14DにはWebページWD1が登録されているものとする。各Webサーバ14A〜14Dは、HTTPリクエストメッセージを受信すると、そのHTTPリクエストメッセージで指定されたWebページを、HTTPレスポンスメッセージの本体として返送する。
本実施形態において、前記利用者端末15は、WebブラウザBR1を搭載した通信端末で、利用者(ユーザ)U1によって操作される。具体的には、パーソナルコンピュータや携帯電話機などを、当該利用者端末15として使用することが可能である。図1には1つの利用者端末15のみを図示しているが、通信システム10内に多数の利用者端末が含まれていてよいことは当然である。
なお、本来のWebブラウザの機能だけでは音声ファイルの再生出力を行うことはできないため、本実施形態のWebブラウザBR1には補助機能AD1を付加する必要がある。この補助機能AD1は、プラグインソフトまたはヘルパーアプリケーションの形で実現することができる。
細かくみると、ヘルパーアプリケーションは、Webブラウザの外部に存在する独立したプログラムであって、必要が生じたときにWebブラウザによって自動的に起動されるのに対し、プラグインソフトはWebブラウザに付加されてWebブラウザと一体となって機能するプログラムであるという相違がある。この相違が重要なものとなるか否かは、利用者端末15が一連の音声ファイル(例えば、同じWebページWA1から生成された複数の音声ファイルPA11〜PA14)に対する取得要求をどのようなタイミングで送信するかに依存する。
すなわち、これら一連の音声ファイルPA11〜PA14をまとめて取得する場合ならば、この相違は重要ではなくなるが、1ファイルずつ取得し、その取得のためにWebブラウザBR1の機能を必要とする場合ならば、プラグインソフトのほうが有利である。ヘルパーアプリケーションが処理した結果として表示される画面は、(WebブラウザBR1とは別個の)ヘルパーアプリケーション自身の画面であるのに対し、プラグインソフトが処理した結果として表示されるものは、WebブラウザBR1の画面上に表示されるからである。ここで、当該画面(音声再生画面)は、例えば、図10に示すようなものとなる。
本実施形態において、利用者端末15が一連の音声ファイルに対する取得要求を送信するタイミングには、これらの両方があり得るので、以下では、補助機能AD1には基本的にヘルパーアプリケーションおよびプラグインソフトの双方が対応するものとし、必要な場合にのみ、当該補助機能AD1が、ヘルパーアプリケーションを指すか、プラグインソフトを指すかを明示するものとする。
当該補助機能AD1は、当初から利用者端末15にインストールされているものであってもよく、必要が生じたときに配信サーバ12などから動的に送信して利用者端末15にインストールされるものであってもよい。
合成サーバ13は、利用者端末15からの要求に応じて、該当するWebページを、タグを含まない音声データ(音声ファイル)に変換する機能を有するもので、一種のゲートウエイ装置である。
当該合成サーバ13は、前記Webサーバ14A〜14Dのほか、前記配信サーバ12とも通信する。利用者端末15からの要求は直接、この合成サーバ13が利用者端末15から受け取るようにしてもかまわない(これは、ユーザU1がURLを入力するためのWebページであるURL送信画面の構成(例えば、図8(A)に示すWebページのHTMLソースの内容(具体的には、<form>タグのaction属性の属性値を合成サーバ13内を指定するURLとすること))によって簡単に実現することができる)が、ここでは、配信サーバ12経由で受け取るものとする。
利用者端末15から直接、要求(URL)が合成サーバ13に供給されるようにした場合、利用者端末15側における操作の内容(ユーザU1がURLを入力して要求を出したか否か)を配信サーバ12が知る方法がないため、配信サーバ12は届くか否か不明な音声ファイルを常時、待ち受けなければならないが、配信サーバ12経由で要求を合成サーバ13へ届けるようにすれば、ユーザU1の操作内容を知ることができ、合成サーバ13から届くことが分かっている音声ファイルだけを待ち受ければよくなる。これは、セキュリティ強度を高めることができる点などで、有利である。
配信サーバ12経由で合成サーバ13が受け取る利用者端末15からの要求には、当該利用者端末15を操作するユーザU1が指定したURLが含まれている。
また、Webサーバ群14との通信は、当該URLで指定されたWebページを、Webサーバ群14に含まれる各Webサーバ14A〜14Dから取得するための通信であるから、この通信のために、当該合成サーバ13は、HTTPクライアントの機能を備える必要がある。
配信サーバ12は、利用者端末(ここでは、15)からの要求に応じて音声ファイルを配信するサーバである。この音声ファイルは、前記合成サーバ13によって生成されたものである。したがって本実施形態の構成上、サーバ12,13,14A〜14Dのうち、利用者端末15と直接通信するのは、当該配信サーバ12のみである。
当該配信サーバ12は、当該利用者端末15および前記合成サーバ13と通信する。当該配信サーバ12は、利用者端末15との通信では通常のWebサーバ(HTTPサーバ)として機能する。ここで特殊な通信プロトコルを用いてしまうと、配信サーバ12にアクセスしてくる多数の利用者端末にその通信プロトコルを処理するための特殊なモジュールを搭載することが必要となって、通信システム10全体の実現性が低下するからである。
これに対し配信サーバ12と合成サーバ13のあいだで行う通信は、純粋にシステム内部の通信であるから、必ずしもHTTPを用いる必要はない。したがってこの通信のために配信サーバ12がWebサーバとして機能する必要もない。FTPなど、HTTP以外の汎用的な通信プロトコルを使用してもよく、必要ならば、汎用性のないベンダ固有の通信プロトコルを使用してもよい。
配信サーバ12と合成サーバ13のあいだの通信には、配信サーバ12から合成サーバ13へ前記URLを伝えるために行う通信と、合成サーバ13から配信サーバ12へ前記音声ファイルを転送するために行う通信が含まれる。
次に、前記配信サーバ12の内部構成例について説明する。
(A−1−1)音声データ配信サーバの内部構成例
図1において、当該配信サーバ12は、制御プログラム部20と、TCP/IP部21と、HTTP/CGI部22と、音声データ蓄積部23と、音声データデータベース(音声データDB)24とを備えている。
このうち制御プログラム部20と、TCP/IP部21とは、通常、OS(オペレーティングシステム)内に実装される機能に対応し、ハードウエア的には、当該配信サーバ12のCPU(中央処理装置)などに対応する部分である。
制御プログラム部20は、OSのカーネル(スーパーバイザ)に相当する部分で、配信サーバ12内で最もレベルの高い制御権を有し、配信サーバ12内で実行されるすべての処理は、最終的には、この制御プログラム部20によって制御される。
TCP/IP部21は、TCPプロトコルとIPプロトコルを処理する部分である。IPプロトコルはOSI参照モデルのネットワーク層に相当する通信プロトコルの1つである。インターネット11上ではこのIPプロトコルが使用される。
TCPプロトコルはOSI参照モデルのトランスポート層に相当する通信プロトコルの1つである。TCPプロトコルは通信する装置間でコネクションを設定した上で信頼性の高い通信を行う。OSI参照モデルのセッション層からアプリケーション層で、HTTPプロトコルやFTPプロトコルなどを使用する場合には、トランスポート層で当該TCPプロトコルを使用する。
HTTP/CGI部22は、当該HTTPプロトコルを処理する機能とCGI機能を有する部分である。通常の実装では、このHTTP/CGI部22は、アプリケーションソフト(ここでは、Webサーバソフト)の一部として構成され得る。少なくとも利用者端末15との通信では、このHTTP/CGI部22のなかのHTTPプロトコルを処理する部分が機能する。CGI機能は、利用者端末15から供給されるHTTPリクエストメッセージに応じて何らかの処理を行い、その処理の結果をHTTPレスポンスメッセージに含めて返すために機能する部分である。上述したように、ユーザU1の指定に応じて利用者端末15から供給されたURLを配信サーバ12から合成サーバ13へ伝える際にも、当該CGI機能がはたらく。
また、上述したように、合成サーバ13との通信にFTPを使用したり、汎用性のないベンダ固有の通信プロトコルを使用する場合、配信サーバ12上には、当該HTTP/CGI部22のほか、これらの通信プロトコルを処理するためのモジュールが搭載される必要があることは当然である。
なお、配信サーバ12に搭載されるOS内のモジュール分けは、必ずしも図1に示した通りである必要はない。
音声データ蓄積部23は、前記合成サーバ13から転送されてきた音声ファイルPA1〜PD1の本体を一時的に蓄積する部分である。ハードウエア的には、ハードディスクや、揮発性または不揮発性の各種メモリによって当該音声データ蓄積部23が構成されることになる。
音声データDB24は、利用者端末15を用いてユーザU1がURLを指定してきたとき、そのURLに対応する音声ファイルを特定することができるものであればどのような構成を有するものであってもよいが、一例としては、図示したような構成とすることができる。
図1において、URLA1はWebページWA1を指すURLであるが、配信サーバ12内では、当該WebページWA1に対応する音声ファイルPA1を指す識別子として利用する。
同様に、URLA2はWebページWA2を指すURLであるが、配信サーバ12内では、当該WebページWA2に対応する音声ファイルPA1を指す識別子として利用し、…、URLD1はWebページWD1を指すURLであるが、配信サーバ12内では、当該WebページWD1に対応する音声ファイルPD1を指す識別子として利用する。
なお、多くの場合、1つのWebページから複数の音声ファイルが得られるため、例えば、WebページWA1から得られた各音声ファイルを区別するときには、前記PA1以外に、PA11、PA12,PA13、PA14などの符号を用いる。
前記URLがグローバルなインターネット11上で各Webページを一意に指定できるのに対し、音声データDB24内に図示した内部識別情報IDA1〜IDD1は、配信サーバ12内でのみ通用するローカルな識別子である。必要に応じて、この内部識別情報IDA1〜IDD1はローカルな識別子であるだけでなく、テンポラリな(一時的な)識別子であってもよい。具体的には、音声データ蓄積部23の記憶領域上において各音声ファイル(例えば、PA1)が記憶されている領域のアドレス番号などを当該内部識別情報として使用することが可能である。
ここで、内部識別情報IDA1はURLA1(音声ファイルPA1)に対応し、…、内部識別情報IDA2はURLA2(音声ファイルPA2)に対応し、内部識別情報IDD1はURLD1(音声ファイルPD1)に対応する。
次に、前記合成サーバ13の内部構成例について説明する。
(A−1−2)音声データ合成サーバの内部構成例
図1において、当該合成サーバ13は、制御プログラム部30と、TCP/IP部31と、HTTP部32と、テキスト提供部33と、音声合成部34と、一時記憶部35と、音声データ蓄積依頼部36と、シナリオデータ生成部37と、ルールデータベース(ルールDB)38とを備えている。
このうち制御プログラム部30は前記制御プログラム部20に対応し、TCP/IP部31は前記TCP/IP部21に対応し、HTTP/CGI部32は前記HTTP/CGI部22に対応するので、その詳しい説明は省略する。
ただしHTTP/CGI部32のCGI機能は、配信サーバ12経由でユーザU1から取得した前記URLに応じてWebサーバ14A〜14DからWebページWA1〜WD1を取得したり、取得したWebページ(例えば、WA1)を処理して音声ファイル(例えば、PA1)を生成し、生成した音声ファイルを配信サーバ12へ転送する場合にもはたらく。
テキスト提供部33とルールDB38は、合成サーバ13内で最も特徴的な構成要素である。
このうちテキスト提供部33は、Webサーバ14A〜14Dから受け取ったWebページWA1〜WD1を処理して、タグを含まず、音声合成の対象となる文字列だけを含むプレーンテキスト形式のファイルを生成する部分である。しかもこのプレーンテキストファイルは、1つのWebページ(例えば、WA1)内の段落や見出しなどのブロックレベル要素の内容ごと(より好ましくは、後述する記事ごと)に別ファイルとして生成されるため、上述した段落飛ばしや、聞き返し等の操作に対応することも可能となる。
その理由は、ここで生成される1つのプレーンテキストファイルが、1つの音声ファイル(例えば、PA11)になり、利用者端末15を操作するユーザU1は、音声ファイル単位で、次回に再生するファイルを自由に選ぶことが可能になるからである。
このテキスト提供部33の内部構成は、例えば、図14に示す通りであってよい。
(A−1−3)テキスト提供部の内部構成例
図14において、当該テキスト提供部33は、ブロックレベル要素抽出部40と、音声合成用整形部41と、ルール検索部42と、URL保持部43とを備えている。
このうちルール検索部42は、ブロックレベル要素抽出部40または音声合成用整形部41からの検索要求に応じて、前記ルールDB38を検索し、その検索結果として得られたルールの本体を検索要求の供給元であるブロックレベル要素抽出部40または音声合成用整形部41に返す部分である。
この検索では、検索キーとして、前記URLが使用される。このため、配信サーバ12経由で利用者端末15から届いたURLは、少なくともこのテキスト提供部33における処理が終了するまで、URL保持部43に保持しておく必要がある。
URL保持部43は、取得した各WebページWA1〜WD1とそのURLの対応関係が分かる形式で、URLの記憶を維持する部分である。例えば、WebページWA1をブロックレベル要素抽出部40や音声合成用整形部41で処理するときには、当該WebページWA1に対応するURLである前記URLA1を検索キーとして、ルールDB38を検索することになる。
ルールDB38内に、各URLと直接、対応づける形式でルールRLA1〜RLD1の本体を登録しておくようにしてもよいが、ルールRLA1〜RLD1の本体は一種のプログラムコード(プログラムファイル)であるから、前記音声データDB24の構成と同様に、所定の記憶装置(図示せず)上でこれら各プログラムファイルが記憶されている領域のアドレス番号などを当該RLA1〜RLD1の替わりにルールDB38に登録する構成としてもよい。
ルールRLA1〜RLD1は、Webページ(例えば、WA1)からどのようにテキストデータを抽出し、どのような単位に分割するかの規則を示す情報である。
Webページの構造は多様であるため、基本的には、Webページごとにルールを決めておくことになる。
例えば、図2に示す構造を持つWebページに対しては、図3のフローチャートに示すルールを適用し、図4に示す構造を持つWebページに対しては、図5のフローチャートを示すルールを適用する。
なお、個別にルールを設定していないWebページが、ユーザU1から指定され、当該合成サーバ13に取得される場合に備え、デフォルトのルールを登録しておくようするとよい。このデフォルトルールは、ルール検索部42がURLを検索キーとしてルールDB38を検索した際、有効な検索結果が得られなかった場合に適用されるルールである。
前記ブロックレベル要素抽出部40は、検索結果として得られたルール(例えば、RLA1)に基づいて処理することにより、各Webページから1または複数のブロックレベル要素を抽出する部分である。通常は、1つのWebページにつき複数のブロックレベル要素が抽出される。多くの場合、1つのWebページには複数のブロックレベル要素が含まれているからである。
ここで、ブロックレベル要素とは、<h1>タグなどによって範囲を指定される見出しや、<p>タグなどによって範囲を指定される段落などを指す。一例として、図2のWebページの場合、3つの見出しと、7つの段落が含まれている。
また、Webページ作成者が自らの利便のために入れているコメント文(図15(A)参照)や、Webページ内のオブジェクト情報(図15(B)参照)もここでは、ブロックレベル要素とする。
図15(A)は、コメント文をブロックレベル要素として使う場合の例である。
二つのコメント文の間のテキストデータが中間データME1となる。
この場合、ME1に<h1>、<p>等のブロックレベル要素が含まれる可能性がある。
これらのブロックレベル要素は、後述する整形処理(テキスト整形)において、インライン要素として削除する。
図15(B)は、Webページ内のオブジェクトをブロックレベル要素として使う場合の例である。
<img>タグ(タイトル画像)と<hr>タグ(水平線)の間のテキストデータが中間データME1となる。
<h1>タグや<p>タグは、ブロックレベル要素抽出部40内で、処理対象のWebページ(HTMLソース)上からブロックレベル要素を探索するために活用できるが、この探索が終了したあとは不要になるので除去することができる。
したがって、ブロックレベル要素抽出部40から音声合成用整形部41へ供給されるデータは、<h1>タグや<p>タグを含まないデータ(中間データ)ME1であってよい。また、基本的に、1つのブロックレベル要素を1つの音声ファイル(例えば、PA11)に収容するが、必要ならば、記事ごとに音声ファイルに収容する場合のように、複数のブロックレベル要素を1つの音声ファイル(例えば、PA11)に収容するようにしてもよい。より多くのブロックレベル要素を1つの音声ファイルに収容すれば、ファイルの数が減少し、ファイル管理のための負荷が小さくなるが、上述した段落飛ばしや、聞き返しを、より細かいレベルで行うには、音声ファイルの数が増加しても、より少数のブロックレベル要素を1つの音声ファイル(例えば、PA11)に収容することが望ましい。
また、記事単位に音声ファイルに収容するなど、ユーザU1にとっての意味的な区切りに忠実な単位に分割した上で、各分割結果を1つの音声ファイルに収容することは、より有効である。ここで、1つの記事は、1つの見出しと、その見出しにつづく1つ以上の段落から構成されている。
音声合成用整形部41は、前記ブロックレベル要素抽出部40から受け取った中間データME1に対し、音声合成のための整形処理を施す部分で、この整形処理の結果として、中間データME2を出力する。当該中間データME2は、前記プレーンテキストファイルにあたる。
この整形処理の内容には様々なものがあり得るが、例えば、中間データME1に含まれる可能性のあるインライン要素のタグ(インラインタグ)を除去したり、中間データME1が見出しである場合などに欠けている可能性の高い読点「。」を付加したり、音声合成部34が音声的な表現力を高めるために使用可能な各種の制御記号を付加したりするものであってよい。
前記インラインタグとは、ここでは、抽出した1つのブロック内部において1または複数の文字などを指定したりするタグのことである。主として、内容情報であるテキストに対し、インライン要素として用いられる。
具体的には、例えば、図2において、文字を強調する<strong>タグや改行を示す<br>タグ、図6(A)においてリンク先を示す<a>タグなどがインラインタグにあたる。
インラインタグもWebページの内容と同様な文字列で記述されるため、前記音声合成部34の具体的な仕様によっては、タグの記述(要素名、属性名、属性値などの文字列や数字列)まで音声合成され、不要な情報が音声出力されたり、合成音に不要な区切りが入ったりする可能性がある。その場合、音声出力は、ユーザU1にとって聞きづらいものとなるため、この整形処理で除去するものである。
この点、前記<h1>タグや<p>タグなども同様であるから、もし前記ブロックレベル要素抽出部40で除去しない場合には、当該音声合成用整形部41で、<h1>タグや<p>タグなどを除去するようにしてもよい。
このようなテキストのインラインタグでなくとも、図6(A)のように、ブロック内のオブジェクトを除去するようにしてもよい。この例は<img>による画像を除去しているが、<hr>(水平線)等を除去してもよい。
また、整形処理で、読点を付加する理由は、音声合成部34における処理で、当該読点に基づいて適切なポーズを挿入し、より自然な合成音声を得るためである。
さらに、前記整形処理で付加する制御記号は、例えば、ポーズ、声質(早さ、高さ、強さ、抑揚、話者等)、効果音などを音声合成部34に指示するものである。
このようなテキスト提供部33から中間データME2の供給を受ける前記音声合成部34は、TTS(Text-to-speech (Synthesis))方式により、テキストに基づいて音声データを合成する部分で、合成結果として、前記音声ファイル(例えば、PA11など)を出力する。ここで、テキストとは、前記中間データME2すなわちプレーンテキストファイルを指す。
なお、当該音声合成部34が合成する音声データ(音声ファイル)のデータ形式は、利用者端末15の補助機能AD1により再生可能なものであればどのようなものであってもよい。例えば、PCMや、MP3などのデータ形式が使用可能である。
前記一時記憶部35は、音声合成部34から出力される各音声ファイル(例えば、PA11など)を一時的に記憶する部分である。
一時記憶部35に記憶されている音声ファイルは、音声データ蓄積依頼部36により、TCP/IP部31を介して配信サーバ12へ転送され、前記音声データ蓄積部23に蓄積される。
シナリオデータ生成部37は、複数の前記音声ファイル(例えば、PA11,PA12など)を利用者端末15上で再生する際の順番(同期関係)を記述したシナリオデータSY1を生成する部分である。通常、1つのWebページ(例えば、WA1)から得られる複数の音声ファイル(ここでは、PA11,PA12など)の再生順序(同期関係)は、当該Webページ上における記載順序に基づいて決めることができる。
このような再生順序は、1つのWebページ内でのみ決め、別なWebページ間では決めないようにしてもよいが、ハイパーリンクなどによって、あるWebページ(例えば、HTS2(図4参照))の次に他のWebページ(例えば、HTS3(図4参照))が閲覧される関係が明確である場合などには、そのような関係に基づいて複数のWebページ間にまたがる再生順序を決めることも可能である。
シナリオデータSY1を記述する形式は、利用者端末15で処理可能であれば、どのような形式を用いてもかまわないが、一例として、W3C勧告のSMIL(Synchronized Multimedia Integration Language)形式を用い、SMILファイルとして当該シナリオデータSY1を生成するようにしてもよい。
また、生成された音声ファイルが1つだった場合には、シナリオデータSY1を、<bgsound>タグ等を用いたHTML形式で記述してもよい。
当該シナリオデータSY1は、HTTP/CGI部32を介して当該合成サーバ13から直接、利用者端末15へ送信することもできるが、配信サーバ12経由で送信することもできる。合成サーバ13が前記URLを配信サーバ12経由で受け取った場合なら、シナリオデータSY1の返送も、配信サーバ12経由で行うようにするとよい。
前記<bgsound>タグ等を用いたHTML形式の場合などを除き、利用者端末15が受信したあと、利用者端末15上でこのシナリオデータSY1を解釈し処理するのは、主として、前記補助機能AD1である。
前記利用者端末15の内部構成例を図7に示す。図7では、利用者端末15が据え置き型のパーソナルコンピュータである例を示す。
(A−1−4)利用者端末の内部構成例
図7において、当該利用者端末15は、制御プログラム部70と、TCP/IP部71と、Webブラウザ部72と、音声データ再生部73と、I/O制御部74のほか、ディスプレイ75と、スピーカ76と、マウス77と、キーボード78とを備えている。
このうち制御プログラム部70は前記制御プログラム部20に対応し、TCP/IP部71は前記TCP/IP部21に対応するので、その詳しい説明は省略する。
Webブラウザ部72は、基本的に前記WebブラウザBR1に対応するが、補助機能AD1が前記プラグインソフトである場合には、補助機能AD1が持つ機能の少なくとも一部は、当該Webブラウザ部72に含まれることになる。WebブラウザBR1も補助機能AD1も、当該利用者端末15にインストールされたアプリケーションプログラムであるから、普段は、利用者端末15のハードディスク(図示せず)に保存されており、起動時には、メモリ(図示せず)に読み込まれる。プラグインソフトの場合、通常は、Webブラウザが起動されると同時に起動される。
音声データ再生部73は、前記音声ファイル(例えば、PA11〜PA14)の再生を行う部分で、もっぱら前記補助機能AD1に対応する。
I/O制御部74は、パーソナルコンピュータである当該利用者端末15への入出力を制御する部分である。周辺装置であるポインティングデバイス(ここでは、マウス77)やキーボード78と前記制御プログラム部70とのあいだに、当該I/O制御部74が介在する。
ディスプレイ75は、例えば、液晶表示装置などによって構成され、Webブラウザ部72が表示する画面を表示出力し、ユーザU1が閲覧することを可能にする。
スピーカ76は、前記音声データ再生部73の機能に応じて、前記音声ファイル(例えば、PA11〜PA14)に対応する音声出力を行うための周辺装置である。当該スピーカ76は、ヘッドホンなどに置換可能である。
なお、当該利用者端末15が、パーソナルコンピュータではなく前記携帯電話機である場合には、TCP/IP部71は他の通信プロトコルに対応したモジュールに置換され得る。各携帯電話ネットワーク内でどのような通信プロトコルを用いるかは、当該携帯電話ネットワークを構築し運営する携帯電話事業者の自由であるが、携帯電話ネットワーク内ではIPプロトコルが使用されないことも少なくないからである。
また、携帯電話機の場合、ディスプレイ75やスピーカ76は周辺装置として付加しなくても最初から携帯電話機に搭載されているし、マウスやキーボードは存在せず、いくつかの操作ボタン(図示せず)が配列されているのみである。携帯電話機では、当該ディスプレイ75,スピーカ76,操作ボタンなどが、ユーザU1の手のひらに収まる程度のコンパクトなボディに搭載されている。
なお、携帯電話機に関しては、Webページを記述する言語もHTML以外の言語(例えば、HDMLなど)が使用され、携帯電話機にはその言語に対応したWebブラウザが搭載されることが多いが、これらの言語も、タグを利用したマークアップ言語である点で、HTMLと同じである。
以下、上記のような構成を有する本実施形態の動作について、図3,図5,図9のフローチャートを参照しながら説明する。
図3は前記ルールの一例を示すフローチャートで、S10〜S21の各ステップから構成されている。また、図5は前記ルールの一例を示すフローチャートで、S30〜S43の各ステップから構成されている。さらに、図9は、合成サーバ13の動作を示すフローチャートであり、S50〜S58の各ステップから構成されている。図9のステップS53の詳細を示したものが、図3または図5のフローチャートであるとみることができる。
この図9のフローチャートは、前記リアルタイム型の提供方法に対応するものとなっている。ここでは、主としてリアルタイム型に基づいて動作を説明する。
(A−2)第1の実施形態の動作
リアルタイム型の場合、まず最初に、ユーザU1が例えば図8(A)または(B)のWebページ(URL送信画面)に基づいて、音声出力を希望するWebページのURLを伝える必要がある。このURLを伝える相手は、(配信サーバ12経由でよいが、)最終的には、前記合成サーバ13である。
図8(A)に示すURL送信画面の場合、ユーザU1は利用者端末15の前記キーボード78などを操作してフィールドF1に所望のURLを入力し、「送信」ボタンBT1を押すことによって、フィールドF1に入力したURLを伝えることができる。フィールドF1内でテキスト編集を行う煩わしさはあるが、このURL送信画面では、世界中に存在する任意のWebサーバに登録されている任意のWebページを指定することが可能である。
図8(B)に示すURL送信画面の場合には、ユーザU1はハイパーリンクLK1〜LK3のいずれかを選択し、選択したハイパーリンク(例えば、LK2)をマウス77などで操作(クリック)するだけで、極めて簡単に、URLを伝えることが可能である。この場合、予めURL送信画面に用意されているハイパーリンクLK1〜LK3のなかからしかURLを選択できないため、伝えることできるURLが限定されているが、操作が簡単な点が有利である。
図8(A)および(B)のURL送信画面の送信元は、配信サーバ12であってよいが、必要に応じて、合成サーバ13であってもよく、Webサーバ14A〜14Dのいずれかであってもよい。また、図1に図示していないいずれかのWebサーバであってもよい。
また、前記フィールドF1に入力したURL、または、前記ハイパーリンクLK1〜LK3のいずれかに対応するURLの直接の宛先は、各URL送信画面のHTMLソースの記述内容(例えば、<form>タグのaction属性の属性値の内容など)に応じて決まるものである。上述したように、URLを、配信サーバ12経由で合成サーバ13に伝える場合には、直接の宛先は、配信サーバ12になる。
図9において、ステップS50では、合成サーバ13がURLをHTTPリクエストメッセージの一部として利用者端末15から受信しているが、ここでは上述したように、直接、当該利用者端末15から受信するのではなく、配信サーバ12経由で受信するものとする。HTTPリクエストメッセージを直接受信するのが当該配信サーバ12であれば、そのHTTPリクエストメッセージに対する応答であるHTTPレスポンスメッセージを送信するのも、配信サーバ12にしておくことが望ましい。そのようにしないと、利用者端末15と配信サーバ12のあいだにファイアウオールなどが介在する場合、HTTPレスポンスメッセージが当該ファイアウオールで遮断されて、利用者端末15まで届かない可能性が高いからである。
なお、前記URL送信画面では、ユーザU1が同時に複数のURLを指定できるようにしてもよいが、図示した例では、同時には1つのURLしか指定できないので、ここでも、指定されたURLは1つであるものとして説明する。
このURLが、例えば、前記URLA1であるものとすると、合成サーバ13は前記Webサーバ14AからWebページWA1を取得することになる(S51)。
また、合成サーバ13内の前記テキスト提供部33は、当該URLA1を検索キーとしてルールDB38を検索し、当該WebページWA1に対応したルールを特定する。そして、特定したルールに基づいて処理することで当該WebページWA1のHTMLソースの内容からテキストデータを抽出し、分割する(S53)。
このステップS53の処理の詳細については後述するが、当該ステップS53の処理により、1つのWebページWA1のHTMLソースから、1または複数の前記中間データ(プレーンテキストファイル)ME2が得られる。前記ブロックレベル要素ごとに中間データME2が得ることもできるが、ここでは、記事毎に中間データME2を得るものとする。
図9のフローチャートでは、中間データME2が得られるたびに音声合成部34で音声ファイルに変換し、その音声ファイルを、一時記憶部35,音声データ蓄積依頼部36を介して、前記配信サーバ12の音声データ蓄積部23に蓄積する処理を繰り返している(S54,S55,S56)が、1つのWebページWA1から得られた複数の音声ファイルをまとめて一時記憶部35,音声データ蓄積依頼部36で処理し、前記配信サーバ12の音声データ蓄積部23に蓄積するようにしてもよいことは当然である。
1つのWebページWA1に対応するすべての音声ファイル(ここでは、PA11〜PA14とする)が得られたとき、ステップS56はyes側に分岐して、シナリオデータ生成部37が、これらの音声ファイルPA11〜PA14の再生順序を示す前記シナリオデータSY1を生成する(S56)。
このシナリオデータSY1は、直接、合成サーバ11から利用者端末15に送信してもよいが、配信サーバ12経由で送信することもできる(S58)。
前記リアルタイム型に対応する動作の場合、このステップS58におけるシナリオデータSY1は、前記ステップS50のHTTPリクエストメッセージに対する応答(HTTPレスポンスメッセージ)の一部として送信されるものである。
これに対し、前記バックグラウンド型では、ステップS50自体を省略できるか、ステップS50のHTTPリクエストメッセージに対する応答としてのステップS58のHTTPレスポンスメッセージは送信しない動作となる。
ステップS50自体を省略した場合、予め決めた範囲のURLに基づいて合成サーバ13がWebページ(例えば、WA1など)を取得する。また、ステップS50を実行する場合には、ステップS50のHTTPリクエストメッセージに対する応答としてのHTTPレスポンスメッセージとしては、前記ステップS58のHTTPレスポンスメッセージに替えて、例えば、次のような文字列SR1を含むHTMLファイルを含めるとよい。
「あなたのリクエストは受け付けました。本サービスの規則にしたがって適正に処理し、できるだけ速く、あなたのリクエストに対応した音声ファイルを用意しておきます。URLXにアクセスして下さい。」 …(SR1)
ここで、URLXは、前記URLA1とは別個のURLである。URLA1にHTTPリクエストメッセージを送信してしまうと、その応答であるHTTPレスポンスメッセージとして、Webサーバ14Aから単なるWebページWA1が利用者端末15に返送されてしまうから、このように別個のURLを用意する必要がある。
あるいは、このようなURLXを用いる替わりに、配信サーバ12が提供するWebページの構成に基づいて、ユーザU1が目的の音声ファイル(例えば、PA11など)やシナリオデータ(例えば、SY1)に辿り着けるようにしておいてもよい。
リアルタイム型、バックグラウンド型いずれであっても、シナリオデータSY1が利用者端末15に届けられると、例えば、図10に示す音声再生画面が、前記ディスプレイ75に画面表示される。このとき、ユーザU1がマウス77などで、ボタンBT11〜BT14のいずれかを操作することにより、ユーザU1が望む順番で、音声ファイルPA11〜PA14を再生することができる。
例えば、「再生」ボタンBT13を操作したときに音声ファイルPA11から順番に再生出力を開始する。この状態で放置すると、再生順序にしたがってPA11,PA12,PA13,PA14の順番で再生出力が継続されることになるが、「早送り」ボタンBT14を操作すると、そのたびにファイル単位で、次の再生順序の音声ファイル(例えば、PA12)の再生出力を行い、また、「巻き戻し」ボタンBT11を操作すると、そのたびに再生順序を遡って、すでに再生の終わった音声ファイル(例えば、PA11)を再生出力し、「停止」ボタンBT12を押すと再生出力を停止する。
したがってユーザU1は、この「早送り」ボタンBT14の操作に応じて前記段落飛ばしを行うことができ、「巻き戻し」ボタンBT11の操作に応じて前記聞き返しを行うことができる。これにより、興味のない内容は聞かずに次の内容を聞いたり、すでに音声出力された内容をもう1度、聞き直したりすることが可能になる。段落飛ばしを行う以上、ある音声ファイル(例えば、PA12)が再生の途中であっても「早送り」ボタンBT14の操作を検知したときには、直ちにその再生を中止して、次の音声ファイル(ここでは、PA13)の再生出力を開始できることは当然である。
なお、上述したように、これら一連の音声ファイルPA11〜PA14をまとめて取得する場合ならば、このような段落飛ばしや聞き返しは、すでに受信している音声ファイルの再生の順番を制御するだけであり、純粋に利用者端末15内部の処理になるため、WebブラウザBR1によるHTTPリクエストメッセージの送信は必要ないから、前記補助機能AD1がヘルパーアプリケーションであっても特に問題はない。
ただし、一連の音声ファイルPA11〜PA14のうち、同時に利用者端末15に受信するのは1つだけとし、ユーザU1が前記ボタン(例えば、BT14やBT11)を操作するたびに、必要な音声ファイル(例えば、PA11,PA13など)を取得するためのHTTPリクエストメッセージを送信する場合ならば、WebブラウザBR1の機能を頻繁に利用する必要があるため、WebブラウザBR1利用時に画面の切り替えなどが不要なプラグインソフトを、前記補助機能AD1とするほうが、はるかに操作性が向上する。
なお、WebブラウザBR1が利用者端末15内にキャッシュ領域を有する場合、音声ファイルPA11〜PA14をキャッシュ領域に蓄積しておけば、1度、WebブラウザBR1が取得した音声ファイルは、配信サーバ12にアクセスすることなく当該キャッシュ領域から取得することが可能(例えば、前記聞き返しを行う場合に対応)であるが、この場合でも、本質的な相違はない。当該キャッシュ領域にアクセスできるのは、通常、WebブラウザBR1だけだからである。
上述したステップS53の詳細に相当する動作を、図3のフローチャートを用いて説明する。図3のフローチャートは、前記合成サーバ13が前記ステップS51で取得したWebページWA1のHTMLソースが、例えば、図2に示すHTS1のようなものである場合に適用されるルールを示すものである。
分割単位は、ここでは、記事とする。1つの記事は、1つの見出しと、それにつづく1または複数の段落から構成されているから、例えば、図2の場合、見出しH11とそれにつづく段落P11およびP12が1つの記事である。同様に、見出しH12とそれにつづく段落P13は、1つの記事である。さらに、見出しH13とそれにつづく段落P14,P15,P16は、1つの記事である。したがって、図2のWebページには、3つの記事が含まれていることになる。
図2では、bodyの範囲(<body>と</body>で囲まれた範囲)に、<h1>と</h1>で囲まれた見出しが3つ存在し、各見出しのあとには、1または複数の段落がつづいている。HTMLの文法上、段落は、<p>と</p>で囲まれた範囲であるから、図2のHTMLソースHTS1の場合、段落の数は全部で7つである。
すなわち図2のHTMLソースHTS1において、見出しはH11〜H13の3つであり、段落はP11〜P17の7つである。
このような構成のWebページを処理する場合に適用されるルールでは、図3に示すように、まずポインタ変数nに0を代入して、対象領域を決める(S11)。この対象領域は、前記bodyの範囲とする。bodyの範囲は、前記<body>と</body>をもとに特定することができる。また、前記ポインタ変数nの値は、分割単位である各記事に、内部で使用する識別番号を与えるために用いるものである。
次に、ポインタ変数nにn+1を代入して、bodyの範囲内の先頭にある見出しを抽出する(S12)。ここでは、図2のHTMLソースHTS1を、図2上で上に位置する行から順番に処理していくので、先頭にある見出しとは、見出しH11〜H13のなかで最も上に位置する見出しH11のことである。また、このときポインタ変数nの値は、1(=0+1)であるので、この見出しH11の記事には、識別番号として1が付与されることになる。
このあと、見出しの内容であるテキストに対し、前記音声合成用整形部41が上述した整形処理を施し、整形処理結果を第nブロックデータ(ここでは、nの値が1であるため、第1ブロックデータ)として書き出す(S13、S14)。ここでテキストとは、図2上で見出しH11において<h1>と</h1>に囲まれている「XXXXXXXXX」である。もちろん実際には、この部分に、見出しとして適切な文字列が記述されることは当然である。また、ブロックデータとは、ここでは、1つの記事のことを指している。
つづいてbodyの範囲内の先頭にある段落を抽出し(S15)、その段落のテキストに対し前記音声合成用整形部41が整形処理を施し(S16)、整形処理の結果を前記ステップS14で書き出した第nブロックデータ(ここでは、第1ブロックデータ)に追記する(S17)。当該ステップS15は前記ステップS12に対応し、当該ステップS16は前記ステップS13に対応し、当該ステップS17は前記ステップS14に対応する。
当該ステップS17につづくステップS18は、当該記事(すなわち、第1ブロックデータ)内で後続の段落がある限り、yes側に分岐し、そのたびに前記ステップS15〜S17の処理が繰り返される。
図2に示す見出しH11の記事の場合、段落はP11とP12の2つであるため、ステップS18のyes側への分岐は1回だけ発生する。
当該記事内で後続の段落がなくなると、ステップS18はno側へ分岐し、第nブロックデータ(ここでは、第1ブロックデータ)の内容が確定する(S19)。この内容が確定した第nブロックデータは、前記中間データME2として音声合成部34へ供給されることになる。
ステップS19につづくステップS20では、前記bodyの範囲内で先頭から順番に調べることで、前記見出しH11以外の新たな見出しを探索し、探索できなければno側に分岐してこの図2のHTMLソースHTS1に対する処理を終了するが(S21)、探索できればyes側の分岐して、前記ステップS12〜S20の処理を繰り返す。
図2のHTMLソースHTS1の場合、見出しの数はH11〜H13の3つであるため、その処理では、ステップS20におけるyes側への分岐が2回発生することになる。
一方、上述したステップS53の詳細に相当するもう1つの動作は、図5のフローチャートに示す通りである。図5のフローチャートは、前記合成サーバ13が前記ステップS51で取得したWebページWA1のHTMLソースが、例えば、図4に示すHTS2のようなものである場合に適用されるルールを示すものである。ここでも、分割単位は、前記記事である。
図5において、当該HTMLソースHTS2からリンク部を抽出し、HTMLソースHTS2中のリンク部の総数を、リンク総数変数Nに代入する(S31)。図4のHTMLソースHTS2の場合、リンク部はA21〜A23の3つであるから、リンク総数変数Nには、3が代入されることになる。
次にリンク部指定変数nに初期値として1を代入した上で、各リンク部A21〜A23に記載されたhref属性の属性値であるURLによって指定される各HTMLソースHTS3〜HTS5につき、ステップS32以降の処理を開始する。
当該ステップS32では、HTMLソースHTS2上で上からn番目(ここでは、1番目)のリンク部(ここでは、A21)から、前記href属性の属性値として記述されているURLを取得し、つづくステップS33で、そのURLを用いてHTTPリクエストメッセージを送信し、これに応えて該当するWebサーバ(例えば、14B)が返信するHTTPレスポンスメッセージからHTMLソース(ここでは、HTS3)を取得する(S33)。
取得した当該HTMLソースHTS3に対して行うステップS34〜S41の各処理は、すでに説明した図3の各ステップの処理と同様である。
すなわち、ステップS34は前記ステップS12に対応し、ステップS35は前記ステップS13に対応し、ステップS36は前記ステップS14に対応し、ステップS37は前記ステップS15に対応し、ステップS38は前記ステップS16に対応し、ステップS39は前記ステップS17に対応し、ステップS40は前記ステップS18に対応し、ステップS41は前記ステップS19に対応するので、その詳しい説明は省略する。
ステップS41につづくステップS42では、リンク部指定変数n(今回は、1)の値が前記リンク総数変数N(ここでは、3)の値と一致するまでno側への分岐が繰り返され、そのたびに、リンク部指定変数nの値がインクリメントされて前記ステップS32〜S41の処理が繰り返される。
図4のHTMLソースHTS2の場合、リンク部の数は3つであるため、ステップS42のno側への分岐は2回発生する。
リンク部指定変数nの値がリンク総数変数Nに一致すると、当該ステップS42はyes側に分岐して、当該HTMLソースHTS2に対する処理を終了する。
ここでは、HTMLソースの内容に対応した2つのルール(図3,図5)について説明したが、これ以外のルールを用いることができることは当然である。図3,図5以外のルールでは、HTMLソースの内容など、必要に応じて、次のSX1〜SX4の各処理をルールのなかに含めるようにしてもよい。
(SX1)…ブロックレベル要素の内容の中で、インラインタグ以外のものを削除して抽出する。
(SX2)…連続する複数の<p></p>のうち、N番目までを対象テキストとした上で、各種テキストタグを取り除き、対象テキストを1ブロック生成する。
(SX3)…コメントアウトされているテキスト(コメント文)の中から、上述した特許文献1で使用する音声合成タグに囲まれた部分を抽出する。
(SX4)…単に、当該音声合成タグで囲まれた部分を抽出する。
ここで、処理SX1の実行の様子を図6(A)に示し、処理SX2の実行の様子を図6(B)に示し、処理SX3の実行の様子を図6(C)に示し、処理SX4の実行の様子を図6(D)に示す。なお、特許文献1では音声合成タグとして、<VS>タグを使用し、図6(C)や(D)では、ttsまたは<tts>タグを使用しているが、両者に本質的な差はない。
前記特許文献1にも記載されているように、音声合成タグのような、DTDで定義されていない特殊なタグは、<!−−と−−>で囲まれたコメント文のなかに記載するようにしないと、タグの解釈主体であるプロキシサーバなど(Webブラウザも含む)で正しく処理できない可能性があるため、通常、音声合成タグで囲まれたテキストは、前記処理SX3のように、コメント文のなかから抽出することになるが、もしも、HTMLソースがそのような構成となっておらず、コメント文以外の箇所に音声合成タグを使っている場合には、前記処理SX4を適用する。
このほかにも、処理SX1〜SX4を1つのルールのなかで組み合わせて用いること等も可能である。
なお、上述したデフォルトルールも、これらの処理SX1〜SX4を利用して構成したり、タグ(DTDで定義されているものも、されていないものも含む)やキーワードに合わせて構成することができる。
(A−3)第1の実施形態の効果
以上のように、本実施形態によれば、前記音声合成タグのような特殊なタグを付加しておく必要がなく、広く、通常のWebページ(例えば、HTS1)に対して適用することができるため、実現性が高い。
また本実施形態では、利用者端末(15)側における再生出力の際、上述した段落飛ばしや、聞き返しなどを、ユーザ(U1)の希望に合わせて行うことが可能であるため、利便性や柔軟性が高い。
(B)第2の実施形態
以下では、本実施形態が第1の実施形態と相違する点についてのみ説明する。
第1の実施形態では利用者端末15側で再生出力されるのは、音声のみであったが、本実施形態では、音声に対応したテキストも、音声に同期して表示出力させることができる点が相違する。
(B−1)第2の実施形態の構成および動作
本実施形態は第1の実施形態に比べ、音声データ合成サーバ(すなわち、合成サーバ)の内部構成が相違するだけである。
本実施形態の合成サーバ53の内部構成例を図11に示す。
図11において、図1と同じ符号を付与した構成要素30,31,32,34,35,36,37,38,URLA1〜URLD1,RLA1〜RLD1、WA1〜WD1,ME2,PA1〜PD1,SY1の機能は基本的に第1の実施形態と同じであるので、その詳しい説明は省略する。
ただし本実施形態で使用するルールでは、前記中間データME2を生成する際、その中間データME2と同時に、利用者端末15上で表示するためのテキストデータ(音声付随テキストデータ)STA1〜STD1も生成する。音声付随テキストデータは、利用者端末15上で音声の再生出力を行うときに画面(音声再生画面)に表示させるテキストデータである。
この音声付随テキストデータ(例えば、STD1)は、もとになるWebページ(例えば、WA1)のHTMLソースから生成するのが基本である。一例としては、前記見出しの内容であるテキスト「XXXXXXXXX」をそのまま、当該音声付随テキストデータとしてもよい。このテキストの具体的な内容は、例えば、図12に示す「ワールドカップで日本初の勝ち点」などである。
見出しの内容は、その記事の1または複数の段落の内容を簡潔に表現しているのが普通であるため、図12のように見出しの内容を前記再生順序に応じた順序で列挙して表示しておけば、ユーザU1が、前記段落飛ばし等の操作を行う際に便利で、目的の音声ファイルへ到達しやすくなる。
図12は、音声を再生出力する際、利用者端末15上で表示出力される音声再生画面の例である。この画面は、基本的に、第1の実施形態で使用した図10の音声再生画面に対応する。したがって、図12上で図10と同じ符号BT11〜BT14を付与した各種のボタンの機能は第1の実施形態と同じである。
なお、ある音声ファイルを再生出力しているとき、その音声ファイルに対応する見出しの内容を、図12の音声生成画面上で、視覚的に、他の見出しの内容とは異なるものとして表示することも望ましい。
このような音声付随テキストデータを得るためには、ルールに基づく処理の内容も、第1の実施形態から変更する必要があることは当然である。ただしこの変更は、極めて、軽微な変更で足りる。例えば、図3のフローチャートに対応するルールの場合、ステップP12で見出しの内容であるテキストを抽出した際、このテキストを音声合成用のほか、音声付随テキストデータとしても活用するようにすればよいだけである。
また、もしも、利用者端末15側で画面表示するためにそのほうが好都合であれば、当該音声付随テキストデータとしてのテキストは、タグ(<h1>など)で囲まれた状態のデータであってもよい。
さらに、図11の例では、音声付随テキストデータ(例えば、STA1)は、シナリオデータSY1の一部として、シナリオデータSY1とともに転送されているが、必要に応じて、音声ファイル(例えば、PA1)とともに転送するようにしてもよい。いずれにしても、音声ファイルと音声付随テキストデータの対応関係は維持できるようにしておく必要がある。
(B−3)第2の実施形態の効果
本実施形態では第1の実施形態の効果とほぼ同等な効果を得ることができる。
加えて、本実施形態では、利用者端末(15)側で、音声付随テキストデータに応じた画面表示を行うことができるため、段落飛ばしや聞き返しを行う際、ユーザ(U1)が、目的の音声ファイルを見つけやすくなり、いっそう利便性が向上する。
(C)第3の実施形態
以下では、本実施形態が第1、第2の実施形態と相違する点についてのみ説明する。
第1、第2の実施形態は、主として、前記リアルタイム型に対応するものであったが、本実施形態は、前記バックグラウンド型に対応する。
また本実施形態では、同じデータに対する同じ処理を重ねて行わないようにして、処理能力を節約する点も、第1、第2の実施形態と相違する。
(C−1)第3の実施形態の構成および動作
本実施形態は第1、第2の実施形態に比べ、音声データ合成サーバ(すなわち、合成サーバ)の内部構成が相違するだけである。第1、第2の実施形態のなかでは、第2の実施形態の合成サーバ53のほうが、本実施形態の合成サーバ63に近い。
本実施形態の合成サーバ63の内部構成例を図13に示す。
図13において、図11と同じ符号を付与した構成要素30,31,32,34,35,36,37,38,URLA1〜URLD1,RLA1〜RLD1、WA1〜WD1,ME2,PA1〜PD1,SY1の機能は基本的に第2の実施形態と同じであるので、その詳しい説明は省略する。
本実施形態の合成サーバ63はこれらの構成要素のほか、第2の実施形態の合成サーバ53が持たなかった構成要素として、テキスト提供部64と、取得スケジュールデータベース(取得スケジュールDB)65と、音声合成履歴管理部66と、生成済みシナリオデータ蓄積部67とを備えている。
当該テキスト合成部64も、基本的には、第2の実施形態のテキスト合成部54と同じ機能を持つが、音声合成履歴管理部66に格納されている音声合成履歴情報HY1に応じた処理を行う点が相違する。
音声合成履歴管理部66は、各HTMLソースに対して、過去に、音声合成部34で音声合成を行い音声ファイル(例えば、PA11)を生成したか否かを示す音声合成履歴情報HY1を、例えば、URLに対応づける形式で格納している。
過去に生成した音声ファイル(例えば、PA11)を合成サーバ63内、または配信サーバ12内に保存しておけば、今回の配信でも再利用することができるため、過去に生成したものと同じ音声ファイルを再度、生成する必要がなくなる。
なお、HTMLソースの内容は更新されることがあるため、更新された場合には、同じURLのHTMLソースであっても、新たに音声ファイルを生成する必要がある。更新の有無は、HTMLソースの内容を実際に照合することによって検査してもよいが、送信したHTTPリクエストメッセージに応えてWebサーバ(例えば、14Aなど)から返送されてくるHTTPレスポンスメッセージに含まれるエンティティヘッダ中の更新日時情報などを利用すれば、いっそう効率的に検査することができる。
この検査では、例えば、同じURLへのHTTPリクエストメッセージに対し、前回、返送されてきたHTTPレスポンスメッセージの更新日時情報を記憶しておき、今回、返送されてきたHTTPレスポンスメッセージの更新日時情報が前回のものから変化しているか否かを調べるとよい。これによれば、前回と今回のHTMLソースの内容を実際に照合する場合に比べ、はるかに簡単に更新の有無を確認することができる。
前記生成済みシナリオデータ蓄積部67は、過去に生成したシナリオデータ(例えば、SY1)を蓄積しておき、できるだけ再利用するための部分である。シナリオデータの再利用が可能か否かの条件は、基本的に、前記音声ファイルの再利用が可能か否かの条件と同じである。したがって、もとのWebページ(例えば、WA1)の内容が更新されている場合には、シナリオデータも新たに生成する必要がある。
前記取得スケジュールDB65は、各URLに対応づけて、該当URLが指定するWebページの取得スケジュール情報SCA1〜SCD1を登録したデータベースである。
取得スケジュールの本体は一種のプログラムコード(プログラムファイル)であるとみることができるから、第1の実施形態の音声データDB24の構成と同様に、所定の記憶装置(図示せず)上で各プログラムファイルが記憶されている領域のアドレス番号などを当該SCA1〜SCD1の替わりに取得スケジュールDB65に登録する構成としてもよい。
前記バックグラウンド型に対応する本実施形態の合成サーバ63は、URLごとに予め定めたこのスケジュール情報(例えば、SCA1)にしたがって、該当するWebサーバ(例えば、14A)に、HTTPリクエストメッセージを送信することで、HTTPレスポンスメッセージに含まれる前記Webページ(例えば、WA1)を取得することになる。
用いるメソッドは必ずしもGETメソッドである必要はないので、HEADメソッドなどを用いて、HTTPヘッダ情報(これには、前記更新日時情報なども含まれる)だけを取得するようにしてもよいことは当然である。HTTPヘッダ情報だけを取得する場合、サイズの大きなエンティティボディ(ここでは、HTMLファイル)を取得する必要がないため、通信トラフィックを抑制でき、合成サーバ63内における処理も速い。
合成サーバ63内で新たに生成した音声ファイルは、音声データ蓄積依頼部36により、配信サーバ12側に蓄積されるため、利用者端末15からその音声ファイルを要求するHTTPリクエストメッセージが届けば、利用者端末15へ返信される。この際、前提として、新たなシナリオデータ(SY1に相当)も、利用者端末15へ送信されることは当然である。
本実施形態ではリアルタイム型に比べて、コンテンツの最新性はある程度、犠牲になるものの、レスポンス性能を著しく向上できる可能性がある。
コンテンツの最新性が犠牲になる理由は、利用者端末15からHTTPリクエストメッセージが届いた時点で、すでに蓄積されている音声ファイルをそのまま返送することにある。この音声ファイルは、前記取得スケジュールにしたがって取得したWebページ(例えば、WA1)に基づいて生成されるため、例えばこの取得スケジュールが1週間置きにWebページを取得するものであれば、その1週間のあいだに行われたWebページの更新には対応することができないからである。
また、レスポンス性能を著しく向上できる理由は、リアルタイム型と異なり、利用者端末15からのHTTPリクエストメッセージが届いてから、合成サーバ63がWebページ(例えば、WA1など)を取得したり、音声合成を行ったりする必要はなく、すでに生成済みの音声ファイルを返送するだけでよいからである。
なお、本実施形態では、音声合成履歴情報HY1に基づいて、生成済みのシナリオデータや生成ずみの音声ファイルを再利用できるため、合成サーバ63の処理能力を節約し、効率的に処理を進めることが可能である。これにより、取得スケジュールDB65に登録したURLの数がかなり多い場合でも、限られた処理能力で対応することが可能となる。
(C−2)第3の実施形態の効果
本実施形態によれば、第1、第2の実施形態と同等な効果を得ることができる。
加えて、本実施形態では、バックグラウンド型による高いレスポンス性能を、効率的に実現することが可能になる。
(D)他の実施形態
なお、上記第1〜第3の実施形態では、見出しとして、<h1>タグを用いる文字サイズの大きな見出しのみを用いたが、同じWebページ上に<h2>タグや、<h3>タグ等を用いて、より文字サイズが小さい見出しも混在させることができることは当然である。その場合、文字サイズが最も大きい見出しに基づいて記事を分けることができるため、1つの記事内に複数の見出しが含まれているケースにも、容易に対応することが可能である。
また、上記第1〜第3の実施形態で使用した各種の画面の構成例は、一例を示しているだけであるので、種々の変形が可能である。例えば、図8(B)のハイパーリンクの数は、図示した3つより少なくてもよく、多くてもよい。
さらに、上記第1〜第3の実施形態にかかわらず、ルールは、URLごとに設けるのではなく、Webページの構成をいくつかの類型に分け、この類型ごとに設けるようにしてもよい。その場合、各URLのWebページがいずれの類型に属するかを判定し、判定結果に応じたルールを適用するようにするとよい。これによって、必要なルールの数を低減することができる。
また、上記第1〜第3の実施形態にかかわらず、合成サーバと配信サーバは、同一のサーバマシン上に搭載することができる。その場合、合成サーバと配信サーバ間の通信は、当該マシン内部の内部で実行される。
なお、上記第1〜第3の実施形態では、Webページに含まれるテキストデータに関する処理のみを行ったが、必要に応じて、他のデータも活用することが可能である。
例えば、図2のように、Webページに画像データが含まれている場合には、図12のような音声生成画面上に、その画像を表示してもよい。また、画像には、写真、絵、図形などのほか、文字が画像として表現されたものも含まれる。文字認識の技術を活用すれば、このように画像としてWebページ上に配置された文字も、音声合成の対象とすることが可能である。
なお、前記配信サーバや合成サーバの機能は、利用者端末15とWebサーバ(例えば、14A)のあいだに配置されることの多いプロキシサーバに配置することも可能である。
また、上記第1〜第3の実施形態では、Webサーバ群14と利用者端末15のあいだに、合成サーバ(例えば、13)や配信サーバ12が介在するゲートウエイ型の構成となっているが、合成サーバの持つ特徴的な機能(テキスト提供部(例えば、33)や、ルールDB38などに対応する機能)は、利用者端末15側に配置することもでき、Webサーバ(例えば、14A)側に配置することもできる。
さらにまた、上記第1〜第3の実施形態では、Webページがネットワーク経由で取得されることを前提としているが、CD−ROMなどの記録媒体から得たWebページにも本発明は適用できるので、対象とするWebページは、必ずしもネットワーク経由で入手されるものでなくてもかまわない。
なお、本発明がHTML以外のマークアップ言語に対応可能であることは、すでに説明した通りである。上述したHDMLのほか、例えば、XMLやSGMLなどにも対応可能である。
また、前記HTTPは、その他の通信プロトコルに置換可能であり、前記TCPプロトコルは、その他のトランスポート層プロトコル(例えば、UDPプロトコルなど)に置換可能であり、前記IPプロトコルはその他のネットワーク層プロトコル(例えば、IPXプロトコルなど)に置換可能である。
さらに、前記CGIは、その他のアプリケーション連携機能に置換可能である。
以上の説明では主としてソフトウエア的に本発明を実現したが、本発明はハードウエア的に実現することも可能である。
10…通信システム、11…インターネット、12…音声データ配信サーバ、13…音声データ合成サーバ、14…情報サーバ群(Webサーバ群)、14A〜14D…情報サーバ(Webサーバ)、20,30…制御プログラム部、21,31…TCP/IP部、22,32…HTTP/CGI部、23…音声データ蓄積部、24…音声データDB、33、54,64…テキスト提供部、34…音声合成部、35…一時記憶部、36…音声データ蓄積依頼部、37…シナリオデータ生成部、38…ルールDB、WA1〜WD1…Webページ、PA1〜PD1,PA11〜PA14…音声ファイル、SY1…シナリオデータ、ME1,ME2…中間データ。