(57)【特許請求の範囲】
【請求項１】
入力される音声データからアクセント位置及び区切り位置の少なくとも一方を示す第１位置データを取得する取得処理と、前記音声データに対応するテキストデータから生成された複数の形態素を含む形態素データに付与されているアクセントの位置及び前記複数の形態素間の区切り位置の少なくとも一方を示す第２位置データと、前記音声データから取得された第１位置データとを比較する比較処理と、前記比較処理にて前記第１及び第２の位置データが一致していない場合には、前記形態素データに対して前記第２位置データに代えて前記第１位置データを付与する処理を実行する処理部を備え、
前記処理部はさらに、前記比較処理において、前記第１位置データが示す区切り位置と第２の位置データが示す区切り位置と一致する場合は、前記形態素データに対して、前記第２の位置データが示す位置に、読点の情報を付与する、音声情報作成装置。
【請求項２】
前記音声情報作成装置はさらに、
前記テキストデータに対して形態素解析処理を実行することにより、前記複数の形態素を含む形態素データを生成する形態素解析部を有する、請求項１に記載の音声情報作成装置。
【請求項３】
前記処理部は、前記取得処理として、前記音声データの無音区間の位置を前記第１位置データの区切り位置として取得する処理を実行する、請求項１または２に記載の音声情報作成装置。
【請求項４】
前記処理部は、前記取得処理として、前記複数の形態素それぞれに対応する前記音声データの区間内で、前記音声データの基本周波数を判別する処理と、前記音声データの区間内で前記基本周波数が最も高い位置を、前記第１位置データのアクセント位置として取得する処理を実行する、請求項１乃至３のいずれかに記載の音声情報作成装置。
【請求項５】
前記処理部は、前記取得処理として、前記複数の形態素それぞれに対応する前記音声データの区間内で、前記音声データの信号強度を判別する処理と、前記音声データの区間内で前記信号強度が最も高い位置を、前記第１位置データのアクセント位置として取得する処理を実行する、請求項１乃至３のいずれかに記載の音声情報作成装置。
【請求項６】
処理部を備えた音声情報作成装置に用いられる音声情報作成方法であって、前記処理部が、
入力される音声データからアクセント位置及び区切り位置の少なくとも一方を示す第１位置データを取得し、
前記音声データに対応するテキストデータから生成された複数の形態素を含む形態素データに付与されているアクセントの位置及び前記複数の形態素間の区切り位置の少なくとも一方を示す第２位置データと、前記音声データから取得された第１位置データとを比較し、
前記第１及び第２の位置データが一致していない場合には、前記形態素データに対して前記第２位置データに代えて前記第１位置データを付与し、
前記第１位置データが示す区切り位置と第２の位置データが示す区切り位置と一致する場合には、前記形態素データに対して、前記第２の位置データが示す位置に、読点の情報を付与する、音声情報作成方法。
【請求項７】
音声情報作成装置として用いられるコンピュータに、
入力される音声データからアクセント位置及び区切り位置の少なくとも一方を示す第１位置データを取得するステップと、
前記音声データに対応するテキストデータから生成された複数の形態素を含む形態素データに付与されているアクセントの位置及び前記複数の形態素間の区切り位置の少なくとも一方を示す第２位置データと、前記音声データから取得された第１位置データとを比較するステップと、
前記第１及び第２の位置データが一致していない場合には、前記形態素データに対して前記第２位置データに代えて前記第１位置データを付与するステップと、
前記第１位置データが示す区切り位置と第２の位置データが示す区切り位置と一致する場合には、前記形態素データに対して、前記第２の位置データが示す位置に、読点の情報を付与するステップと、
を実行させるプログラム。
【請求項８】
請求項１乃至５のいずれかに記載の音声情報作成装置と、
前記音声データから音素片データを切り出す処理と、前記音素片データ、前記音素片データを表わす音素ラベル、及び前記音声情報作成装置により前記音素片データに対応する形態素に付与されたアクセント情報を音声データベースに登録する処理と、を実行する登録処理部と、
を備えた音声データベース作成装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、音素片データに付与されるアクセント情報声を作成する音声作成装置、方法、及びプログラム、並びに音声データベース作成装置に関する。
【背景技術】
【０００２】
音声合成のための音声データベースの作成では、学習用の音声データから音素を単位とするセグメント区間ごとの部分が切り出されて音素片データとされ、当該セグメントに対応する音素ラベルをキーとして音声データベースに登録される。合成品質向上のために、登録される音素片データにはアクセント情報が付加される。このときまず、音声データに対応するテキストデータに対して形態素解析処理が実行され、その結果得られる音素ごとにアクセント情報が付与される。次に、セグメントごとに、当該セグメントの音素と形態素解析処理で得られる音素との対応付けが行われてそれに付与されているアクセント情報が取得され、当該セグメントの音素片データとともに、音声データベースに登録される。
【０００３】
ここで、音素片データのもととなる学習用の音声データは必ずしも対応するテキストデータから得られる言語情報に基づくアクセントで発話されているとは限らない。そこで従来、テキストデータから得られる言語情報に基づいて生成されるアクセント情報を、音声データの発話から得られる基本周波数情報に基づいて修正する技術が知られている（例えば特許文献１，２に記載の技術）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１２−１８９７０３号公報
【特許文献２】特開平６−３３７６９１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
上述したように、音素片データにアクセント情報を付与するためには、音声データから得られるセグメントごとの音素と、当該音声データに対応するテキストデータに対する形態素解析処理で得られる音素との、対応付けを行う必要がある。
【０００６】
ここで、音声データの実際の発話では息継ぎが行われ、息継ぎが行われるタイミングでは音声データの値は無音又はそれに近い値となる。以下、このタイミングを「空白タイミング」と呼ぶ。そして、この音声データがセグメント分割された場合には、上記空白タイミングは無音を示す音素を有するセグメントとして検出される。一方、この空白タイミングは、一般的には形態素の区切りに対応しこの位置に句読点が存在する場合が多いが、句読点が検出されないケースもある。また、空白タイミングが言いよどみにより発生したような場合には、その空白タイミングが言語情報上の例えば１つの形態素の途中の音素の位置になったりするケースもある。これらのケースでは、セグメントごとの音素と形態素解析処理で得られる音素との対応付けが、うまく行われないことになる。
【０００７】
しかし、前述の従来技術では、空白タイミングの発生は考慮されていないため、上記対応関係がずれて音素片データごとに正しいアクセント情報が得られない場合があるという課題があった。また、言語情報から得られるアクセント情報の位置と音声データの発話から得られる基本周波数の位置との対応関係もずれてしまうため、基本周波数に基づくアクセント情報の修正もうまくいかな場合があるという課題があった。
【０００８】
本発明は、音声データの空白タイミングを考慮することにより正しいアクセント情報を得られるようにすることを目的とする。
【課題を解決するための手段】
【０００９】
態様の一例では、入力される音声データからアクセント位置及び区切り位置の少なくとも一方を示す第１位置データを取得する取得処理と、音声データに対応するテキストデータから生成された複数の形態素を含む形態素データに付与されているアクセントの位置及び複数の形態素間の区切り位置の少なくとも一方を示す第２位置データと、音声データから取得された第１位置データとを比較する比較処理と、比較処理にて第１及び第２の位置データが一致していない場合には、形態素データに対して第２位置データに代えて第１位置データを付与する処理を実行する処理部を備え、処理部はさらに、比較処理において、第１位置データが示す区切り位置と第２の位置データが示す区切り位置と一致する場合は、形態素データに対して、第２の位置データが示す位置に、読点の情報を付与する。
【発明の効果】
【００１０】
本発明によれば、音声データの空白タイミングを考慮することにより正しいアクセント情報を得ることが可能となる。
【図面の簡単な説明】
【００１１】
【図１】本発明による音声情報作成装置の実施形態のブロック図である。
【図２】セグメントデータのデータ構成例を示す図である。
【図３】セグメントデータの具体例を示す図である。
【図４】形態素データのデータ構成例を示す図である。
【図５】形態素データの具体例を示す図である。
【図６】形態素ラベルデータのデータ構成例を示す図である。
【図７】形態素ラベルデータの具体例を示す図である。
【図８】学習用ラベルデータのデータ構成例を示す図である。
【図９】基本周波数データのデータ構成例を示す図である。
【図１０】音声情報作成装置をソフトウェア処理として実現できるコンピュータのハードウェア構成例を示す図である。
【図１１】データ付与処理の例を示すフローチャートである。
【図１２】対応付け処理の詳細例を示すフローチャート（その１）である。
【図１３】対応付け処理の詳細例を示すフローチャート（その２）である。
【図１４】調整後の形態素データの例を示す図である。
【図１５】アクセント修正処理の詳細例を示すフローチャートである。
【発明を実施するための形態】
【００１２】
以下、本発明を実施するための形態について図面を参照しながら詳細に説明する。音声合成においては、合成目標の音素列に最も適合する音素片データ列が音声データベースから検索され、それらの音素片データが結合されることにより音声データが合成される。本実施形態は、音声合成のための音声データに登録される音素片データを生成するときの、当該音素片データに付与されるアクセント情報を作成する技術に関するものである。
【００１３】
ここで、「音声合成」とは、文章を表すテキストデータが入力されたときに、そのテキストデータを人間が読み上げるときの音声と同様の音声をコンピュータから発声させることのできる音声データを合成する処理をいう。また、「音素片データ」とは１つの音素を表す時間域音声波形データをいう。また、「音素」とは、意味の差異をもたらす言語上の最小の単位をいい、例えば単語「あらゆる」があったとき、それをそれぞれが意味の差異を持つように分解した「ａ」「ｒ」「ａ」「ｙ」「ｕ」「ｒ」「ｕ」は、それぞれ音素を形成する。音声合成の処理ではまず、入力されたテキストデータに対して、形態素辞書が参照されながら形態素解析処理が実行されることにより、形態素データが得られる。ここで、「形態素」とは、それ自体が意味を担う言語上最小の単位をいい、例えば「あらゆる現実をすべて自分のほうへねじ曲げたのだ。」という内容のテキストデータがあったときに、形態素解析処理によりそのテキストデータの内容は例えば、「あらゆる」「現実」「を」「すべて」「自分」「の」「ほう」「へ」「ねじ曲げ」「た」「の」「だ」「。」という１３個の形態素に分解される。音声合成の次の段階として、形態素データが更に分解されて、音素の羅列からなるデータ（本実施形態では以下これを「形態素ラベルデータ」と呼ぶ）が生成される。例えば、上記テキストデータから得られる１つの形態素「あらゆる」があったとき、その形態素は、それぞれ音素「ａ」「ｒ」「ａ」「ｙ」「ｕ」「ｒ」「ｕ」に対応する音素ラベルを有する各形態素ラベルデータが生成される。音声合成のその次の段階として、形態素ラベルデータごとに、それぞれの音素ラベルで前述した音声データベースが検索されることにより、その音素ラベルと同じ音素ラベルが付与された音素片データが検索される。音声合成の最後の段階として、形態素ラベルデータごとに抽出された各音声データが結合されることにより、入力されたテキスト文章に対応する音声データが合成される。
【００１４】
図１は、音声合成のための音声データベースに登録される音素片データを生成するときの、当該音素片データに付与されるアクセント情報を作成するための、本発明による音声情報作成装置１００の実施形態のブロック図である。音声情報作成装置１００は、音声解析部１０１と言語解析部１０２とデータ付与部１０３とを備え、最終的に学習用ラベルデータ１３０を出力する。音声解析部１０１は、音声認識部１１０、音響モデル１１１、及び基本周波数解析部１１２を含む。言語解析部１０２は、形態素解析部１２０及び形態素辞書１２１を含む。
【００１５】
音声認識部１１０は、入力される学習用の時間域の音声データ１１３に対して、音響モデル１１１を参照しながら音声認識処理を実行することにより、当該音声データ１１３をそれぞれが１つの音素が継続する音声区間であるセグメントに分割し、その結果、セグメントデータ１１４を出力する。
【００１６】
図２は、セグメントデータ１１４のデータ構成例を示す図である。この図に示されるように、音声認識部１１０による音声認識処理で得られる合計L個の音素ごとに、各セグメントデータsegment[0],segment[1],・・・,segment[L-1]はそれぞれ、seg_id、phone、start、end、prev、nextの各変数データを保持する。seg_idは、セグメントＩＤ（識別子）を保持する。phoneは、音素ラベルを保持する。startは、開始時刻（サンプル番号）を保持する。endは、終了時刻（サンプル番号）を保持する。prevは、１つ手前のセグメントデータ１１４へのポインタ、nextは、１つ後ろのセグメントデータ１１４へのポインタを保持する。現在のセグメントデータ１１４が例えばsegmen[1]であれば、prevはsegment[0]の先頭アドレスを保持し、nextはsegment[2]の先頭アドレスを保持する。また、現在のセグメントデータ１１４が例えば先頭データsegment[0]であれば、prevは未定義値であるNULL値を保持する。現在のセグメントデータ１１４が例えば末端データsegment[L-1]であれば、nextはNULL値を保持する。prevとnextを使ってセグメントデータ１１４が接続されることにより、セグメントデータ１１４が例えばメモリ上の末尾のアドレスに追加されても、そのセグメントデータ１１４を任意の箇所に挿入することができる。
【００１７】
図３は、セグメントデータの具体例を示す図である。例えば、seg_id=3のセグメントデータ１１４において、phoneは、音素ラベルとして「ａ」を保持する。startは、開始時刻として「730」（サンプル目）を保持する。Endは、終了時刻として「810」（サンプル目）を保持する。prevは、１つ前のセグメントデータ１１４のseg_idとして「2」を保持する。nextは、１つ後ろのセグメントデータ１１４のseg_idとして「4」を保持する。なお、図３において、先頭のseg_id=0又は17番目のseg_id=16の各セグメントデータ１１４のphoneは、「#」を保持する。この「#」は、それらが登録されるセグメントデータ１１４に対応するセグメントの区間において、音声データ１１３の値がゼロ又はゼロ近傍である無音と判別されたことを示している。
【００１８】
特には図示しない音声データベースへの登録時には、上述のセグメントデータ１１４のstartとendが示すセグメントのサンプル区間ごとに、音声データ１１３から当該サンプル区間に対応する波形データが切り出されて音素片データとされる。そして、その音素片データが、当該セグメントに対応する音素を表す音素ラベルを検索キーとして、音声データベースに登録される。
【００１９】
音声合成時に、形態素ラベルデータごとに、各音素ラベルに対応する音素片データを音声データベースから検索するだけでは、品質の良い合成音声データは得られない。理想的には、入力されたテキスト文章を実際に人間が読み上げたときの音声データから生成された音素片データが音声データベースに登録され検索されれば、最も良い品質の合成音声データが得られる。しかし、音声データベースの記憶容量には限りがあるため、全てのテキスト文章に対応する音素片データを登録することはできない。そこで、音素片データにアクセント情報が付与されて、音声データベースに登録される。一方、音声合成時には、合成対象のテキストデータに対する形態素解析処理時にもアクセント情報が生成され、形態素ラベルデータごとに付与される。そして、形態素ラベルデータごとに、それぞれの音素ラベルに対応する音素片データを音声データベースから検索するときに、形態素ラベルデータに付与されたアクセント情報に近い値のアクセント情報を有する音素片データを抽出して結合する。これにより、音声合成対象のテキストデータに近いアクセント状態で発音された音素片データを音声データベースから選択することが可能となり、合成音声データの品質を高めることが可能となる。
【００２０】
具体的には、図１に示される本実施形態では、言語解析部１０２を構成する形態素解析部１２０がまず、学習用の音声データ１１３に対応するテキストデータである発話テキスト１２２を入力し、その発話テキスト１２２に対して、形態素辞書１２１を参照しながら、形態素解析処理を実行する。この結果、形態素解析部１２０は、形態素データ１２３と形態素ラベルデータ１２４を出力する。形態素解析部１２０は、形態素データ１２３が示す形態素に基づいて決定したアクセントブロックごとに、アクセント位置を検出する。ここで、「アクセント」とは、単語又は単語結合（一言で言い切る範囲）での音素の基本周波数の相対的高低や音素の信号強度の相対的強弱を言い、その単語又は単語結合を「アクセントブロック」と呼ぶ。そして、「アクセント位置」は、アクセントブロック内で基本周波数が相対的に最も高いモーラの位置又は信号強度が相対的に最も強いモーラの位置をいう。「モーラ」とは、音韻論上、一定の時間的長さをもった音の分節単位をいい、アクセントブロック内でアクセントの位置を表すのに都合がよい単位である。次に、形態素解析部１２０は、形態素ラベルデータ１２４ごとに、当該データが示す音素が属するアクセントブロックに対応するアクセント位置との位置関係を示すアクセント情報を、当該形態素ラベルデータ１２４に付加する。「アクセント情報」は例えば、形態素ラベルデータ１２４に対応する音素の、その音素が属するアクセントブロックに対応するアクセント位置からその音素が属するモーラまでのモーラ数（アクセント位置より前はマイナス値、後ろはプラス値）と、その音素が当該アクセントブロック内で最初のモーラから数えて何番目のモーラに含まれるかを示すモーラ番号とで表される。
【００２１】
図４は、形態素データ１２３のデータ構成例を示す図である。この図に示されるように、形態素解析部１２０による形態素解析処理で得られる合計M個の形態素ごとに、各形態素データmorph[0],morph[1],・・・,morph[M-1]はそれぞれ、morph_id、original、read、pronounce、group、accent、prev、nextの各変数データを保持する。morph_idは、形態素ＩＤを保持する。originalは、表記上の形態素を保持する。readは、表記上の読みを保持する。pronounceは、発音を保持する。groupは、品詞情報を保持する。accentは、アクセント情報を保持する。prevは、１つ手前の形態素データ１２３へのポインタ（NULLで先頭）を保持する。nextは、１つ後ろの形態素データ１２３へのポインタ（NULLで末端）を保持する。セグメントデータ１１４の場合と同様に、prevとnextを使って形態素データ１２３が接続されることにより、形態素データ１２３が例えばメモリ上の末尾のアドレスに追加されても、その形態素データ１２３を任意の箇所に挿入することができる。
【００２２】
図５は、形態素データ１２３の具体例を示す図である。例えば「あらゆる現実をすべて自分のほうへねじ曲げたのだ。」という内容の学習用の発話テキスト１２２のデータがあったときに、形態素解析処理によりその内容は例えば、「あらゆる」「現実」「を」「すべて」「自分」「の」「ほう」「へ」「ねじ曲げ」「た」「の」「だ」「。」という１３個の形態素に分解され、それぞれの形態素に対応する表記、読み、発音がoriginal、read、pronounceに登録された図５に示される形態素データ１２３が生成される。例えば、morph_id=0の先頭の形態素データ１２３において、originalは、表記上の形態素として「あらゆる」を保持する。readは、表記上の読みとして「アラユル」を保持する。pronounceは、発音として「アラユル」を保持する。groupは、品詞情報として「連体詞」を保持する。Accent変数は、アクセント情報として「3」を保持する。これは、この形態素中の３モーラ目にアクセント位置があることを示している。モーラについては後述する。prevは、１つ手前の形態素データ１２３のmorph_idとして手前には何も無いことを示す「NULL」を保持している。nextは、１つ後ろの形態素データ１２３のmorph_idとして「1」を保持する。
【００２３】
図６は、形態素ラベルデータ１２４のデータ構成例を示す図である。この図に示されるように、形態素解析部１２０による形態素解析処理で得られた形態素データ１２３に基づいて決定される合計N個の形態素ラベルデータmorph_label[0]、morph_label[1]、・・・、morph_label[N-1]はそれぞれ、mlabel_id、phone、accent、mola、morph_id、prev、nextの各変数データを保持する。mlabel_idは、形態素ラベルＩＤを保持する。phoneは、音素ラベルを保持する。accentは、アクセント位置までのモーラ数を保持する。molaは、モーラ番号を保持する。morph_idは、phoneに保持された音素ラベルで示される音素が属する形態素データ１２３の形態素ＩＤ（図４参照）を保持する。prevは、１つ手前の形態素ラベルデータ１２４へのポインタ（NULLで先頭）を保持する。nextは、１つ後ろの形態素ラベルデータ１２４へのポインタ（NULLで末端）を保持する。prev及びnextの意味は、セグメントデータ１１４（図２）又は形態素データ１２３（図４）の場合と同様である。
【００２４】
図７は、形態素ラベルデータ１２４の具体例を示す図である。形態素解析処理により、例えば４つの連続する形態素「あらゆる」「現実」「を」「すべて」にそれぞれ対応する図５に示されるmorph_id=0,1,2,3の各形態素ＩＤを有する各形態素データ１２３から、２１個の音素「a」「r」「a」「y」「u」「r」「u」「g」「e」「N」「j」「i」「ts」「u」「o」「s」「u」「b」「e」「t」「e」が抽出され、それぞれの音素に対応する音素ラベルがphoneに登録された２１個の形態素ラベルデータ１２４が生成される。なお、処理の都合上、先頭のmlabel_id=0の形態素ラベルＩＤを有する形態素ラベルデータ１２４としては、無音を示す音素ラベル「#」を有するデータが登録される。
【００２５】
ここで、形態素解析処理により例えば、これらの形態素ラベルデータ１２４を生成した形態素「あらゆる」「現実」「を」「すべて」に対して、これらの形態素の区切りと同じ区切りを有するアクセントブロック「あらゆる」「現実」「を」「すべて」が決定される。また、アクセントブロック「あらゆる」を例にとると、形態素解析処理により、このアクセントブロック内で、「a」「ra」「yu」「ru」という４個のモーラが認識される。そして、形態素解析処理により、例えばこのアクセントブロック「あらゆる」内のアクセント位置として、３番目のモーラ「yu」（「ゆ」）が検出される。即ち、この例では、アクセント位置は「3」である。
【００２６】
更に、形態素解析処理により、音素「a」「r」「a」「y」「u」「r」「u」のそれぞれに対応する各音素ラベルを有するmlabel_id=1,2,3,4,5,6,7の各形態素ラベルデータ１２４において、各mola変数には、上記アクセントブロック「あらゆる」内での各音素が含まれる各モーラのモーラ番号「1」「2」「2」「3」「3」「4」「4」が保持される。即ち、mlabel_id=1、phone=「a」の形態素ラベルデータ１２４において、当該音素ラベル「a」の音素は、上記４個のモーラ「a」「ra」「yu」「ru」のうちの１番目のモーラ「a」に含まれるので、molaにはモーラ番号「1」が保持される。また、mlabel_id=2、phone=「r」の形態素ラベルデータ１２４において、当該音素ラベル「r」の音素は、上記４個のモーラのうちの２番目のモーラ「ra」に含まれるので、molaにはモーラ番号「2」が保持される。同様に、mlabel_id=3、phone=の「ａ」の形態素ラベルデータ１２４において、当該音素「a」の音素は、上記４個のモーラのうちの２番目のモーラ「ra」に含まれるので、molaにはモーラ番号「2」が保持される。他の音素も同様である。
【００２７】
加えて、形態素解析処理により、音素「a」「r」「a」「y」「u」「r」「u」のそれぞれに対応する各音素ラベルを有するmlabel_id=1,2,3,4,5,6,7の各形態素ラベルデータ１２４において、各accent変数には、各mola変数に保持された上記各モーラ番号「1」「2」「2」「3」「3」「4」「4」と、アクセントブロック内で検出されているアクセント位置「3」との各差分値「1-3=-2」「2-3=-1」「2-3=-1」「3-3=0」「3-3=0」「4-3=1」「4-3=1」がそれぞれ登録される。
【００２８】
以上のようにして、図１において、言語解析部１０２内の形態素解析部１２０によりアクセント情報を含む音素列が登録された形態素ラベルデータ１２４が得られると、データ付与部１０３が、音声解析部１０１内の音声認識部１１０により生成されたセグメントデータ１１４の音素列と、上記形態素ラベルデータ１２４の音素列との対応関係を生成する。例えば、図３に例示されるセグメントデータ１１４と、図７に例示される形態素ラベルデータ１２４とで、データ付与部１０３は、それぞれの先頭から順次、セグメントデータ１１４のphone変数の音素ラベルと形態素ラベルデータ１２４のphone変数の音素ラベルとが一致するか否かをチェックする。そして、セグメントデータ１１４と形態素ラベルデータ１２４の全体にわたって両者の音素ラベルが一致する場合には、データ付与部１０３は、図２のデータ構成例を有するセグメントデータ１１４の内容に、図６のデータ構成例を有する形態素ラベルデータ１２４に登録されているアクセント情報、即ち、アクセント位置までのモーラ数とアクセントブロック内のモーラ番号を付与し、学習用ラベルデータ１３０として出力する。
【００２９】
図８は、学習用ラベルデータ１３０のデータ構成例を示す図である。学習用ラベルデータ１３０の個数は、基本的には図２に例示されるセグメントデータ１１４のL個と同じである。L個のセグメントデータsegment[i](0≦i≦L)に対応するL個の学習用ラベルデータtrain_label[i](0≦i≦L)はそれぞれ、tlabel_id、phone、start、end、accent、mola、pitch、vowel、prev、nextの各変数データを保持する。tlabel_idは、学習用ラベルＩＤである。phone、start、endはそれぞれ、セグメントデータsegment[i]のphone、start、end（図２参照）からコピーされる。accent、molaは、セグメントデータsegment[i]に対応付けられた形態素ラベルデータmorph_label[j] (0≦j≦N)のaccent,mola（図６参照）からコピーされる。vowelは、phoneが示す音素ラベルが母音であるか否かを示すフラグであり、母音であれば「1」、子音であれば「0」がセットされる。prevは、１つ手前の学習用ラベルデータ１３０へのポインタ、nextは、１つ後ろの学習用ラベルデータ１３０へのポインタを保持する。pitchについては、後述する。
【００３０】
このようにして得られる学習用ラベルデータ１３０を使って、図１の音声データ１１３からその学習用ラベルデータ１３０のstart及びend（図８参照）に対応する区間のデータが切り出されて音素片データとされ、この音素片データが、図８の学習用ラベルデータ１３０のphoneに登録されている音素ラベルと、accent及びmolaに登録されているアクセント情報とともに、音声データベースに登録される。音声合成時には、テキストデータに対する形態素解析時にもアクセントブロックごとにアクセント位置が検出され、合成目標の音素列中の音素ごとに、当該音素が属するアクセントブロックのアクセント位置との位置関係を示す値が取得される。そして、当該音素ラベルに対応する音素片データを音声データベースから検索するときに、各音素に対して取得された上記位置関係を示す値に最も近い値を有するアクセント情報が付与されている音素片データが抽出される。これにより、テキスト文章データと同じアクセント状態で発音された音素片データを選択することが可能となり、合成音声データの品質を高めることが可能となる。
【００３１】
ここで、「発明が解決しようとする課題」の項で説明したように、音声データ１１３の実際の発話においては息継ぎが発生し、そのタイミングは音声データ１１３の値が無音値又は無音値に近い値をとる空白タイミングとなる。そして、この音声データ１１３がセグメント分割された場合には、上記空白タイミングは無音を示す音素ラベル「#」を有するセグメントデータ１１４に対応付けられる。例えば、図３に例示される先頭のseg_id=0又は17番目のseg_id=16の各セグメントデータ１１４のphone変数に保持されている音素ラベル「#」は、そのセグメントデータ１１４に対応するセグメントが空白セグメントであることを示している。一方、この空白タイミングは一般的には言語情報の区切りに対応し、その場合には、形態素解析処理が実行された場合に上記空白タイミングは句読点の形態素として検出される。そして、そのような句読点の形態素から形態素ラベルデータ１２４が抽出された場合には、その形態素ラベルデータ１２４のphone変数（図６参照）には空白タイミングを示す音素ラベル「#」が登録される。このような状態で、データ付与部１０３が、セグメントデータ１１４の音素列と形態素ラベルデータ１２４の音素列との対応付けを行った場合には、音素ラベル「#」同士がうまくマッチングして、正しい対応関係が生成される。
【００３２】
一方、音声データの実際の発話では、息継ぎにより無音タイミングが発生したタイミングで言語情報上句読点が検出されない場合もある。この場合には、セグメントデータ１１４には空白タイミングを示す音素ラベル「#」が登録されるが、その空白タイミングに対応する句読点の形態素は出力されず、phone変数に空白タイミングを示す音素ラベル「#」が登録された形態素ラベルデータ１２４も出力されないことになる。例えば、図３のセグメントデータ１１４の例において、音素列「arayurugeNjitsuo」（表記：「あらゆる現実を」）と音素列「subete」（表記：「すべて」）の間で、音声データ１１３の発音において息継ぎが発生したことにより、seg_id=15、音素ラベルphone=「o」のセグメントデータ１１４と、seg_id=17、音素ラベルphone=「s」のセグメントデータ１１４の間に、seg_id=16、音素ラベルphone=「#」の空白セグメントのセグメントデータ１１４が生成されている。一方、図５の形態素データ１２３の例においては、形態素「を」と形態素「すべて」の間には読点は検出されておらず、従って、そこから抽出された図７の形態素ラベルデータ１２４の例においても、mlabel_id=15、音素ラベルphone=「o」の形態素ラベルデータ１２４と、mlabel_id=16、音素ラベルphone=「s」の形態素ラベルデータ１２４の間には、音素ラベルphone=「#」の空白セグメントの形態素ラベルデータ１２４は生成されていない。このような状態で、データ付与部１０３がもし、上記空白セグメントの存在を考慮せずに図３に例示されるセグメントデータ１１４の音素列と図７に例示される形態素ラベルデータ１２４の音素列との対応付けを行った場合には、seg_id=15、音素ラベルphone=「o」のセグメントデータ１１４と、mlabel_id=15、音素ラベルphone=「o」の形態素ラベルデータ１２４とのマッチングが行われた後に、seg_id=16、音素ラベルphone=「#」の空白セグメントのセグメントデータ１１４と、mlabel_id=17、音素ラベルphone=「s」の形態素ラベルデータ１２４との比較が行われることになり、両者の音素ラベルが一致せずに対応関係が成立しなくなって、この音声データ１１３に基づく音素片データを音声データベースの登録用に採用できないという結果になってしまう。
【００３３】
そこで、本実施形態では、データ付与部１０３は、空白セグメントと形態素の区切りとの位置関係を判別しながら、セグメントデータ１１４の音素列と形態素ラベルデータ１２４の音素列との対応関係を生成し、対応関係にずれが生じないように制御を行う。この処理の詳細については、図１２及び図１３のフローチャートを用いて後述する。
【００３４】
ここで、音素片データのもととなる音声データ１１３は必ずしも対応する発話テキスト１２２から得られる形態素データ１２３に基づくアクセント位置で発話されているとは限らない。そこで、本実施形態では、データ付与部１０３が、上述のように正しく生成したセグメントデータ１１４の音素列と形態素ラベルデータ１２４の音素列との対応関係に基づいて、形態素ラベルデータ１２４から得られるアクセントブロックごとの新たなアクセント位置を、音声データ１１３の発話に基づいて抽出される基本周波数が最も高くなるセグメントに対応する位置として算出し直す。そして、データ付与部１０３は、アクセントブロックに属するセグメントに対応する学習用ラベルデータ１３０のアクセント情報を、上述の新たに算出されたアクセント位置に基づいて修正する。
【００３５】
具体的にはまず、図１の音声解析部１０１内の基本周波数解析部１１２が、所定のフレーム周期（例えば256ミリ秒）ごとに音声データ１１３の基本（ピッチ）周波数を抽出し、基本周波数データ１１５を出力する。
【００３６】
図９は、基本周波数データ１１５のデータ構成例を示す図である。音声データ１１３に対する所定のフレーム周期ごとの基本周波数の解析の結果得られるK個の基本周波数データpitch[i](0≦i≦K-1)はそれぞれ、time,pitch, prev、nextの各変数データを保持する。timeは、現在のフレーム周期に対応する時刻（現在のフレーム周期の先頭、中央、又は末尾のサンプル番号）を保持する。pitchは、解析の結果得られた基本周波数[Hz]（ヘルツ）を保持する。prevは、１つ手前の基本周波数データ１１５へのポインタ、nextは、１つ後ろの基本周波数データ１１５へのポインタを保持する。
【００３７】
上述のようにして基本周波数解析部１１２により生成された基本周波数データ１１５を用いて、データ付与部１０３が、アクセントブロックごとに新たなアクセント位置を生成し、アクセントブロックに属するセグメントに対応する学習用ラベルデータ１３０のアクセント情報を、上述の新たに算出されたアクセント位置に基づいて修正する。この処理の詳細については、図１５のフローチャートを用いて後述する。
【００３８】
図１０は、図１の音声情報作成装置１００の音声解析部１０１、言語解析部１０２、及びデータ付与部１０３の機能をソフトウェア処理として実現できるコンピュータのハードウェア構成例を示す図である。図１０に示されるコンピュータは、ＣＰＵ１００１、ＲＯＭ（リードオンリーメモリ：読出し専用メモリ）１００２、ＲＡＭ（ランダムアクセスメモリ）１００３、入力装置１００４、出力装置１００５、外部記憶装置１００６、可搬記録媒体１０１０が挿入される可搬記録媒体駆動装置１００７、及び通信インタフェース１００８を有し、これらがバス１００９によって相互に接続された構成を有する。同図に示される構成は上記システムを実現できるコンピュータの一例であり、そのようなコンピュータはこの構成に限定されるものではない。
【００３９】
ＲＯＭ１００２は、図１の音声解析部１０１の機能を実現する音声解析処理プログラム、図の言語解析部１０２の機能を実現する言語解析処理プログラム、及び図１のデータ付与部１０３の機能を実現するデータ付与処理プログラムを含む各プログラムを記憶するメモリである。ＲＡＭ１００３は、各プログラムの実行時に、ＲＯＭ１００２に記憶されているプログラム又はデータを一時的に格納するメモリである。
【００４０】
外部記憶装置１００６は、例えばＳＳＤ（ソリッドステートドライブ）記憶装置又はハードディスク記憶装置であり、図１の音声データ１１３、発話テキスト１２２、セグメントデータ１１４、基本周波数データ１１５、形態素データ１２３、形態素ラベルデータ１２４、学習用ラベルデータ１３０、及び図１には特には図示しない音声データベース等の保存に用いられる。
【００４１】
ＣＰＵ１００１は、各プログラムを、ＲＯＭ１００２からＲＡＭ１００３に読み出して実行することにより、当該コンピュータ全体の制御を行う。
【００４２】
入力装置１００４は、ユーザによるキーボードやマウス等による入力操作を検出し、その検出結果をＣＰＵ１００１に通知する。
【００４３】
出力装置１００５は、ＣＰＵ１００１の制御によって送られてくるデータを表示装置や印刷装置に出力する。
【００４４】
可搬記録媒体駆動装置１００７は、光ディスクやＳＤＲＡＭ、コンパクトフラッシュ等の可搬記録媒体１０１０を収容するもので、外部記憶装置１００６の補助の役割を有する。
【００４５】
通信インターフェース１００８は、例えばＬＡＮ（ローカルエリアネットワーク）又はＷＡＮ（ワイドエリアネットワーク）の通信回線を接続するための装置である。
【００４６】
本実施形態によるシステムは、図１の音声解析部１０１の機能を実現する音声解析処理プログラム、図の言語解析部１０２の機能を実現する言語解析処理プログラム、及び図１のデータ付与部１０３の機能を実現するデータ付与処理プログラムを、ＲＯＭ１００２からＲＡＭ１００３に読み出してＣＰＵ１００１が実行することで実現される。そのプログラムは、例えば外部記憶装置１００６や可搬記録媒体１０１０に記録して配布してもよく、或いはネットワーク接続装置１００８によりネットワークから取得できるようにしてもよい。
【００４７】
ＣＰＵ１００１が音声解析処理プログラム及び言語解析処理プログラムをそれぞれ実行することにより実現する図１の音声解析部１０１及び言語解析部１０２の各機能は、図１から図９を用いて上述した通りである。この結果、図１０のＲＡＭ１００３に、図２のデータ構成例のセグメントデータ１１４（具体例は図３）、図４のデータ構成例の形態素データ１２３（具体例は図５）、図６のデータ構成例の形態素ラベルデータ１２４（具体例は図７）、及び図９のデータ構成例の基本周波数データ１１５が生成される。
【００４８】
図１１は、図１のデータ付与部１０３の機能を実現するデータ付与処理の例を示すフローチャートである。このデータ付与処理は、ＣＰＵ１００１が、ＲＡＭ１００３をワークメモリとして使用しながら、ＲＯＭ１００２に記憶されたデータ付与処理プログラムを読み出して実行する処理である。
【００４９】
データ付与処理において、ＣＰＵ１００１はまず、対応付け処理を実行する（ステップＳ１１０１）。
【００５０】
次に、ＣＰＵ１００１は、上記対応付け処理の結果、エラーが検出されたか否か（ＲＡＭ１００３上の後述するエラーフラグがオンであるか否か）を判定する（ステップＳ１１０２）。そして、エラーが検出されなかった場合（ステップＳ１１０２の判定がＮＯの場合）には、ＣＰＵ１００１は、アクセント修正処理を実行する（ステップＳ１１０３）。この結果、ＣＰＵ１００１は、入力された音声データ１１３及び発話テキスト１２２に対応する学習用ラベルデータ１３０（共に図１参照）を出力し、データ付与処理を終了する。エラーが検出された場合（ステップＳ１１０２の判定がＹＥＳの場合）には、ＣＰＵ１００１は、入力された音声データ１１３及び発話テキスト１２２は学習用には採用せず、学習用ラベルデータ１３０は出力せずに、データ付与処理を終了する。
【００５１】
図１２及び図１３は、図１１のステップＳ１１０１の対応付け処理の詳細例を示すフローチャートである。この対応付け処理では、前述したように、空白セグメントと形態素の区切りとの位置関係が判別されながら、それぞれＲＡＭ１００３上に生成されている、セグメントデータ１１４の音素列（図２、図３参照）と形態素ラベルデータ１２４（図６、図７）の音素列との適切な対応関係が生成される。
【００５２】
対応付け処理において、ＣＰＵ１００１はまず、セグメントデータ１１４の集合先頭と形態素ラベルデータ１２４の集合の先頭から順次、セグメントデータ１１４の側の音素ラベルと形態素ラベルデータ１２４の側の音素ラベルとが一致するか否かを判定する処理（ステップＳ１２０５）と、セグメントデータ１１４の側の音素ラベルが空白セグメントに対応する「#」であるか否かを判定する処理（ステップＳ１２０４）と、ステップＳ１２０４の判定がＹＥＳの場合に形態素ラベルデータ１２４の側の音素ラベルが句読点に対応する「#」であるか否かを判定する処理（ステップＳ１２０８）を繰り返し実行する。
【００５３】
この繰返し処理を制御するために、ＣＰＵ１００１は、ＲＡＭ１００３上の変数seg及びmorphに、それぞれＲＡＭ１００３上のセグメントデータ１１４の先頭アドレスとＲＡＭ１００３上の形態素ラベルデータ１２４の先頭アドレスをセットする（ステップＳ１２０１）。図２のセグメントデータ１１４のデータ構成例では、変数segにsegment[0]のアドレスがセットされ、図６の形態素ラベルデータ１２４のデータ構成例では、変数morphにmorph_label[0]のアドレスがセットされる。そして、ＣＰＵ１００１は、変数seg及び変数morphともに末端のデータを超えていないと判定される間（ステップＳ１２０２の判定がＹＥＳの場合）、以下に示すステップＳ１２０３からＳ１２１５までの一連の処理を繰り返し実行する。
【００５４】
まず、ＣＰＵ１００１は、それぞれＲＡＭ１００３上に記憶される、セグメントデータ１１４の側のインクリメントフラグと、形態素ラベルデータ１２４の側のインクリメントフラグの双方をオフにする（ステップＳ１２０３）。
【００５５】
次に、ＣＰＵ１００１は、セグメントデータ１１４の側の音素ラベル（図２のphone変数の値）が、空白セグメントに対応する「#」であるか否かを判定する（ステップＳ１２０４）。
【００５６】
ステップＳ１２０４の判定がＮＯの場合、ＣＰＵ１００１は、セグメントデータ１１４の側の音素ラベルと形態素ラベルデータ１２４の側の音素ラベルの双方の音素ラベルが一致するか否かを判定する（ステップＳ１２０５）。
【００５７】
セグメントデータ１１４の側の音素ラベルは空白セグメントを示す「#」でなく（ステップＳ１２０４の判定がＮＯで）、かつセグメントデータ１１４の側の音素ラベルと形態素ラベルデータ１２４の側の音素ラベルの双方の音素ラベルが一致しないことによりステップＳ１２０５の判定もＮＯになる場合には、そもそも音声データ１１３と発話テキスト１２２とがうまく対応付いていないことになる。従って、このような場合には、エラーを発生させて入力された音声データ１１３及び発話テキスト１２２は学習用には採用せず、学習用ラベルデータ１３０は出力しないようにすべきである。そこで、ステップＳ１２０４の判定がＮＯで、かつステップＳ１２０５の判定もＮＯの場合には、ＣＰＵ１００１は、ＲＡＭ１００３上に記憶されるエラーフラグをオンにセットし（ステップＳ１２０７）、その後、図１２及び図１３のフローチャートで示される図１１のステップＳ１１０１の対応付け処理を終了する。この結果、図１１のステップＳ１１０２の判定がＹＥＳとなって、ステップＳ１１０３のアクセント修正処理は実行されないことになり、学習用ラベルデータ１３０は生成されずにデータ付与処理が終了する。
【００５８】
ステップＳ１２０５の判定がＹＥＳの場合には、ＣＰＵ１００１は、ＲＡＭ１００３上のセグメントデータ１１４の側のインクリメントフラグと形態素ラベルデータ１２４の側のインクリメントフラグの双方のインクリメントフラグをオンにセットする（ステップＳ１２０６）。
【００５９】
その後、ＣＰＵ１００１は、セグメントデータ１１４の側のインクリメントフラグがオンであるか否かを判定するが（ステップＳ１２１２）、ステップＳ１２０６の処理によりステップＳ１２１２の判定はＹＥＳとなる。この結果、ＣＰＵ１００１は、変数segに、次のセグメントデータ１１４のアドレスをセットする（ステップＳ１２１３）。具体的には、ＣＰＵ１００１は、現在のセグメントデータ１１４のnext変数（図２参照）の値を、変数segにセットする。
【００６０】
続いて、ＣＰＵ１００１は、形態素データ１２３の側のインクリメントフラグがオンであるか否かを判定するが（ステップＳ１２１４）、ステップＳ１２０６の処理によりステップＳ１２１４の判定はＹＥＳとなる。この結果、ＣＰＵ１００１は、変数morphに、次の形態素ラベルデータ１２４のアドレスをセットする（ステップＳ１２１５）。具体的には、ＣＰＵ１００１は、現在の形態素ラベルデータ１２４のnext変数（図６参照）の値を、変数morphにセットする。
【００６１】
その後、ＣＰＵ１００１は、ステップＳ１２０２の処理に移行して、次の繰返し処理に移る。
【００６２】
上述のように、セグメントデータ１１４の側の音素ラベルと形態素ラベルデータ１２４の側の音素ラベルの双方の音素ラベルが一致すると、変数segと変数morphの双方がインクリメントされることにより、次のセグメントデータ１１４の音素と次の形態素ラベルデータ１２４の音素同士の対応付け処理に移行する。
【００６３】
前述したステップＳ１２０４の判定がＹＥＳになると、ＣＰＵ１００１は、形態素ラベルデータ１２４の側の音素ラベル（図６のphone）が句読点に対応する「#」であるか否かを判定する（ステップＳ１２０８）。
【００６４】
ステップＳ１２０８の判定がＹＥＳの場合には、ＣＰＵ１００１は、ＲＡＭ１００３上のセグメントデータ１１４の側のインクリメントフラグと形態素ラベルデータ１２４の側のインクリメントフラグの双方のインクリメントフラグをオンにセットする（ステップＳ１２０９）。
【００６５】
その後、ＣＰＵ１００１は、前述したステップＳ１２１２の判定処理に移行するが、ステップＳ１２０９の処理によりステップＳ１２１２の判定はＹＥＳとなる。この結果、ＣＰＵ１００１は、前述したステップＳ１２１３の処理に移行して、変数segに、次のセグメントデータ１１４のアドレスをセットする。
【００６６】
続いて、ＣＰＵ１００１は、前述したステップＳ１２１４の判定処理に移行するが、ステップＳ１２０６の処理によりステップＳ１２１４の判定はＹＥＳとなる。この結果、ＣＰＵ１００１は、前述したステップＳ１２１５の処理に移行して、変数morphに、次の形態素データ１２３のアドレスをセットする。
【００６７】
その後、ＣＰＵ１００１は、ステップＳ１２０２の処理に移行して、次の繰返し処理に移る。
【００６８】
上述のように、セグメントデータ１１４の側の音素ラベルが空白セグメントに対応する「#」で、かつ形態素ラベルデータ１２４の側の音素ラベルが句読点に対応する「#」であって両者が対応付く場合には、変数segと変数morphの双方がインクリメントされることにより、次のセグメントデータ１１４の音素と次の形態素ラベルデータ１２４の音素同士の対応付け処理に移行する。
【００６９】
ステップＳ１２０８の判定がＮＯの場合には、ＣＰＵ１００１は、現在の形態素ラベルデータの前に「♯」の形態素ラベルデータを挿入するために、ＲＡＭ１００３上に得られている形態素データ１２３において、現在の形態素ラベルデータ１２４の音素が含まれる形態素データ１２３の次に、読点を示す形態素データ１２３を挿入する（ステップＳ１２１０）。具体的には、ＣＰＵ１００１はまず、変数morphが示すＲＡＭ１００３上の現在の形態素ラベルデータ１２４の変数prevによって示されるmorph_id変数（図６参照）の値を参照することにより、ＲＡＭ１００３上の形態素データ１２３からそのmorph_id変数の値と同じ値をmorph_id変数（図４）に保持するデータを検索する。次に、ＣＰＵ１００１は、ＲＡＭ１００３上の形態素データ１２３の末尾に、新たな形態素データ１２３のエントリ（図４参照）を生成する。そして、ＣＰＵ１００１は、この末尾に新たに生成されたエントリにおいて、morph_id変数に新たな値を付与し、original変数、read変数、及びpronounce変数に読点を表す値「、」をそれぞれ格納し、group変数に「記号」を格納し、accent変数にはアクセント情報「0」を格納する。更に、ＣＰＵ１００１は、この末尾に新たに生成されたエントリにおいて、prev変数及びnext変数には、上記検索された形態素データ１２３のprev変数の値及びmorph_id変数の値をそれぞれ格納する。最後に、ＣＰＵ１００１は、上記検索された形態素データ１２３のprev変数が示す形態素データ１２３のnext変数に上記末尾に新たに生成されたエントリのmorph_id変数の値を格納し、その後に、上記検索された形態素データ１２３のprev変数の値も上記末尾に新たに生成されたエントリのmorph_id変数の値に変更する。
【００７０】
例えば、図３のセグメントデータ１１４の具体例、図５の形態素データ１２３の具体例、及び図７の形態素ラベルデータ１２４の具体例において、変数seg及びmorphの値がともに「16」であるときに、ステップＳ１２０４において、図６のseg_id変数の値が「16」であるセグメントデータ１１４の音素ラベルが「#」であると判定されて判定結果がＹＥＳとなり、更に、ステップＳ１２０８において、図７のmlabel_idの値が「16」である形態素ラベルデータ１２４の音素ラベルが「s」であると判定されて判定結果がＮＯとなる。この結果、ＣＰＵ１００１は、ステップＳ１２１０を実行することにより、図７のmlabel_idの値が「16」である形態素ラベルデータ１２４のmorph_id変数の値「3」を参照し、図５の形態素データ１２３からそのmorph_id変数の値が「3」である形態素「すべて」を検索する。次に、ＣＰＵ１００１は、図５の形態素データ１２３の末尾に、新たな形態素データ１２３のエントリ（図４参照）を生成する。図１４はエントリ追加後の形態素データ１２３の具体例である。ＣＰＵ１００１は、図１４の末尾のエントリにおいて、morph_id変数に新たな値「13」を付与し、original変数、read変数、及びpronounce変数に読点を表す値「、」をそれぞれ格納し、group変数に「記号」を格納し、accent変数にはアクセント情報「0」を格納する。更に、ＣＰＵ１００１は、図５の形態素データ１２３上で検索されたmorph_id変数の値が「3」である形態素「すべて」のエントリのprev変数の値「2」及びmorph_id変数の値「3」をそれぞれ、図１４の末尾のエントリのprev変数及びnext変数にセットする。最後に、ＣＰＵ１００１は、図５の形態素データ１２３上で検索されたmorph_id変数の値が「3」である形態素「すべて」のエントリのprev変数の値「2」が示す、図５のmorph_id変数の値が「2」である形態素「を」のエントリのnext変数に、図１４の末尾のエントリのmorph_id変数の値「13」を格納し、図５の形態素データ１２３上で検索されたmorph_id変数の値が「3」である形態素「すべて」のエントリのprev変数の値も、図１４の末尾のエントリのmorph_id変数の値「13」に変更する。この結果、図１４に示される形態素データ１２３ができあがる。この結果、morph_id変数の値が「2」の形態素「を」の次には、そのエントリのnext変数の値「13」が参照されることにより、morph_id変数の値が「13」の読点「、」のエントリが接続され、更にそのエントリのnext変数の値「3」が参照されることにより、morph_id変数の値「3」の形態素「すべて」のエントリが接続される。
【００７１】
上述の例では、図３のセグメントデータ１１４の例において、音素列「arayurugeNjitsuo」（表記：「あらゆる現実を」）と音素列「subete」（表記：「すべて」）の間で、音声データ１１３の発音において息継ぎが発生したことにより、seg_id=15、音素ラベルphone=「o」のセグメントデータ１１４と、seg_id=17、音素ラベルphone=「s」のセグメントデータ１１４の間に、seg_id=16、音素ラベルphone=「#」の空白セグメントのセグメントデータ１１４が生成されている。一方、図５の形態素データ１２３の例においては、形態素「を」と形態素「すべて」の間には読点は検出されていない。このような場合に対して、本実施形態では、ＣＰＵ１００１は、上述の動作により、図５の形態素データ１２３上で形態素「を」と形態素「すべて」の間に読点「、」を挿入することができる。
【００７２】
上述した図１２のステップＳ１２１０の処理の後、ＣＰＵ１００１は、ＲＡＭ１００３上のセグメントデータ１１４の側のインクリメントフラグをオンにする（ステップＳ１２１１）。一方、ＲＡＭ１００３上の形態素ラベルデータ１２４の側のインクリメントフラグは、ステップＳ１２０３でオフにされたままである。
【００７３】
その後、ＣＰＵ１００１は、前述したステップＳ１２１２の判定処理に移行するが、ステップＳ１２１１の処理によりステップＳ１２１２の判定はＹＥＳとなる。この結果、ＣＰＵ１００１は、前述したステップＳ１２１３の処理に移行して、変数segに、次のセグメントデータ１１４のアドレスをセットする。
【００７４】
続いて、ＣＰＵ１００１は、前述したステップＳ１２１４の判定処理に移行するが、ステップＳ１２０３の処理によりステップＳ１２１４の判定はＮＯとなる。この結果、ＣＰＵ１００１は、前述したステップＳ１２１５の処理はスキップして、変数morphの値は現在の形態素データ１２３のアドレスのままとさせる。
【００７５】
その後、ＣＰＵ１００１は、ステップＳ１２０２の処理に移行して、次の繰返し処理に移る。
【００７６】
上述のように、セグメントデータ１１４の側の音素ラベルが空白セグメントに対応する「#」で、かつ形態素ラベルデータ１２４の側の音素ラベルが句読点に対応する「#」でなくて形態素データ１２３に句読点が追加挿入された場合には、変数segのみがインクリメントされることにより、次のセグメントデータ１１４の音素と現在の形態素ラベルデータ１２４の音素同士の対応付け処理に移行する。
【００７７】
図３のセグメントデータ１１４の具体例、図５と図１４の形態素データ１２３の具体例、及び図７の形態素ラベルデータ１２４の具体例では、変数seg及びmorphの値がともに「16」であるときに、ステップＳ１２０４において、図６のseg_id変数の値が「16」であるセグメントデータ１１４の音素ラベルが「#」であると判定されて判定結果がＹＥＳとなった後、ステップＳ１２０８の判定がＮＯとなって、ステップＳ１２１０で形態素データ１２３に図１４に示されるように句読点が挿入される。その後、ステップＳ１２１１→Ｓ１２１２の判定がＹＥＳ→Ｓ１２１３→Ｓ１２１４の判定がＮＯ→Ｓ１２０２と処理が進むことにより、変数segの値のみが、図３のseg_id変数の値が「16」であるセグメントデータ１１４のnext変数が示す値「17」にインクリメントされる。この結果、次の比較処理の対象は、変数segの変更された値「17」によって検索される図３のseg_id変数の値が「17」であるセグメントデータ１１４の音素ラベル「s」と、変数morphの変更されない値「16」によって検索される」図７のmlabel_id変数の値が「16」である形態素ラベルデータ１２４の音素ラベル「s」となり、うまく対応付けが行われることがわかる。
【００７８】
以上の繰返し処理の結果、変数seg及び変数morphの何れかが末端のデータを超えたと判定される（ステップＳ１２０２の判定がＮＯになる）と、ＣＰＵ１００１は、図１３のステップＳ１２１６以降の処理を実行する。まず、ＣＰＵ１００１は、今までの処理によりＲＡＭ１００３上に得られている例えば図１４に示される各形態素データ１２３のoriginal変数に格納されている形態素の表記を全て結合してテキストデータにし、そのテキストデータに対して形態素解析処理（図１の形態素解析部１２０に対応）を再度実行させ、それに対応する形態素データ１２３及び形態素ラベルデータ１２４をＲＡＭ１００３上に生成する（ステップＳ１２１６）。
【００７９】
その後、ＣＰＵ１００１は、セグメントデータ１１４の集合先頭と新たにＲＡＭ１００３上に生成された形態素ラベルデータ１２４の集合の先頭から順次、セグメントデータ１１４の側の音素ラベルと形態素ラベルデータ１２４の側の音素ラベルとが一致するか否かを再度判定する処理（ステップＳ１２２０）を繰り返し実行する。
【００８０】
具体的には、ＣＰＵ１００１は、ＲＡＭ１００３上の変数seg及びmorphに、それぞれＲＡＭ１００３上のセグメントデータ１１４の先頭アドレスと新たにＲＡＭ１００３上に生成された形態素ラベルデータ１２４の先頭アドレスをセットする（ステップＳ１２１７）。
【００８１】
次に、ＣＰＵ１００１は、ＲＡＭ１００３上に学習用ラベルデータ１３０を生成するために、ＲＡＭ１００３上の変数ｔｒに、ＲＡＭ１００３上の学習用ラベルデータ１３０の先頭の空き領域のアドレスをセットする（ステップＳ１２１８）。
【００８２】
そして、ＣＰＵ１００１は、変数seg及び変数morphともに末端のデータを超えていないと判定される間（ステップＳ１２１９の判定がＹＥＳの場合）、ＣＰＵ１００１は、以下のステップＳ１２２０からＳ１２２４までの一連の処理を実行する。
【００８３】
まず、ＣＰＵ１００１は、セグメントデータ１１４の側の音素ラベルと形態素ラベルデータ１２４の側の音素ラベルの双方の音素ラベルが一致するか否かを判定する（ステップＳ１２２０）。
【００８４】
前述した図１２のフローチャートの処理により、図１４の形態素データ１２３には、音声データ１１３の発声において形態素の区切りに対応するタイミングで息継ぎ等が発生することにより生成された空白タイミングのセグメントデータ１１４に対応して、読点が追加挿入されている。従って、このような形態素データ１２３を再結合して得たテキストデータに対して図１３のステップＳ１２１６の形態素解析処理が再度実行されることにより、再度生成された形態素ラベルデータ１２４の音素列は、セグメントデータ１１４の音素列と良く対応付けされていることになる。
【００８５】
一方、音声データ１１３の発声において空白タイミングが言いよどみにより発生したような場合において、その空白タイミングが形態素の区切りではなく途中の音素の位置になったりするケースもある。この場合に、図１２のステップＳ１２０４の判定処理により空白タイミングのセグメントデータ１１４が検出され、その判定結果がＹＥＳ、続くステップＳ１２０８の判定結果がＮＯとなることにより、ステップＳ１２１０で、形態素の区切りのない途中の音素で発生した空白タイミングに対して、形態素の区切りの位置に強制的に形態素データ１２３が挿入されることになる。この状態で、図１３のステップＳ１２１６の形態素解析処理が再度実行されると、再度生成された形態素ラベルデータ１２４の音素列は、セグメントデータ１１４の音素列とはうまく対応付かないことになる。もともと言いよどみを含むような音声データ１１３は音素片データの作成には不向きであるため、このような場合にはエラーを発生させて入力された音声データ１１３及び発話テキスト１２２は学習用には採用せず、学習用ラベルデータ１３０は出力しないようにすべきである。
【００８６】
そこで、セグメントデータ１１４の側の音素ラベルと形態素ラベルデータ１２４の側の音素ラベルの双方の音素ラベルが一致しないことによりステップＳ１２２０の判定がＮＯになる場合には、ＣＰＵ１００１は、ＲＡＭ１００３上に記憶されるエラーフラグをオンにセットし（ステップＳ１２２４）、その後、図１２及び図１３のフローチャートで示される図１１のステップＳ１１０１の対応付け処理を終了する。この結果、図１１のステップＳ１１０２の判定がＹＥＳとなって、ステップＳ１１０３のアクセント修正処理は実行されないことになり、学習用ラベルデータ１３０は生成されずにデータ付与処理が終了する。
【００８７】
セグメントデータ１１４の側の音素ラベルと形態素ラベルデータ１２４の側の音素ラベルの双方の音素ラベルが一致することによりステップＳ１２２０の判定がＹＥＳになる場合、ＣＰＵ１００１は、ＲＡＭ１００３上の変数ｔｒが示すＲＡＭ１００３の学習用ラベルデータ１３０（図８参照）の新領域に、変数segが示すセグメントデータ１１４の内容と変数morphが示す形態素ラベルデータ１２４の内容を付与する。具体的には、ＣＰＵ１００１は、上記新領域に、変数segが示すＲＡＭ１００３上のセグメントデータ１１４（図２参照）のphone、start、endの各変数の内容をコピーし、変数morphが示すＲＡＭ１００３上の形態素ラベルデータ１２４（図５参照）のaccent、molaの各変数の内容をコピーする。また、ＣＰＵ１００１は、上記新領域において、phone変数の音素ラベルが、母音の音素を示しているときにはvowel変数（図８参照）に母音を示す値「1」をセットし、子音の音素を示しているときにはvowel変数に子音を示す値「0」をセットする。また、ＣＰＵ１００１は、上記新領域において、tlabel_id変数に新たな形態素ラベルＩＤの値をセットする。更に、ＣＰＵ１００１は、上記新記領域において、prev変数には１つ手前の学習用ラベルデータ１３０の形態素ラベルＩＤの値（先頭の場合にはNULL値）をセットし、next変数には１つ後ろの学習用ラベルデータ１３０の形態素ラベルＩＤの値（末尾の場合にはNULL値）をセットする。pitch変数の内容は後述するアクセント修正処理においてセットされる。
【００８８】
ステップＳ１２２１の後、ＣＰＵ１００１は、ＲＡＭ１００３上の変数segとmorphにそれぞれ、次のセグメントデータ１１４及び次の形態素ラベルデータ１２４のアドレスをセットする（ステップＳ１２２２）。具体的には、ＣＰＵ１００１は、現在のセグメントデータ１１４のnext変数（図２参照）の値と、現在の形態素ラベルデータ１２４のnext変数（図６参照）の値をそれぞれ、変数seg及びmorphにセットする。
【００８９】
更に、ＣＰＵ１００１は、ＲＡＭ１００３上の変数ｔｒに、ＲＡＭ１００３上の学習用ラベルデータ１３０の次の空き領域のアドレスをセットする（ステップＳ１２２３）。
【００９０】
その後、ＣＰＵ１００１は、図１３のステップＳ１２１９の処理に移行して、次の繰返し処理に移る。
【００９１】
以上の繰返し処理の結果、変数seg及び変数morphの何れかが末端のデータを超えたと判定される（ステップＳ１２１９の判定がＮＯになる）と、ＣＰＵ１００１は、図１２及び図１３のフローチャートで示される図１１のステップＳ１１０１の対応付け処理を終了する。この場合には、エラーが発生せずに学習用ラベルデータ１３０が生成されたため、図１１のステップＳ１１０２の判定がＮＯとなって、図１１のステップＳ１１０３のアクセント修正処理が実行される。
【００９２】
図１５は、図１１のステップＳ１１０３のアクセント修正処理の詳細例を示すフローチャートである。アクセント修正処理では、図１１のステップＳ１１０１（図１２及び図１３）の対応付け処理によりＲＡＭ１００３に生成された学習用ラベルデータ１３０と、図１の音声解析部１０１内の基本周波数解析部１１２の機能に対応する基本周波数解析処理によりＲＡＭ１００３に生成された基本周波数データ１１５とを用いて、アクセントブロックごとに新たなアクセント位置を生成し、アクセントブロックに属するセグメントに対応する学習用ラベルデータ１３０のアクセント情報を、上述の新たに算出されたアクセント位置に基づいて修正する処理が実行される。
【００９３】
まず、ＣＰＵ１００１は、ＲＡＭ１００３上の学習用ラベルデータ１３０（図８参照）ごとに、当該学習用ラベルデータ１３０のstart変数の値とend変数の値で決まるセグメントの区間内における基本周波数の平均値を算出する（ステップＳ１５０１）。具体的には、ＣＰＵ１００１は、ＲＡＭ１００３上の基本周波数データ１１５（図９参照）において、time変数の値が上記区間内に入る各基本周波数データ１１５を抽出し、それらの基本周波数データ１１５のpitch変数に保持されている基本周波数を抽出し、それらの基本周波数の平均値を算出する。そして、ＣＰＵ１００１は、その算出した平均値を、当該学習用ラベルデータ１３０に対応するセグメントの区間の基本周波数として、当該学習用ラベルデータ１３０のpitch変数（図８参照）に保持する。
【００９４】
次に、ＣＰＵ１００１は、ステップＳ１５０２でＲＡＭ１００３上の変数ｔｒにＲＡＭ１００３上に生成されている学習用ラベルデータ１３０の先頭アドレスをセットした後、ステップＳ１５０７で変数ｔｒに学習用ラベルデータ１３０の次のアドレスを順次セットしながら、ステップＳ１５０３で変数ｔｒのアドレスが学習用ラベルデータ１３０の末端を超えたと判定するまで、ステップＳ１５０４からＳ１５０６までの一連の処理を繰り返し実行する。
【００９５】
上記繰返し処理において、ＣＰＵ１００１はまず、変数ｔｒが示す学習用ラベルデータ１３０に対応するセグメントが、アクセントブロックの切れ目であるか否かを判定する（ステップＳ１５０４）。具体的には、ＣＰＵ１００１は、変数ｔｒが示す学習用ラベルデータ１３０内のmola変数が示すモーラ番号の値（図８参照）が、当該学習用ラベルデータ１３０内のprev変数が示す１つ手前の学習用ラベルデータ１３０内のmola変数が示すモーラ番号の値よりも小さくなった場合に、上記１つ手前の学習用ラベルデータ１３０のセグメントが属するアクセントブロックが終了したと判定し、ステップＳ１５０４の判定がＹＥＳになる。或いは、ＣＰＵ１００１は、変数ｔｒが示す学習用ラベルデータ１３０のphone変数が空白セグメントを示す音素ラベル「#」を保持している場合に、当該学習用ラベルデータ１３０内のprev変数が示す１つ手前の学習用ラベルデータ１３０のセグメントが属するアクセントブロックが終了したと判定し、ステップＳ１５０４の判定がＹＥＳになる。
【００９６】
ステップＳ１５０４の判定がＹＥＳになると、ＣＰＵ１００１は、上記１つ手前の学習用ラベルデータ１３０のセグメントが属するアクセントブロックの範囲において、start変数の値とend変数の値（図８参照）で決まるセグメントの区間が当該アクセントブロックに属する学習用ラベルデータ１３０のうち、pitch変数（図８参照）が保持する基本周波数が最も高い学習用ラベルデータ１３０の音素位置（例えばstart変数の値）を、当該アクセントブロックにおける新たなアクセント位置（モーラ番号）として決定する。なお、学習用ラベルデータ１３０のvowel変数（図８参照）の値が「0」、即ちそのセグメントの音素が子音である場合には、その前後の母音の音素の学習用ラベルデータ１３０の音素位置を新たなアクセント位置とする（以上、ステップＳ１５０５）。
【００９７】
ステップＳ１５０５の後、ＣＰＵ１００１は、上記アクセントブロックの範囲において、start変数の値とend変数の値（図８参照）で決まるセグメントの区間が当該アクセントブロックに属する学習用ラベルデータ１３０において、accent変数（図８参照）の値を、mola変数（図８参照）に保持されているモーラ番号とステップＳ１５０５で算出した新たなアクセント位置との差分値（アクセント位置の手前がマイナス値、後ろがプラス値）に修正する（ステップＳ１５０６）。
【００９８】
その後、ＣＰＵ１００１は、ステップＳ１５０７の処理に移行する。
【００９９】
ステップＳ１５０４の判定がＮＯの場合には、ＣＰＵ１００１は、ステップＳ１５０５とＳ１５０６の処理はスキップして、ステップＳ１５０７の処理に移行する。
【０１００】
ステップＳ１５０７において、ＣＰＵ１００１は、変数ｔｒに学習用ラベルデータ１３０の次のアドレスをセットする。具体的には、ＣＰＵ１００１は、変更前の変数ｔｒが示すＲＡＭ１００３上の学習用ラベルデータ１３０（図８参照）のnext変数の値を、変数ｔｒに格納し直す。その後、ＣＰＵ１００１は、ステップＳ１５０３の処理に戻る。
【０１０１】
上記繰返し処理の後、変数ｔｒのアドレスが学習用ラベルデータ１３０の末端を超えたと判定されることによりステップＳ１５０３の判定がＹＥＳになると、ＣＰＵ１００１は、図１５のフローチャートで示される図１１のステップＳ１１０３のアクセント修正処理を終了し、ＲＡＭ１００３に生成されている学習用ラベルデータ１３０を、音素片データの音声データベースを作成するための最終的な学習用ラベルデータ１３０として外部記憶装置１００６等に出力する。
【０１０２】
以上のようにして、本実施形態では、音声データの空白タイミングを考慮することにより正しいアクセント情報を得ることが可能となって、音声データから得られる基本周波数によるアクセント情報の正しい修正も行うことが可能となる。
【０１０３】
上述の実施形態では、アクセントブロック内で基本周波数が最高値となるセグメントの位置によって当該アクセントブロック内の各セグメントのアクセント情報を修正した。このほかに、アクセントブロック内で信号強度が最大値となるセグメントの位置によって当該アクセントブロック内の各セグメントのアクセント情報を修正してもよい。
【０１０４】
上述の実施形態は、音素片データの音声データベースの作成に用いられる学習用ラベルデータ１３０を作成するためのアクセント情報作成装置１００についての実施形態であった。このほか、図１に示される音声解析部１０１、言語解析部１０２、及びデータ付与部１０３に加えて、データベース登録部を備え、このデータベース登録部は、セグメントごとに、音声データから当該セグメントに対応する部分を音素片データとして切り出す処理と、当該音素片データと、データ付与部１０３が学習用ラベルデータ１３０から抽出できるアクセント情報とを、当該セグメントの音素を表す音素ラベルとともに、音声データベースに登録する処理を実行するようにした音声データベース作成装置として実施されてもよい。
【０１０５】
以上の実施形態に関して、更に以下の付記を開示する。
（付記１）
入力される音声データからアクセント位置及び区切り位置の少なくとも一方を示す第１位置データを取得する取得処理と、前記音声データに対応するテキストデータから生成された複数の形態素を含む形態素データに付与されているアクセントの位置及び前記複数の形態素間の区切り位置の少なくとも一方を示す第２位置データと、前記音声データから取得された第１位置データとを比較する比較処理と、前記比較処理にて前記第１及び第２の位置データが一致していない場合には、前記前記形態素データに対して前記第２位置データに代えて前記第１位置データを付与する処理を実行する処理部を備えた音声情報作成装置。
（付記２）
前記音声情報作成装置はさらに、
前記テキストデータに対して形態素解析処理を実行することにより、前記複数の形態素を含む形態素データを生成する形態素解析部を有する、付記１に記載の音声情報作成装置。
（付記３）
前記処理部は、前記取得処理として、前記音声データの無音区間の位置を前記第１位置データの区切り位置として取得する処理を実行する、付記１または２に記載の音声情報作成装置。
（付記４）
前記処理部はさらに、前記比較処理において、前記第１位置データが示す区切り位置と第２の位置データが示す区切り位置と一致する場合は、前記形態素データに対して、前記第２の位置データが示す位置に、読点の情報を付与する、付記１乃至３のいずれかに記載の音声情報作成装置。
（付記５）
前記処理部は、前記取得処理として、前記複数の形態素それぞれに対応する前記音声データの区間内で、前記音声データの基本周波数を判別する処理と、前記音声データの区間内で前記基本周波数が最も高い位置を、前記第１位置データのアクセント位置として取得する処理を実行する、付記１乃至４のいずれかに記載の音声情報作成装置。
（付記６）
前記処理部は、前記取得処理として、前記複数の形態素それぞれに対応する前記音声データの区間内で、前記音声データの信号強度を判別する処理と、前記音声データの区間内で前記信号強度が最も高い位置を、前記第１位置データのアクセント位置として取得する処理を実行する、付記１乃至４のいずれかに記載の音声情報作成装置。
（付記７）
処理部を備えた音声情報作成装置に用いられる音声情報作成方法であって、前記処理部が、
入力される音声データからアクセント位置及び区切り位置の少なくとも一方を示す第１位置データを取得し、
前記音声データに対応するテキストデータから生成された複数の形態素を含む形態素データに付与されているアクセントの位置及び前記複数の形態素間の区切り位置の少なくとも一方を示す第２位置データと、前記音声データから取得された第１位置データとを比較し、
前記第１及び第２の位置データが一致していない場合には、前記前記形態素データに対して前記第２位置データに代えて前記第１位置データを付与する、音声情報作成方法。
（付記８）
音声情報作成装置として用いられるコンピュータに、
入力される音声データからアクセント位置及び区切り位置の少なくとも一方を示す第１位置データを取得するステップと、
前記音声データに対応するテキストデータから生成された複数の形態素を含む形態素データに付与されているアクセントの位置及び前記複数の形態素間の区切り位置の少なくとも一方を示す第２位置データと、前記音声データから取得された第１位置データとを比較するステップと、
前記第１及び第２の位置データが一致していない場合には、前記前記形態素データに対して前記第２位置データに代えて前記第１位置データを付与するステップと、
を実行させるプログラム。
（付記９）
付記１乃至６のいずれかに記載の音声情報作成装置と、
前記音声データから音素片データを切り出す処理と、前記音素片データ、前記音素片データを表わす音素ラベル、及び前記音声情報作成装置により前記音素片データに対応する形態素に付与されたアクセント情報を音声データベースに登録する処理と、を実行する登録処理部と、
を備えた音声データベース作成装置。
【符号の説明】
【０１０６】
１００  アクセント情報作成装置
１０１  音声解析部
１０２  言語解析部
１０３  データ付与部
１１０  音声認識部
１１１  音響モデル
１１２  基本周波数解析部
１２０  形態素解析部
１２１  形態素辞書
１２２  発話テキスト
１００１  ＣＰＵ
１００２  ＲＯＭ（リードオンリーメモリ）
１００３  ＲＡＭ（ランダムアクセスメモリ）
１００４  入力装置
１００５  出力装置
１００６  外部記憶装置
１００７  可搬記録媒体駆動装置
１００８  通信インタフェース
１００９  バス
１０１０  可搬記録媒体
【図１】
0006631186.tif 000002
【図２】
0006631186.tif 000003
【図３】
0006631186.tif 000004
【図４】
0006631186.tif 000005
【図５】
0006631186.tif 000006
【図６】
0006631186.tif 000007
【図７】
0006631186.tif 000008
【図８】
0006631186.tif 000009
【図９】
0006631186.tif 000010
【図１０】
0006631186.tif 000011
【図１１】
0006631186.tif 000012
【図１２】
0006631186.tif 000013
【図１３】
0006631186.tif 000014
【図１４】
0006631186.tif 000015
【図１５】
0006631186.tif 000016