図1は、一実施形態に係る解析装置の機能ブロック図である。図示する通り、解析装置10は、変換部1、解析部2、制御部3及び合成部4を備える。ここでさらに、解析部2は形態素解析部21、統語境界推定部22及び韻律境界推定部23を備え、制御部3は修正部31、判断部32及び確認部33を備える。当該各部の個別の処理内容は以下の通りである。
変換部1は、解析装置10によって最終的に合成音声データへと変換される対象となる入力としてのテキストを読み込み、当該テキストを所定フォーマットのテキストに変換して解析部2(のうち形態素解析部21)へと出力する。変換部1における当該変換処理により、入力されたテキスト(タグ等の付随情報が含まれないプレーンテキスト)は次の処理部である解析部2での解析が可能なフォーマットへと変換される。
以下、一実施形態として、解析部2においてテキストはXML(Extensible Markup Language;拡張マークアップ言語)に基づくマークアップ言語を用いて解析を行うものとして説明を行う。さらに、解析部2において文書の論理構造を扱うために、W3C等により仕様が策定されたDOM(Document Object Model)により文書を木構造により表現して処理するものとする。このモデルではテキストも木構造のノードとなる。例えばXML要素のコンテンツは、当該XML要素ノードの子ノードとなり、コンテンツがテキストの場合、子ノードがテキストノードとなる。以下では一実施形態として、また、簡潔な説明を可能とするための便宜上からも、このようなXML及びDOMによる表現を用いるものとする。
当該一実施形態において変換部1は、入力されたテキストをXML文書の形式へと変換して解析部2へと出力する。ここで、適当な文書ルート要素を作成し、さらに入力されたテキスト全てをその子ノードであるテキストノードとし、XML文書に変換することができる。以下の例では文書ルート要素は名前"r"とする。例えば、「その子は12月31日に生まれた」というテキストTが入力された場合、XML文書としてのテキストT0に変換されて、
<r>その子は12月31日に生まれた</r>
が得られる。なお、後述する図3の例は当該テキストT0をさらに解析部2等において処理する場合の例となっている。
なお、周知のように、XMLにおいては要素及びその属性並びにその内容を以下の書式(1)のように記載することができる。また、要素に対して属性は定義されてなくともよく、この場合は以下の書式(2)のように要素及びその内容を記載することができる。また、要素はその内容が存在しない空要素であってもよく、この場合は以下の書式(3)のように当該空要素を記載することができるが、当該記載を省略して以下の書式(4)のように記載してもよい。後述する図3もXML文書の例であるため、当該書式を採用しており、このような書式における入れ子構造の関係から、入れ子の1つ内部に入ることがノードの親から子へと移動する関係に対応するものとして、ノード間の親子関係を定義することができる。
<要素名 属性名="属性値">内容</要素名> …(1)
<要素名>内容</要素名> …(2)
<要素名></要素名> …(3)
<要素名/> …(4)
解析部2では、各部21,22,23により変換部1から得たテキストに要素としての形態素の区別、統語境界、韻律境界を付与して制御部3へと出力する。ここで、解析部2において当該各要素が付与されたテキストは既に、合成部4に入力されることで音声合成が可能なデータ形式となっているテキストであるが、必ずしもユーザ等が望む音声合成結果が得られる適切なデータ内容(すなわち、形態素の区別、統語境界、韻律境界の具体的な付与のなされかたによって定まるデータ内容)として得られているとは限らない。そこで、制御部3においては、適切な音声合成結果が得られるようにするための各種の制御を行う。
一例として、後述する図2の一実施形態においては、解析部2から要素付与されて得られたテキストを修正部31において修正したうえで、図1中に矢印線L14で示すように当該修正テキストを再度、解析部2へと出力して2度目の解析を実施させる。制御部3では当該2度目の解析が実施されたテキストを受けとり、適切なデータ内容になっているものとして、図1中に矢印線L3で示すように当該テキストを合成部4へと出力する。合成部4では、制御部3から得られた形態素、統語境界、韻律境界の区別を付与されたテキストに基づき、当該テキストの音声を合成する。ここで、個別の形態素(品詞の区別の情報等も含む)に関して読み情報を辞書として用意しておき、統語境界及び韻律境界の情報を反映することで、合成部4では合成音声を得ることができる。
以下、解析部2の各部21,22,23の個別処理をそれぞれ説明する。
形態素解析部21では、変換部1から得られたテキストに対して、形態素解析を行い、当該テキストを形態素と呼ばれる意味上の最小単位の要素に分解し、当該分解結果を統語境界推定部22へと出力する。ここで、形態素解析は既存手法として実現することができ、任意の入力文中に出現する可能性のある全ての形態素の出現コストや形態素間のコストを事前定義しておき、それが最小(出現しにくいものに大きいコストを設定した場合)となる形態素の列を求めるようにすればよい。
統語境界推定部22は形態素解析部21で得られた形態素分解されたテキストに対して、既存手法であるチャンキングを行うことにより得られるチャンク間の境界を統語境界として、形態素分解されたテキストに当該統語境界の情報も含めたものを韻律境界推定部23へと出力する。
ここで、統語境界推定部22では、言語上、隣接する形態素との関係を考慮し、より大きな単位、例えば文節単位にまとめる処理を行う。この際、一般的にはまとめられたものの一塊をチャンクと呼び、このような処理はチャンキングと呼ばれる。これは隣接する形態素の種類を考慮し、同じまとまりになるもの、別のまとまりになるものを決めることで実現できる。例えば名詞と、それに続く助詞は同じ文節を構成する可能性が高く、一方助詞の後に名詞が続く場合、異なる文節である可能性が高い。このようなルールを事前定義しておくことで、統語境界推定部22においては形態素の列を文節単位になるようチャンキングできる。名詞や助詞といった品詞の情報は形態素解析部21における形態素への分解の際に得られている情報を利用すればよい。なお、チャンクが文法的な一まとまりと対応する場合、チャンク間の境界が文法的な境界(統語境界)となることから、当該チャンキングの処理は統語境界推定処理とも言えるものである。
韻律境界推定部23は、統語境界推定部22のチャンク間の関係及び形態素推定部21の形態素間の関係をさらに推定することにより、当該チャンク間としての統語境界及び形態素間(形態素間のうち統語境界ではないもの)のうち韻律境界に該当するものと、当該該当した韻律境界の種別(アクセント句境界、フレーズ境界、ポーズ挿入等)の情報と、を得て、以上の形態素解析部21及び統語境界推定部22での結果にさらに当該韻律境界の情報を加えたものを制御部3へと出力する。なお、韻律境界推定部23では、多数のチャンク列(構成要素としての形態素の品詞等の情報も含む)に対して韻律境界及びその種別を与えたものを学習データとして機械学習等により予め構築された学習器の利用により、統語境界推定部22からのチャンク列入力に対して当該出力を得るようにすることができる。
ここで、例えば先述のようにチャンクが文節に対応する場合は、文中の文節間の関係を解析する。また文節間の関係とは具体的には例えば係り受けの構造をいう。これは、文節に関する情報から係り受けのしやすさを機械学習しておき、これを用いて係り受け構造を推定できる。このような解析は一般に構文解析と呼ばれるが、本実施形態においては韻律境界の推定を目的として韻律境界推定部23において実行されるものである。
なお、構文解析の音声合成一般における意義及び本発明における意義は次の通りである。
音声合成を目的とするテキスト解析処理は読みの推定を目的としている。形態素情報にその形態素の読みに関する情報を付与しておき、形態素解析結果による形態素列に対応する読みを連結していくことで文の読みをある程度生成できるが、自然な読みを実現するためには、読みに関する情報のうち、韻律境界と言われるアクセント句境界、フレーズ境界、ポーズ挿入等を正確に推定する必要があり、大抵の場合先述の構文解析結果を必要とする。これは韻律境界と統語境界に強い相関がみられること、また、韻律境界の種別と、係り受け構造との間に相関がみられるためである。従って、音声合成を目的とするテキスト解析における構文解析の主要な目的は韻律境界推定であり、構文解析は韻律境界推定部23でなされる処理に含まれる処理とみなすことができる。
この一連の処理のうち、前段処理/後段処理の関係にあることから、統語境界推定が形態素解析結果の正確さに依存することは明らかである。また同様に、韻律境界推定のために行われる構文解析も統語境界推定の精度を前提としており、したがって形態素解析結果の影響も大きく受ける。このため、仮に形態素解析に誤りが含まれる場合、その後の処理全てに大きく影響する。さらに、韻律境界推定は技術的に難しく高い正解率を得ることが容易ではない。これは文全体を見るような処理が必要で、機械学習に基づく手法を用いる場合、学習データのカバー率を上げるためには大量の学習データが必要なのに対し、韻律境界に関する記述のある音声言語資源がそれほど多くないことによる。
ここで、当該韻律境界推定の技術的困難性は、音声合成の対象となるテキストの属性が様々に変化しうる場合(すなわち、同じテキスト入力であってもその属性が異なれば異なる音声合成出力が適切な出力結果として望まれる場合)、さらに高くなることは明らかである。すなわち、音声合成において、合成音声の聞きやすさを改善するために、特定単語の強調指示やポーズ挿入指示を明示的に行うことがあるが、当該指示はテキストの属性によって異なる。指示として例えば、日付や時刻を言っている箇所の強調や、ゆっくり話しかけている印象を与えるための多数のポーズ挿入等が挙げられる。しかし、入力が漢字仮名交じり文のみである場合にそのような指示を行うためには、入力テキストの属性に応じてそれぞれ異なる解析が必要になる。このための特定属性ごとにカスタマイズされたテキスト解析処理システムが音声合成システムとは別途に必要となり、システム全体のサイズを増大させることとなってしまうが、特に組み込みシステムではそれが問題となる。
本発明においては以下に説明するような各種の手法により、解析装置10を構築するためのリソースを節約しながら、当該技術的困難性に対処することが可能である。
図2は、一実施形態に係る解析装置10の動作のフローチャートであり、図3は、当該図2のフローにより処理されるテキスト例を、前述のテキストT0に対応するものとして示す図である。以下、図3の例を適宜参照しながら、図2の各ステップを説明する。
ステップS1では入力テキストを変換部1で読み込んでXML文書に変換したうえで、ステップS2へと進む。前述の通りの入力テキストTであれば、XML文書に変換したテキストT0が得られる。図3に例示するテキストT1〜T6は当該前述したテキストT0がさらに処理され変化していく例となっている。
ステップS2では、解析部2が変換部1で得られたテキストを形態素解析部21、統語境界推定部22及び韻律境界推定部23において順次に処理することで、当該テキストに形態素の区別を付与し、形態素をチャンクにまとめてその境界として統語境界を付与し、統語境界及び形態素間の中から韻律境界に該当するもの及び該当する韻律境界の種別を特定してからステップS3へと進む。
なお、当該ステップS1及びS2は図2において「1回目」の処理に該当するものであり、図1中では矢印L1,L11,L12,L13でそのデータ処理の流れが示されるものである。また、後述するステップS3は図1では矢印L14で、ステップS4(「2回目」の処理に該当)は図1では矢印L21,L22,L23でそのデータ処理の流れが示されるものである。
ここで、XML文書化されたテキストT0に関して、ステップS2で形態素解析部21、統語境界推定部22及び韻律境界推定部23が順次に処理した結果が図3でテキストT1,T2及びT3としてそれぞれ示されている。
ステップS2において形態素解析部21は、変換部1から得たテキストに対し、文書ルート要素の子孫ノードを入力とする形態素解析を行う。XML及びDOMツリーで実装する場合、テキストに対して形態素解析部21が、文書ルートの子ノードであるテキストノードのテキストを形態素解析し、その結果を、各形態素の文字列のテキストノードを子とする1つ以上のシステム生成形態素ノードで元のテキストノードを置き換えたものとして表現することができる。例えばテキストT0を形態素解析した結果が図3のテキストT1である。システム生成形態素要素の名前をここでは"gm"としている。
ここで、「システム生成」との形容は、解析部2(すなわちシステム)により自動生成された旨を表すものであり、ユーザU(図1参照)によってマニュアルで指定される旨を表す「ユーザ指定」等の形容と区別するためのものである。以下、このような区別を定義したものとして「システム生成」や「ユーザ指定」との形容を用いて説明することとする。
図3のテキストT1においては前述の書式(2)により<r></r>(文書ルート)で囲んで文書ルートの子ノードとして定義されるテキストノード(すなわち元のプレーンテキストT0)が、同じく書式(2)によりそれぞれ<gm></gm>(形態素ノード)で囲んで定義される13個の個別の形態素文字列としての子ノード(順番に「その」、「子」、「は」、「1」、「2」、「月」、「3」、「1」、「日」、「に」、「生ま」、「れ」及び「た」の13個)へと置き換えられている。なお、XMLでは改行文字も空白文字と同じ扱いとなるが、図3に例示する各例のテキストT1〜T6は見やすさの便宜上から改行付与して縦並びに表示しているものであるため、図3の各例において改行は無視して考えるものとする。
なお、形態素解析部21では前述の書式(1)を用いて各形態素に関する品詞等の追加情報も得たうえで、当該分解した形態素要素の属性として記載しておくことができる。ただし、図3のテキストの例では、このような形態素に対する属性としての品詞等の追加情報をその都度記載すると表記が煩雑化するため、その記載を省略して書式(2)で表記している。(後述する図4では書式(1)により、当該品詞等の属性も省略せずに表記した例が示されている。)
ステップS2において次に統語境界推定部22は、DOMツリーにおいて、形態素要素ノードと同じ階層に空要素(空要素の形式により当該境界の位置を示すもの)としてのシステム生成統語境界要素を挿入する。ここで、統語境界の種類も判別したうえで、システム生成統語境界要素の属性として記述することができる。なお、統語境界の例としては、主語直後、連体修飾語直後、述語部直前、等がある。
システム生成統語境界要素の名前をここでは"gsb"とすると、図3の形態素解析結果のテキストT1に対して統語境界を推定した結果のテキスト例がT2であり、形態素「その」及び「子」の間と、「は」及び「1」の間と、「に」及び「生ま」の間と、「た」の後ろと、の4箇所にシステム生成統語境界要素<gsb/>(書式(4)に即した空要素のもの)が挿入されている。ここでも、図面表示上の便宜から、統語境界の属性の記載は省略してある。
なお、図3に例示するテキストT1〜T6においては、例えば、上記のテキストT1が処理・加工等されてテキストT2が得られた場合に新たに挿入された4箇所のシステム生成統語境界要素<gsb/>を、当該処理・加工等されて変更された部分である旨が明確となるように下線付与し且つ太字として表記している。当該表記は明確化の便宜上の強調表記であって、XML等における表記書式を構成するものではない。以降のT3〜T6においても処理・加工等された部分は同様の強調表示としてある。
そして、ステップS2において最後に韻律境界推定部23は、システム生成統語境界要素(<gsb/>)で区切られる区間で統語構造が記述されていると考え、それに基づき空要素としてのシステム生成韻律境界要素(空要素の形式により当該境界の位置を示すもの)を挿入する。また、形態素列(「<gm>形態素文字列</gm>」の列)だけから見ても韻律境界が挿入されるべき形態素間(例えば複合名詞句内の形態素境界の一部)にも、空要素としてのシステム生成韻律境界要素を挿入する。この際のルールとして、韻律境界に統語境界が隣接する場合(韻律境界と統語境界との間に何の要素も存在しない場合)は、システム生成統語境界要素(<gsb/>)の前にDOMツリーにおける同じレベルでシステム生成韻律境界要素(空要素)を挿入するものとする。
韻律境界推定部23ではさらに、韻律境界の種類を、書式(1)(及び、空要素としての書式(4))を用いることでシステム生成韻律境界要素の属性として記述する。
システム生成韻律境界要素の名前をここでは"gpb"とし、また、韻律境界種別を表す属性tを定義し、文末を"E"、ポーズを"P1"、フレーズ境界を"P"、アクセント句境界を"A"とする。なお、フレーズ境界はアクセント句境界よりも大きい境界だが、ポーズとは異なり音声合成された際に無音区間は生じないものである。また、アクセント句境界も音声合成された際に無音区間は生じないものである。
上記のような表記規則のもと、図3にてテキストT3を韻律境界推定部23が処理した結果がテキストT4であり、形態素「は」及び「1」の間の統語境界<gsb/>の前にフレーズ境界としてのシステム生成境界要素<gpb t="P"/>が挿入され、形態素「月」及び「3」の間並びに形態素「3」及び「1」の間にアクセント句境界としてのシステム生成境界要素<gpb t="A"/>が挿入され、形態素「に」及び「生ま」の間の統語境界<gsb/>の前にアクセント境界としてのシステム生成境界要素<gpb t="A"/>が挿入され、形態素「た」の後ろの統語境界<gsb/>の前に文末としてのシステム生成境界要素<gpb t="E"/>が挿入されている。
ステップS3では、制御部3内の修正部31が、以上のステップS2において得られた音声合成用の情報が付与されたテキストに対して、ユーザUにとってより好ましい読み方(すなわち、音声合成結果)となるような修正を行う。修正部31による当該修正は、一実施形態ではユーザUが直接に修正のための情報を入力するマニュアル作業として行うことができ、この場合、制御部3はユーザUからの情報入力を受け付けるインタフェースとして機能し、当該ユーザ入力に従った修正を修正部31が実施する。別の一実施形態では、ユーザが望む読み方とするための修正法を予めルール化しておき、修正部31では当該ルールに従って自動で修正を行う。以下、マニュアル作業で修正する実施形態を説明する。
すなわち、ステップS2で得られたXML文書には、解析部2に含まれる形態素解析部21、統語境界推定部22及び韻律境界推定部23でそれぞれ推定された、形態素列、統語境界、韻律境界情報が、システム生成形態素要素、システム生成統語境界要素、システム生成韻律境界要素の形で含まれているので、ユーザUはこの情報を参考に、より好ましい読み方を生成するのに必要な修正を行い、図1中に矢印線L30で示されるように修正内容を修正部31へと入力する。
この際、その修正操作は、ユーザ指定形態素要素(以下、名前を"m"とする。)の追加、ユーザ指定統語境界要素(以下、名前を"sb"とする。)の追加、ユーザ指定韻律境界要素(以下、名前を"pb"とする)の追加、システム生成形態素要素gmの削除、システム生成統語境界要素gsbの削除、システム生成韻律境界要素gpbの削除に限る。システム生成形態素要素gm、システム生成統語境界要素gsb、システム生成韻律境界要素gpbをユーザは追加しないものとする。
当該追加及び/又は削除するためのユーザUに対するインタフェースは、例えば図3のテキストT3のような表示形式(ここで、下線・太字による強調表示は前述の通り説明上の便宜であるため、当該強調表示は除くものとする。)でステップS2の結果をユーザUに対して画面表示したうえで、当該画面上でのメニュー選択等の、任意の既存の入力インタフェースを用いて実現することができる。また、このような表示インタフェースのみに限らず、制御部3内の確認部33において音声インタフェースとして、当該ステップS2の結果として得られているテキストを合成部4と同手法で音声合成した結果を再生してユーザUが聞くようにすることで、ユーザ修正の判断の補助となるようにしてもよい。
ここで、ユーザ修正操作はシステム生成結果に対するユーザ判断に基づいて実施される。ユーザ判断は、(D1)システム生成結果の許容判断と(D2)システム生成結果の修正判断と、に分けられる。前者はさらに、(D1−1)システム生成結果の放置判断(2回目で当該結果が変更されることも許容)と、(D1−2)システム生成結果の確定判断(2回目で当該結果が変更されることを禁止)とに分けられる。ユーザ修正操作は、以上の(D1−2)確定判断と、(D2)修正判断と、を反映させるものとして実施される。従って、ユーザ修正操作がなされなかった箇所は(D1−1)放置判断に該当するものである。
上記(D2)修正判断を反映させるためのユーザ修正操作は、システム生成要素を削除したうえで、当該削除した箇所にユーザ指定要素を追加するというもの(すなわち、システム生成要素をユーザ指定要素で置換するというもの)である。上記(D1−2)確定判断を反映させるためのユーザ修正操作は、システム生成要素の上位にユーザ指定要素を挿入するというもの(すなわち、確定させたい箇所のシステム生成要素をユーザ指定要素で囲んで下位ノード化するというもの)である。
ユーザ修正作業の具体例として、よりゆっくり話している印象を与えるように、ポーズを追加する必要があるとユーザUが判断(D2)に類型化される判断をした場合、文末を除くシステム生成韻律境界の位置にその属性としてポーズ指示を行えばよい。この際、システム生成韻律境界要素は(ユーザ指定へと)変更することになるのでこれを削除し、同位置にユーザ指定韻律境界要素(属性はポーズ)を追加すればよい。また、統語境界については変更の必要がないとユーザUが判断(D1−2)に類型化される判断をしたものとすると、明示的に変更させないようにすることを伝えるため、要素gsbを要素sbの子ノードとするよう、要素sbを追加する。
図3では、上記のユーザ修正作業の具体例を修正部31がテキストT3に適用した結果がテキストT4として示されている。すなわち、テキストT3における4個のシステム生成韻律境界要素gpbが全て、判断(D2)のもとで、ユーザ指定韻律境界要素でその属性がポーズである<pb t="P1", i="0">に置き換えられている。ここで要素pbの属性iはその値が0の時に、前のpb要素までの区間に韻律境界を(次のステップS4において解析部2により)自動生成させないように指定するものであり、テキストT4の例においてはユーザが判断した4箇所以外にこれ以上の韻律境界要素を自動生成させないようにする旨を指定するものである。また、テキストT4では、判断(D1−2)のもとで、テキストT3の4箇所のシステム生成統語境界要素gsbがユーザ指定統語境界要素sbの子ノードとなっている。
ステップS4では、以上のステップS3で修正されたテキストを再度(すなわち、ステップS2での1回目に対してステップS4では2回目として)、解析部2が読み込むことで、形態素解析部21、統語境界推定部22及び韻律境界推定部23がこの順に再度、各処理を行う。
ステップS4にて形態素解析部21は、システム生成形態素要素gmの部分については処理をスキップし、ユーザ指定形態素要素(mとする)の部分が存在する場合、当該部分に対する形態素解析処理を行えばよい。
すなわち、システム生成形態素要素gmの子ノードではなく、ユーザ指定形態素要素mの子ノードであるテキストノードに対して、当該テキストを形態素解析して、1つ以上のシステム生成形態素要素gmノードを作成して元のテキストノードを置換、各形態素に対応する元のテキストノードの文字列を、作成したシステム形態素要素gmノードの子ノードとする。これにより、ユーザ指定形態素要素mの子ノードとして、一つ以上のシステム生成統語境界要素gmが生成されることとなる。当該処理の例や利点は後述する補足(3)において説明する。
図3のテキストT4の例では、ユーザ指定形態素要素mが存在しないので、ステップS4で形態素解析部21が処理した結果は変わらずテキストT4のままとなる。
ステップS4にて次に統語境界推定部22は、処理対象のテキストに対して1回目(ステップS2)と同様の統語境界推定処理を行う。ただし、当該2回目ではユーザ指定統語境界要素sbが存在する可能性があるので、以下の前処理を行ったうえで、1回目と同様にシステム生成統語境界要素gsbを生成するようにする。ここで、システム生成統語境界要素gsbを当該生成する際に、当該存在しうるユーザ指定統語境界要素sbに関して対処すべく、次の追加処理を行うと共に、次の追加制約を課して生成するものとする。
「前処理」として、ユーザ指定統語境界sbの下位にないシステム生成統語境界要素gsb(すなわち、(D1−2)確定判断の対象外であるシステム生成境界要素gsb)を全て削除する。
「1回目の処理に対する追加処理」として、ユーザ指定統語境界要素sbがあり、その子ノードに、それに対応するシステム生成統語境界要素gsbがない場合(すなわち、(D2)修正判断の結果としてのユーザ指定統語境界要素sbがある場合)は、ユーザ指定統語境界要素sbの属性の指定に沿ったシステム生成統語境界要素gsbをその子ノードとして生成する。
「1回目の処理に対する追加制約」として、ユーザ指定統語境界要素sbの属性情報を通じて、統語境界挿入に関する制約が指定されている場合には、当該制約に従うようにする。例えば、ユーザ指定統語境界要素sbの属性情報を通じて、「統語境界挿入を禁止」されている区間では、統語境界推定部22はシステム生成統語境界要素gsbを挿入しないようにする。また例えば、「境界になる可能性が高い」といった指定に基づき、所定規則に従って境界位置推定や境界種別推定のルールを変える(例えば、用いるパラメータを変える)ようにしてよい。また同様に「1回目の処理に対する追加制約」として、(D1−2)確定判断の結果としてユーザ指定統語境界要素sbの下位にあるシステム生成統語境界要素gsbは、そのまま変更しないようにする。
ここで特に、次の点に注意されたい。すなわち、仮にユーザ指定統語境界要素sbが全く存在しない場合を考えると、統語境界推定部22の処理の当該2回目(ステップS4)は1回目(ステップS2)と同一である、という点である。換言すれば、統語境界推定部22の処理は1回目と2回目とで全く同じ処理であり、2回目における上記の前処理、追加処理及び追加制約は、ユーザ指定統語境界要素sbが存在する場合に関する処理を定めたものに過ぎない、という点である。本発明ではこのようにして統語境界推定部22を実現するためのリソースを効率活用することが可能となる。なお、形態素解析部21及び韻律境界推定部23に関しても当該各部の個別処理に関して全く同様の関係が成立し、1回目と2回目との処理は同一のものであり、2回目の処理は1回目の処理においてユーザ指定要素(それぞれ、ユーザ指定形態素m及びユーザ指定韻律境界要素pb)が存在しないことから省略されていた処理が追加でなされるものに過ぎない。
図3のテキストT4の例では、ユーザ指定形態素要素mが存在しないので、ステップS4で形態素解析部21が処理した結果は変わらずテキストT4のままであり、当該テキストT4をさらにステップS4で統語境界推定部22が処理した結果がテキストT5である。前述の通り、テキストT4において確定判断(D1−2)が与えられているので、子ノードとしての形での4個のシステム生成統語境界要素<sb><gsb/></sb>がテキストT5においてもそのまま残っている。
ステップS4にて最後に韻律境界推定部23は、処理対象のテキストに対して1回目(ステップS2)と同様の統語境界推定処理を、ユーザ指定韻律境界要素pbが存在しうるもとにおいて行う。具体的には、前述した統語境界推定部22と形式上は全く同様の処理を統語境界ではなく韻律境界を対象として行うようにすればよい。すなわち、韻律境界に対して「前処理」を行ったうえで、「1回目と同様の処理」を「追加処理」及び「追加制約」と共に行うようにすればよい。従って、前述した統語境界推定部22の2回目の処理の説明において「ユーザ指定統語境界要素sb」及び「システム生成統語境界要素gsb」との記載をそれぞれ、「ユーザ指定韻律境界pb」及び「システム生成統語境界要素gpb」との記載に置き換える等することで統語境界に対する処理を韻律境界に対する処理へと読み替えたものが、韻律境界推定部23の当該2回目の処理内容である。(従って当該読み替える際には、「統語境界」等も「韻律境界」等にそれぞれ置き換えるようにすればよい。)
なお、前述した形態素解析部21における2回目の処理も、上記と同様に、前述した統語境界推定部22の2回目の処理と形式上は全く同様の処理を統語境界ではなく形態素を対象として行うようにするものとしても実現することが可能なものである。すなわち、「統語境界」等を「形態素」等に読み替えることで、形態素に対して「前処理」を行ったうえで、「1回目と同様の処理」を「追加処理」及び「追加制約」と共に行うようにすればよい。ユーザ指定形態素mは、システム生成形態素gmに対する「追加処理」及び「追加制約」を与えるための目印として機能するものである。
図3のテキストT5をステップS4で韻律境界推定部23が処理した結果がテキストT6であり、上記の追加処理に該当する処理として処理前のT5における4箇所のユーザ指定韻律境界要素pbに対して属性が同じシステム生成韻律境界要素gpbが子ノードとして生成されている。
以上、図2のステップS4を終えるとステップS5へ進み、合成部4がステップS4で得られたテキストを読み込んで音声合成を行い、図2のフローは終了する。当該音声合成においては、システム生成形態素要素gm及びその属性(及び形態素に対応する要素文字列)、システム生成統語境界要素gsb及びその属性、システム生成韻律境界要素gpb及びその属性に基づいて音声を合成し、ユーザ指定形態素要素、ユーザ指定統語境界要素、ユーザ指定生成韻律境界要素は無視するものとする。制御部3では、当該無視されるユーザ指定形態素要素、ユーザ指定統語境界要素、ユーザ指定生成韻律境界要素を予め削除してから合成部4へテキストを出力するようにしてもよい。本発明ではこのようにユーザ指定は解析部2のみで反映され、合成部4では直接にユーザ指定を考慮する必要がない(解析部2の出力からユーザ指定が間接的に音声合成処理へと反映される)ことからも、リソースの効率活用が可能となる。
ここで、図2のステップS3における修正部31による修正の上記とは別の実施形態として、ユーザUによるマニュアル作業を受け付けるのではなく修正部31が自動で修正を行う実施形態を説明する。この場合、ステップS2で解析部2から得られるテキストは、図3のテキストT4として例示した通り、システム生成形態素要素gm及びその属性(及びその内容としての形態素に対応する要素文字列)、システム生成統語境界要素gsb及びその属性並びにシステム生成韻律境界要素gpb及びその属性、をそれぞれ要素としたシーケンスで構成されるものであるため、当該シーケンスに対するルールベース等の手法によって修正部31では自動修正を行うことが可能である。
この際、ユーザによるマニュアル指定の実施形態における「ユーザ指定」の要素に対するのと同様の扱いを、修正部31による「システム自動修正」の要素に対しても適用することで、ステップS3に続くステップS4及びS5も同様に実現することが可能である。例えばマニュアル修正の場合における「ユーザ指定」形態素要素と同様の扱いを「システム自動修正」形態素要素に関しても適用すればよい。
また、修正部31による自動修正操作の範囲も、ユーザによるマニュアルでの修正操作の場合と同じ範囲内とすればよい。すなわち、「システム自動修正」の各要素の追加と「システム生成」の各要素の削除に限るものとし、「システム生成」の各要素を新たに追加することは行わないものとすればよい。
例えば、ユーザUによるマニュアル作業での修正として説明した例も、修正部31による自動修正で実現することが可能である。この場合、以下のようなルールを設けておけばよい。
(ルール1)文末を除くシステム生成韻律境界の位置にその属性としてポーズ指示を加えたうえで「システム自動修正」韻律境界とする。
(ルール2)システム生成統語境界要素についてはこれ以上の変更を行わないようにすべく、「システム自動修正」統語境界要素に置き換える。
(ルール3)「システム自動修正」韻律境界に対して前述の「i=0」の指示を加える。
例えばさらに、上記のルール3の変形例として、「システム自動修正」韻律境界の間にある要素に対するルールベースの判定で「i=0」の指示を加えるか否かを判定するようにしてもよい。
次に、自動修正/マニュアル修正のいずれで実現されるステップS3の修正部31の場合でも適用可能であり、合成部4で所望の合成音声を得るのに好適な修正の一実施形態を説明する。まず、当該一実施形態の背景は以下の通りである。
一般に、形態素辞書(形態素解析部21で利用する辞書)に含まれるそれぞれの形態素の情報として、品詞型情報等も含めることができる。このような情報を用いることで、形態素解析器((形態素解析部21も含む)はその情報に基づき、形態素解析結果の各形態素に、その品詞型等、形態素の情報を付与できる。例えば音声合成では、文中に含まれる人名や地名と言った固有名詞は重要な情報をもつことから、その個所のみを強調する形で音声を合成したいことがある。従来は、その処理を行うため、音声合成システムへの入力に先立ち、まず別の形態素解析システムで形態素解析を行って、文中の固有名詞の位置を探してその個所の強調を指示し、音声合成システムに入力する構成を必要としていた。これは、外部の形態素解析システムだけでは音声合成に必要な情報を全て生成できず、音声合成システムにおける音声合成部の入力を外部で直接生成することが難しいたためである。
これに対し、本発明の一実施形態においては、解析装置10に含まれる形態素解析部21、統語境界推定部22、韻律境界推定部23の各処理を、強調位置の抽出に使うことができる。ここでは、形態素解析部21においてシステム生成形態素要素に例えば品詞型情報をその属性として追加して出力するものとする。これは例えば、利用する形態素辞書には各形態素の品詞型情報を予め登録して用意しておき、形態素解析結果に対して、それらをままコピーして出力すればよい。
解析装置10内部で当該品詞型情報を常に考慮し、それを反映させた処理を行うことも可能であるが、当該一実施形態においては、ユーザによるカスタマイズ性を重視し、強調箇所の決定については、解析装置10内部(特に、解析部2)で設定された規則に基づく処理ではなく、ユーザが明示的にした箇所のみを強調する処理を行うように合成部4を構成する。この場合、ユーザは指定箇所の強調箇所を明示的に指定する必要があるが、当該指定をルールベースで行うことが可能である。
例えば、固有名詞だけを強調したい場合は、ステップS2により解析部2から1度返されたXML形式のテキストデータに対し、その品詞型が「固有名詞」となっているシステム生成形態素要素を囲む形で強調指示を行えばよい。この処理は容易に行うことができる。強調する対象となる品詞型を変更する場合でも、解析部2の内部処理を変更することなく、ステップS2により解析部2から1度返されたXML形式のテキストデータ強調指示の追加処理を変更すればよい。
当該強調表示は、再度の解析部2によるステップS4の解析処理においては無視して扱われ、ステップS5の音声合成において強調すべき箇所として扱われることとなる。
図4は当該強調指示を行う例を示す図であり、ステップS1でプレーンテキストT20「鈴木さんに連絡して」を読み込んだ際にステップS2で得られるテキストT21と、当該テキストT21に対してステップS3で強調指示を行った2つの例T22,T23と、が示されている。ここで、"pos"が形態素における品詞型を表す属性名とし、強調指示要素をemphとしている。
すなわち、テキストT21における形態素の品詞型の属性を参照することで、自動でテキストT22のように固有名詞としての形態素である「鈴木」の箇所に強調指示要素を加えることができる。テキストT23はさらに別の一実施形態として当該固有名詞部分での形態素解析結果を固定させる(すなわち、次のステップS4で変更させないようにする)ために、強調指示と併せて、当該箇所のシステム生成形態素要素gmをユーザ指定形態素要素mに書き換えるものである。これによりステップS4にて「鈴木」の部分が他の形態素の一部となってしまう可能性を排除できる。
以上、本発明によれば、図2のステップS2,S4のように解析部2において同じ処理を繰り返し適用できるので、リソースを効率的に活用してテキスト属性に応じた所望の合成音声を得ることができる。特に、解析部2自体は特定のテキスト属性へ向けてカスタマイズされたものではない、汎用的なものとして用意しておき、特定属性へ向けた音声合成に関してはステップS3の修正部31の処理(前述の通りの追加・削除から構成され、形式上、簡素に構成される処理)のみによって実現することが可能となる。以下、補足事項を述べる。
(1)図2では修正を1回行うものとしたが、修正は2回以上行うようにしてもよいし、ステップS2で既に適切な出力テキストが得られているのであれば修正を行わないようにしてもよい。図5は、このように状況に応じて修正の回数が変わる一実施形態のフローチャートである。
図5のステップS11は、ステップS1(図2)と同様であり、変換部1でテキストを解析部2が処理可能な形式に変換してからステップS12へと進む。ステップS12は、ステップS2又はS4(図2)と同様であり、解析部2が当該時点でのテキストに対して解析を行ってからステップS13へと進む。
ステップS13では、制御部3が当該時点において音声合成用として適切なテキストが得られているか否かを判断し、得られていればステップS14へと進み、得られていなければステップS15へと進む。ステップS13における判断は、当該時点におけるテキストを解析することで制御部3(内の確認部33)が自動判断するようにしてもよいし、ユーザUによるマニュアル判断を制御部3において受け付け、当該マニュアル判断に従うようにしてもよい。
ステップS15は、ステップS3(図2)と同様であり、修正部31が当該時点のテキストを修正し、カウンタ変数i(図5のS12,S13,S15のループ処理の回数を管理する変数)を1だけ増分してからステップS12に戻る。当該戻ったステップS12ではi+1回目の処理として解析部2が再度、テキスト解析を行うこととなる。
ステップS14は、ステップS5(図2)と同様であり、合成部4が当該時点で得られているテキストより音声を合成して図5のフローは終了する。
(2)ユーザ指定形態素要素、ユーザ指定統語境界要素、ユーザ指定韻律境界要素は最初の入力(図2のステップS1又は図5のステップS11での変換部1への入力)から含まれていてもよい。その場合は、ルート要素"r"も必要になる。
(3)形態素解析部21の処理において、ユーザ指定形態素要素については、修正判断(D2)の指定のもとでの2回目以降の「追加処理」において必ず単独の形態素要素(ユーザ指定されたのと同一の単独のシステム生成形態素要素)として扱うようにさせることも可能であるが、別手法として、その子ノードであるテキストノードの文字列が、複数形態素で構成され得ることを許容した処理とすることもできる。この場合、ユーザが固有名詞等、文字数の多い単語を1形態素として入力した場合(修正部31を介して指定した場合)でも、システム生成形態素要素はユーザ指定形態素内で細かく生成される。ただし、ユーザ指定形態素内のシステム生成形態素間でも、特に韻律境界は生成され得るので、システム生成統統語境界要素及びシステム生成韻律境界要素の挿入処理においては、ユーザ指定形態素途中への韻律境界生成を許容する。また、韻律境界生成の手掛かりとするため、ユーザ指定形態素途中への統語境界生成を許容しても良い。この場合、ユーザ指定統語境界要素はユーザ指定形態素要素の下位に配置され、そのさらに下位にシステム生成統語境界要素が配置される。韻律境界要素についても同様である。
例えば、先述の図3の例では、「31」と「3」「1」の2形態素として扱ったが、これはシステムの設計に強く依存し、例えば「31」を1形態素とする構成のシステムもあり得る。ユーザが「31」を1形態素として指示する可能性を考えると、ユーザ指示形態素要素は複数のシステム生成形態素で構成され得る、とした方が好ましい。この場合、ユーザ指示形態素要素の名前を"m"とするとき、入力
<m>31</m>
に対して、形態素解析部21は
<m><gm>3</gm><gm>1</gm></m>
のような結果を返す。
統語境界推定部22及び韻律境界推定部23はそれぞれ、当該ユーザ指定形態素要素mの子ノードの箇所においては、例えば親であるユーザ指定形態素要素を考慮せず、その子ノードが、他のルートノードの子ノードと同一階層にあるものを見なして処理を2回目以降(及びこれと同一の1回目)の処理を実施すればよい。あるいは、ユーザ指定形態素要素を考慮したより複雑なルールを定め、そのルールに沿った処理も可能である。
(4)統語境界や韻律境界については、形態素より上位の大きな単位を、形態素に対する親要素として定義して扱う方法も考えられる。ただしその方法では、一般に統語情報と韻律情報の親子関係が場合によって変わってしまうため取り扱いが難しくなる。例えば、「12月31日に」は1文節だが、韻律的には「じゅうにがつ」「さんじゅう」「いちにちに」の3つ、あるいは「じゅうにがつさんじゅう」「いちにちに」の2つで構成され、一方で、「その子は」は「その」「子は」の2文節になるのに対して、韻律的には通常1つにまとめられた読みとなる。そのために先述の図3の例では、統語境界、韻律境界については、形態素とは親子関係とはせず、形態素と同じレベルでその位置を表現している。その場合でも、統語境界と韻律境界が対応するときは、統語境界タグの直前に韻律境界タグが挿入される、といったルールを定めておけば、ユーザは中間結果(図2のステップS3や図5のステップS13でのマニュアル確認の対象としての中間結果)から両者の対応関係の有無を容易に知ることができる。
(5)以上説明してきた処理は、マークアップ言語によるテキストに対する直接の文字列処理として実現する代わりに、DOMオブジェクトに対するAPI操作で実現してもよい。API操作の方が文書木構造との対応が明確なことから、テキスト解析結果に対する処理は容易である。また、説明ではXMLおよびDOMを例示として用いたが、XMLやDOM文書に限らず、同様の論理構造で表現される文書に対しても適用可能である。整形式(well-formed)XML文書はルート要素の実在を要求するが、例えば仮想的なルート要素を置き、その子要素から表現するような文書形式を用いた場合でも、同様の処理は可能である。
(6)解析装置10は一般的な構成のコンピュータとして実現可能である。すなわち、CPU(中央演算装置)、当該CPUにワークエリアを提供する主記憶装置、ハードディスクやSSDその他で構成可能な補助記憶装置、キーボード、マウス、タッチパネルその他といったユーザからの入力を受け取る入力インタフェース、ネットワークに接続して通信を行うための通信インタフェース、表示を行うディスプレイ、カメラ及びこれらを接続するバスを備えるような、一般的なコンピュータによって解析装置10を構成することができる。ここでさらに、音声出力のためのスピーカを備えていてもよい。また、図1に示す解析装置10の各部の処理はそれぞれ、当該処理を実行させるプログラムを読み込んで実行するCPUによって実現することができるが、任意の一部の処理を別途の専用回路等において実現するようにしてもよい。