以下、本発明に係る文字情報提示装置の例を、図を用いて説明する。
(実施の形態1)
図1は、本発明の実施の形態1における文字情報提示装置の構成を示すブロック図である。図1に示すように本実施の形態における文字情報提示装置は、文字情報入力部101、文字列バッファ部102、基準音声合成長演算部103、制御部104、文字列の時間情報を記憶するメモリとしての制御部メモリ105、音声合成部106、音声出力部107を含む。
次に、このように構成された本実施の形態における文字情報提示装置の動作について説明する。文字情報入力部101は、文字列の入力を受け付ける。そして、文字情報入力部101より入力された文字列は、文字列バッファ部102に入力され、記憶される。
文字列バッファ部102は、基準音声合成長演算部103、制御部104及び音声合成部106からの要求により、文字列の出力を行う。新しい文字列が文字情報入力部101より入力され、文字列バッファ部102に記憶された場合、文字列バッファ部102は更新通知信号を基準音声合成長演算部103に出す。
基準音声合成長演算部103は、更新通知信号により文字列バッファ部102に新しい文字列が記憶されたことを検知すると、文字列バッファ部102に読み出し要求を出す。そして、基準音声合成長演算部103は、文字列バッファ部102から記憶されている文字列を読み出す。また、基準音声合成長演算部103は、読み出された文字列を所定の速度(以下、基準速度と記載する)で音声合成部106において音声合成を行う場合に、発声にかかる時間を算出する。そして、その結果に基づいて、基準音声合成長演算部103は、算出した発声にかかる時間を示す読み上げ時間長信号を制御部104に出力する。なお、基準速度は、例えば、アナウンサ等の発声する言葉の速度に代表される標準的な速度とする。
制御部104は、基準音声合成長演算部103より入力される読み上げ時間長信号と、制御部メモリ105内に保持されている時間情報に基づき読み上げ速度率を演算する。そして、制御部104は、その演算結果に基づき読み上げ速度率信号を音声合成部106に出力する。また、制御部104は、文字列バッファ部102に格納されている文字列の時間情報を制御部メモリ105に出力する。
音声合成部106は、文字列バッファ部102に読み出し要求を出す。また、制御部104において演算した読み上げ速度率信号が示す読み上げ速度率に基づき、音声合成部106は、文字列バッファ部102より入力される文字列の音声合成を行う。そして、音声合成部106は、音声合成された音声信号を音声出力部107に出力する。
次に、図2を用いて、文字列バッファ部102に記憶されている時間情報や文字列のデータ構造体の一例を示す。図2は、本実施の形態における文字列バッファ部102に記憶されている時間情報や文字列のデータ構造体を示す模式図である。本例では、文字列バッファ部102は、strbuffとstringFIFOと名づけたデータ構造体を用いて記述し、ソフトウエアにより構成している。本例では、文字列バッファ部102は、文字列バッファ部102に文字列が入力された時間である時間情報を、変数であるtimeに記憶する。また、文字列バッファ部102は、最大5つまでの文字列を、変数であるstrに記憶する。そして、詳細な説明は後述するが、変数であるbuffに文字列を格納する。また、記憶されている文字列の最後のデータ位置を変数であるlaststrに記憶する。
本例では、文字列を記憶する変数であるstrには最大256文字まで格納可能としているが、それ以上であっても同様の効果が得られる。また、入力される文字列の長さにより確保する文字列長を可変させても、同様の効果が得られる。本例でのint64は64ビット整数型、charは8ビット文字型、intは32ビット整数型としているが、他のビット数及び他の型であっても同様の効果が得られる。なお、本実施例では、文字列バッファ部102は、CPUやメモリなどのハードエウアの動作を規定するソフトウエアにより記述して構成している。ハードウエアのみでも実現可能であるが、ソフトウエアを用いることにより、より柔軟に各種の設定を変更可能であり、かつ低コストで実現できるなどの利点がある。
次に、図3を用いて、図2において示したデータ構造体に格納されているデータの一例を示す。文字列バッファ1,文字列バッファ2、文字列バッファ3、文字列バッファ4、及び文字列バッファ5は、図2のデータ構造体での変数であるbuff[0]、buff[1]、buff[2]、buff[3]及びbuff[4]に対応する。そして、各buff内には時間情報301と格納文字列302とが格納されている。例えば、文字列バッファ1に格納されている時間情報301はstrfifo.buff[0].timeとして示すことができる。また、文字列バッファ1に格納されている格納文字列302はstrfifo.buff[0].strとして示すことができる。
本実施の形態における時間情報301は、一般的なコンピュータ言語で用いられる協定世界時(UTC)、1970年1月1日の0時(00:00:00)を基点とした経過秒数を格納することとする。図3では、時、分、及び秒のみ記載しているが、実際には、年、及び月も含めたデータを格納していることとする。なお、本実施の形態では他の方式で時間情報301を格納していたとしても同様の効果が得られる。
図3に示している最終データ位置303に格納されるデータは、現在有効なデータが格納されている文字列バッファ部102の最終データの位置を示す。例えば、図3の状態では、文字列バッファ1、文字列バッファ2、文字列バッファ3に有効なデータが格納されており、文字列バッファ4及び文字列バッファ5には空のデータまたは無効なデータが格納されているとしている。したがって、最終データ位置303に格納されているデータは有効なデータの内の最終データである文字列バッファ3を示す。図3において、最終データ位置303は、図2のデータ構造体例では、変数であるlaststrに対応する。文字列バッファ1から文字列バッファ5に格納されている時間情報301は、格納文字列302と関連付けられており、格納文字列302が文字列バッファ部102に入力された時間を時間情報301として文字列バッファ部102が格納することとする。
次に、具体的な文字列バッファ部102の動作について説明する。例えば、図3のデータ格納状態において、時間情報301として文字列「12:00:10」と、格納文字列302として文字列「TOMORROW’S FORECAST IS SUNNY IN ALL THE AREA」とが入力された場合を想定する。この場合、次の空き文字列バッファである文字列バッファ4の時間情報301に文字列「12:00:10」が格納され、文字列バッファ4の格納文字列302に文字列「TOMORROW’S FORECAST IS SUNNY IN ALL THE AREA」が格納される。そして、最終データ位置303は、文字列バッファ4を示すように変更される。
また、図3のデータ格納状態において、1つの文字列バッファを削除するように指示があった場合、文字列バッファ2に格納されているデータを文字列バッファ1に複製する。そして、文字列バッファ3に格納されているデータを文字列バッファ2に複製する。さらに、文字列バッファ4に格納されているデータを文字列バッファ3に複製する。また、文字列バッファ5に格納されているデータを文字列バッファ4に複製する。そして、最終データ位置303は現在示している文字列バッファの図3での1つ上側の文字列バッファ、すなわち図3のデータ格納状態では最終データ位置303は文字列バッファ2を示すように変更する。
上述したように、本実施の形態では、データの削除は必ず文字列バッファ1より行うこととしている。そして、後続するデータは文字列バッファ2を文字列バッファ1に複製し、文字列バッファ3を文字列バッファ2に複製しながらシフトしていくこととしている。しかし、本データ構造体の要素に加え、開始データ位置を示す変数を追加してもよい。そして、その開始データ位置がデータの削除を行うデータを示すものとする。すなわち、データ削除を行う場合、開始データ位置が示す文字列バッファ位置が、例えば現在、文字列バッファ1を示しているのであれば、文字列バッファ2を示すように変更する。また、現在、文字列バッファ2を示しているのであれば、文字列バッファ3を示すように変更してもよい。このようにすることにより、処理の高速化を達成するとともに同様の効果が得られる。
なお、本実施の形態では文字列バッファは5つまであることとしているが、それ以上であっても、それ以下であっても、動的に格納個数を変化させても同様の効果が得られる。
以下では、図1を用いて、本実施の形態における文字情報提示装置の動作の詳細について説明する。図1に示すように文字列バッファ部102は、基準音声合成長演算部103、制御部104、及び音声合成部106からの要求に応じて、格納されている各データの内容を出力する。また、前述したように、制御部104は、文字列バッファ部102に格納されている文字列の時間情報を制御部メモリ105に出力する。このように、メモリとしての制御部メモリ105に記憶される時間情報は、制御部104において読み上げ速度率信号を算出した際に、文字列バッファ部102より読み出した文字列の時間情報に更新される。
また、データの削除は音声合成部106が文字列バッファ部102よりデータを読み出した際、音声合成部106よりデータ削除要求が文字列バッファ部102に出されることに基づいて実行する。また、文字情報入力部101が、文字列を文字列バッファ部102に入力すると、文字列バッファ部102は格納されているデータが更新されたことを示す更新通知信号を基準音声合成長演算部103、制御部104、及び音声合成部106に通知する。
図1における基準音声合成長演算部103は、文字列バッファ部102内の文字列を音声合成部106が基準速度で発声した場合にかかる時間を、算出する。図4は、基準音声合成長演算部103の内部構成を示すブロック図である。基準音声合成長演算部103は、基準音声合成長演算部用制御部401、文字列一時格納部402、読み上げ時間長加算部403、単語読み上げ時間長基準データ部404を含む。
次に、このように構成された基準音声合成長演算部103の動作について説明する。基準音声合成長演算部用制御部401は、文字列バッファ部102からの更新通知信号を受けると、更新された文字列データを読み出すように読み出し要求を文字列バッファ部102に出力する。そして、基準音声合成長演算部用制御部401は、読み上げ時間長加算部403内に格納されている読み上げ時間長を0にする。文字列バッファ部102は更新された文字列を基準音声合成長演算部103に出力し、基準音声合成長演算部103は入力された文字列を文字列一時格納部402に格納する。文字列一時格納部402は、基準音声合成長演算部用制御部401からの要求に応じ、格納されている文字列を単語単位に分割し、読み上げ時間長加算部403に出力する。
読み上げ時間長加算部403は、文字列一時格納部402より入力される単語単位の文字列を単語読み上げ時間長基準データ部404に参照し、該当する単語を音声合成部106が基準速度で発声した場合にかかる時間を算出する。その結果に基づき、読み上げ時間長加算部403は、読み上げ時間長加算部403内に格納されている読み上げ時間長に、算出した時間を加算する。このようにして、読み上げ時間長加算部403は、文字列一時格納部402内に格納されている文字列の全ての単語を演算して、文字列の読み上げ時間長を算出する。
次に、基準音声合成長演算部用制御部401は、文字列の読み上げ時間長が算出されると、読み上げ時間長加算部403に読み上げ時間長の出力要求を出す。そして、その出力要求に基づいて、読み上げ時間長加算部403は、読み上げ時間長を含む読み上げ時間長信号を出力する。出力された読み上げ時間長信号は制御部104に入力される。
次に、図5を用いて、単語読み上げ時間長基準データ部404内に格納されているデータの一例を示す。データの例として、単語501(図5では、「word501」と表す)の欄と、単語501を基準速度で発声した場合にかかる時間である読み上げ時間長502(図5では、「duration502」と表す)の欄とを示している。
word501とduration502は関連付けされており、対応している。例えば、clowdyというword501に対応するduration502は2.0である。duration502の単位は、本実施の形態においては、秒とし、例えばclowdyという単語を発声するために必要な時間は図5のテーブルでは2.0秒である。なお、単位に関しては、他の単位を用いても同様の効果が得られる。
ところで、基準音声合成長演算部用制御部401が文字列バッファ部102からのデータ更新通知を受けると、更新された文字列データを読み出すように読み出し要求を文字列バッファ部102に出す。そして、文字列「NEXT IS WEATHER FORCAST」が文字列バッファ部102から出力された場合、まず、この文字列は文字列一時格納部402に保持される。そして、基準音声合成長演算部用制御部401は、読み上げ時間長加算部403内に格納されている読み上げ時間長を0にする。文字列一時格納部402は基準音声合成長演算部用制御部401からの要求に応じ、格納されている文字列を単語単位に分割する。そして、文字列一時格納部402は、単語単位に読み上げ時間長加算部403に出力する。すなわち、文字列「NEXT」、「IS」、「WEATHER」、「FORCAST」と単語単位に出力される。読み上げ時間長加算部403は文字列一時格納部402より出力される単語単位の文字列データを単語読み上げ時間長基準データ部404に参照する。そして、読み上げ時間長加算部403は、それらの各単語に対応した図5におけるduration502を読み上げ時間長に加算していく。各単語の図5におけるduration502は本例の場合、文字列「NEXT」は1.5秒、文字列「IS」は1.0秒、文字列「WEATHER」は2.0秒、文字列「FORCAST」は2.5秒となり、加算結果は単語のみで7.0秒となる。
なお、読み上げ時間長加算部403は、各単語間に挿入されているスペース文字、ピリオド、コンマ等も単語同様に扱う。例えばスペース文字、ピリオド、コンマに各0.5秒を割り当てている場合、「NEXT IS WEATHER FORCAST」という文字列には計3つのスペース文字が挿入されているため、1.5秒が加算される。その結果、文字列「NEXT IS WEATHER FORCAST」の全ての単語およびスペース文字、ピリオド、コンマ等が処理された後の読み上げ時間長は8.5秒である。読み上げ時間長加算部403は、演算した読み上げ時間長を含む読み上げ時間長信号を制御部104に出力する。
単語読み上げ時間長基準データ部404内のduration502にすでに各単語の認識性を高めるための時間が加算されている場合は、別途スペース文字での時間を加算する必要はない。本実施の形態では、英語で使用されるスペース、ピリオド、コンマ等を例に挙げたが、他の言語を扱う場合は各言語で使用される句読点を同様に扱うことにより同様の効果が得られる。
本実施の形態では、16単語のみが、単語読み上げ時間長基準データ部404内に格納されている例を示した。しかし、実際には発声する言語で一般的に使われる単語は、単語読み上げ時間長基準データ部404に含めることが望ましい。
なお、1つの言語のみならず、複数言語に対応した単語読み上げ時間長基準データ部404を持つことにより多言語対応が可能となる。複数言語に対応する場合、以下のようにして、よりデータの効率化を図ることができる。すなわち、よりデータの効率化を図るために、1つの単語読み上げ時間長基準データ部404内に複数言語のデータを格納してもよい。または、言語ごとに複数の単語読み上げ時間長基準データ部404を設けてもよい。または、各言語で共通した単語を1つの1つの単語読み上げ時間長基準データ部404内に格納し、各言語固有の単語に関しては別の単語読み上げ時間長基準データ部404を設けてもよい。
なお、単語読み上げ時間長基準データ部404に存在しない単語が参照された場合、単語読み上げ時間長基準データ部404は次の方法で単語の読み上げ時間長を出力することとする。すなわち、単語読み上げ時間長基準データ部404に存在しない単語が参照された場合の単語読み上げ時間長基準データ部404の出力方法は、例えば該当する単語の文字数に応じ演算する、類似する単語と同様の単語の読み上げ時間長とするなどである。
なお、単語読み上げ時間長基準データ部404に存在しない単語が参照された場合、単語読み上げ時間長基準データ部404の出力方法は、単語をさらに詳細に分割し、分割した単位ごとにテーブルを持つことでも可能である。例えば、「implementation」という単語は、文字列「im」、文字列「ple」、文字列「men」、文字列「tation」と単語を分割可能である。そして、各分割した要素ごとの発声に必要な時間を単語読み上げ時間長基準データ部404内に格納しておけば、単語単位での単語読み上げ時間長基準データ部404が存在しなくても単語の要素ごとに発声した場合に必要な時間を加算することができる。その結果、実際に単語単位で発声した際に必要な時間が求められる。
また、単語読み上げ時間長基準データ部404内には単語ごとに発声した場合にかかる時間は保持せず、単語を分割した単位での発声にかかる時間を保持しておいても、同様の効果が得られる。
なお、本実施の形態のように単語読み上げ時間長基準データ部404内に単語の読み上げ時間長を算出するためのデータベースを持つ以外に、言語の発声ルールを基に文字列より単語の読み上げ時間長を算出するアルゴリズムを用いても、同様の効果が得られる。
次に、図6を用いて制御部メモリ105に格納されている時間情報601の説明、及び制御部104での演算処理の説明をする。図6には、例として時間情報601には、時間情報である文字列「12:00:00」が格納されている。本例では、図3において示した文字列バッファ1に格納されていた時間情報301である文字列「12:00:00」と格納文字列302である文字列「NEXT IS WEATHER FORCAST」とが、制御部104において処理された後の状態として説明する。制御部104は、基準音声合成長演算部103より読み上げ時間長信号を受け取ると、文字列バッファ部102より時間情報301及び格納文字列302を読み出す。制御部104は、演算対象のデータの時間情報301の文字列「12:00:03」と格納文字列302の文字列「WEATHER IS FINE IN THE NORTHERN AREA」とを処理する際に、まず基準音声合成長演算部103において演算して、文字列「WEATHER IS FINE IN THE NORTHERN AREA」を音声合成部106が基準速度で発声した場合に要する時間を求める。
これには、基準音声合成長演算部103が出力する読み上げ時間長信号を用いることができる。また、制御部104が、図5のテーブルを用いて演算して求めてもよい。その結果、単語のみの発声に10.5秒を要することがわかる。そして、単語間のスペース文字、計6個に対し、各0.5秒ずつ要するとすれば、基準速度で発声した場合に要する時間はさらに3秒必要である。したがって、文字列「WEATHER IS FINE IN THE NORTHERN AREA」を音声合成部106が基準速度で発声した場合に要する時間は13.5秒と求められる。
次に、制御部104は、制御部メモリ105に記憶されている時間情報601の文字列「12:00:00」を読み出し、演算対象のデータである時間情報301の文字列「12:00:03」との時間の差分を求める。この場合、時間の差分の演算結果は3秒である。そして、制御部104は、音声合成部106が基準速度で発声した場合に13.5秒が必要である文字列「WEATHER IS FINE IN THE NORTHERN AREA」を、時間の差分の演算結果である3秒で発音を完了するために必要な読み上げ速度率を演算する。例えば、基準速度で発声する場合を100とした場合、以下の公式により読み上げ速度率を演算する。すなわち、「読み上げ速度率」=「基準速度で発声した場合に要する時間」÷「時間の差分」×100である。
本例では、上述した公式により、読み上げ速度率は、13.5÷3×100=450となる。制御部104は、この値(ここでは450)を読み上げ速度率を示す読み上げ速度率信号として音声合成部106に出力する。そして、制御部104は、制御部メモリ105に格納されている時間情報601を、文字列バッファ2に格納されている時間情報301である文字列「12:00:03」に更新する。
音声合成部106は、制御部104より読み上げ速度率信号を受け取ると、文字列バッファ部102より文字列を読み出し、受け取った読み上げ速度率信号が示す読み上げ速度率で文字列を読み上げる。音声合成部106が音声合成を行う音声の発声速度は、制御部104から出力される読み上げ速度率が100の場合、基準音声合成長演算部103において演算される基準速度と同一である。また、制御部104から出力される読み上げ速度率に正比例して可変する。例えば、制御部104から出力される読み上げ速度率が200の場合は、基準音声合成長演算部103で演算される基準速度の倍の速度で発声する。その結果、発声に要する時間は半分となる。また、制御部104から出力される読み上げ速度率が50の場合、基準音声合成長演算部103で演算される基準速度の半分の速度で発声する。その結果、発声に要する時間は倍となる。
なお、本実施の形態では、文字列バッファ部102内の時間情報301は、格納文字列302と関連付けされている。すなわち、文字列バッファ部102は、文字情報入力部101より文字列が文字列バッファ部102に入力された時間を時間情報301として格納する。しかし、文字情報入力部101より文字列と共に時間情報が入力された場合、文字情報入力部101より文字列が文字列バッファ部102に入力された時間の代わりに、文字列と共に入力された時間情報を文字列バッファ部102に格納することとしても同様の効果が得られる。すなわち、メモリとしての制御手段部メモリ105に記憶されている文字列の時間情報は、文字情報入力部101より入力された文字列に付随する提示時間情報であってもよい。例えば、テレビ放送において使用される字幕情報には画面上に表示する時刻を記した時間情報が文字列と共に送られてくる。この画面上に表示する時刻を文字列バッファ部102内の時間情報301として記憶し用いることにより、より字幕の音声合成に適した音声合成を行うことができる。
なお、本実施の形態では、制御部104は、基準音声合成長演算部103において演算される基準速度を用いて、音声合成部106が音声合成を行う音声の発声速度を、制御している。しかし、単純に発音する文字列の文字数や単語数を用いて、音声合成部106が音声合成を行う音声の発声速度を、制御部104が制御しても同様の効果が得られる。
すなわち、文字数での演算の場合、例えば、本例の文字列「WEATHER IS FINE IN THE NORTHERN AREA」であれば、スペース文字を含め36文字の文字列である。この文字数に基づいて、制御部104が例えば、読み上げ速度率を「文字数」×「10」という公式で演算してもよい。そして、制御部104が、その算出結果の360を読み上げ速度率として音声合成部106に出力する。このように、制御部104は、文字列バッファ部102に記憶されている文字列の文字数に基づき、読み上げ速度率を演算してもよい。
また、単語数での演算の場合、例えば、本例の文字列「WEATHER IS FINE IN THE NORTHERN AREA」であれば、6単語の文字列である。この単語数に基づいて、制御部104が例えば、読み上げ速度率を「単語数」×「80」という公式で演算してもよい。そして、制御部104が、その算出結果の480を読み上げ速度率として音声合成部106に出力する。このように、制御部104は、文字列バッファ部102に記憶されている文字列の単語数に基づき、読み上げ速度率を演算してもよい。
上述したように、本実施の形態の文字情報提示装置は、文字列の時間情報を記憶するメモリとしての制御部メモリ105と、文字列の入力を受け付ける文字情報入力部101と、文字情報入力部101に文字列が入力された場合に、文字列を記憶するとともに更新通知信号を出力する文字列バッファ部102と、更新通知信号を受信すると、文字列バッファ部102に記憶されている文字列を読み出し、所定の速度で発声した場合にかかる時間を算出し読み上げ時間長信号として出力する基準音声合成長演算部103とを備えている。また、基準音声合成長演算部103より出力される読み上げ時間長信号、この読み上げ時間長信号に対応し文字列バッファ部102に記憶されている文字列の時間情報、及びメモリに記憶されている文字列の時間情報に基づき、読み上げ速度率を算出し、読み上げ速度率信号として出力する制御部104と、文字列バッファ部102に読み出し要求を出し、読み上げ速度率信号に基づき文字列バッファ部102より入力される文字列の音声合成をする音声合成部106とを備えている。
このような構成により、文字列を「基準速度で発声した場合に要する時間」である読み上げ時間長信号に含まれる読み上げ時間長と、文字列が入力される時間情報の間隔である文字列バッファ部102に記憶されている文字列の時間情報及びメモリに記憶されている文字列の時間情報の間隔、すなわち、それぞれの時間情報の「時間の差分」とを上述した公式に用いることにより、制御部104は、「読み上げ速度率」を算出できる。
このように音声合成の速度の演算を行い、音声合成部106は算出された読み上げの速度に基づき文字情報の提示を行うことができる。また、制御部104は文字列の音声合成に要する時間と文字列と共に入力される文字列の時間情報の間隔を用い、音声合成の速度の演算を行うこともできる。したがって、あらかじめ到来する文字列の頻度や文字数がわからなくとも、文字列の読み上げ速度率を最適な値に設定し聞き取りやすさを確保する文字情報提示装置を提供することが可能となる。
(実施の形態2)
図7は、本発明の実施の形態2における文字情報提示装置の構成を示すブロック図である。図7に示すように本実施の形態における文字情報提示装置は、文字情報入力部701、文字列バッファ部702、基準音声合成長演算部703、制御部704、文字列の時間情報を記憶するメモリとしての制御部メモリ705、音声合成部706、音声出力部707を含む。実施の形態1における文字情報提示装置の文字情報入力部101は、文字列の入力を受け付けた。しかし、本実施の形態における文字情報提示装置の文字情報入力部701は、文字列、提示時間情報、及び消去時間情報の入力を受け付けることが、実施の形態1における文字情報提示装置と異なる。
次に、このように構成された本実施の形態における文字情報提示装置の動作について説明する。文字情報入力部701より入力された文字列、提示時間情報、及び消去時間情報は、文字列バッファ部702に入力され、記憶される。
文字列バッファ部702は、基準音声合成長演算部703、制御部704及び音声合成部706からの要求により、文字列、提示時間情報、及び消去時間情報の出力を行う。新しい文字列が文字情報入力部701より入力され、文字列バッファ部702に記憶された場合、文字列バッファ部702は更新通知信号を基準音声合成長演算部703に出す。
基準音声合成長演算部703、制御部704、及び音声合成部706の動作は、図1において示した実施の形態1における基準音声合成長演算部103、制御部104、及び音声合成部106の動作と、それぞれ同様であるので説明を省略する。それらの詳細な動作については、別途、後述する。
次に、図8を用いて、文字列バッファ部702に記憶されている時間情報、消去時間情報、及び文字列のデータ構造体の一例を示す。図8は、本実施の形態における文字列バッファ部702に記憶されている時間情報、及び消去時間情報、及び文字列のデータ構造体の一例を示す模式図である。本例では、文字列バッファ部702は、strbuffとstringFIFOと名づけたデータ構造体を用いて記述して、ソフトウエアにより構成している。本例では、文字列バッファ部702は、最大5つまでの文字列の表示開始時間、文字列の表示終了時間、文字列を変数であるdisplay_time、erase_time及びstrにそれぞれ記憶する。また、記憶されている文字列の最後のデータ位置を変数であるlaststrに記憶する。
本例では、文字列を記憶する変数であるstrには最大256文字まで格納可能としているが、それ以上であっても同様の効果が得られる。また、入力される文字列の長さにより確保する文字列長を可変させても、同様の効果が得られる。本例でのint64は64ビット整数型、charは8ビット文字型、intは32ビット整数型としているが、他のビット数及び他の型であっても同様の効果が得られる。なお、本実施例でも、文字列バッファ部702は、CPUやメモリなどのハードエウアの動作を規定するソフトウエアにより記述して構成している。ハードウエアのみでも実現可能であるが、ソフトウエアを用いることにより、より柔軟に各種の設定を変更可能であり、かつ低コストで実現できるなどの利点がある。
次に、図9を用いて、図8において示したデータ構造体に格納されているデータの一例を示す。文字列バッファ1,文字列バッファ2、文字列バッファ3、文字列バッファ4、及び文字列バッファ5は、図8のデータ構造体での変数であるbuff[0]、buff[1]、buff[2]、buff[3]及びbuff[4]に対応する。そして、各buff内には提示時間情報901、消去時間情報902及び格納文字列903が格納されており、例えば、文字列バッファ1に格納されている提示時間情報901はstrfifo.buff[0].timeとして示すことができる。また、文字列バッファ1に格納されている消去時間情報902はstrfifo.buff[0].erase_timeとして示すことができる。そして、文字列バッファ1に格納されている格納文字列903はstrfifo.buff[0].strとして示すことができる。
本実施の形態における提示時間情報901及び消去時間情報902は、一般的なコンピュータ言語で用いられる協定世界時(UTC)、1970年1月1日の0時(00:00:00)を基点とした経過秒数を格納することとする。図9では、時、分、及び秒のみ記載しているが、実際には、年、及び月も含めたデータを格納していることとする。なお、本実施の形態では他の方式で提示時間情報901や消去時間情報902を格納していたとしても同様の効果が得られる。
図9に示している最終データ位置904に格納されるデータは、現在有効なデータが格納されている文字列バッファ部702の最終データの位置を示す。例えば、図9の状態では、文字列バッファ1、文字列バッファ2、文字列バッファ3に有効なデータが格納されており、文字列バッファ4及び文字列バッファ5には空のデータまたは無効なデータが格納されているとしている。したがって、最終データ位置904に格納されているデータは有効なデータの内の最終データである文字列バッファ3を示す。図9において、最終データ位置904は、図8のデータ構造体例では、変数であるlaststrに対応する。文字情報入力部701より入力された文字列、提示時間情報、及び消去時間情報は、文字列バッファ部702に入力され、対応する格納文字列903、提示時間情報901、及び消去時間情報902に格納される。また、図9に示すように、文字列バッファ1から文字列バッファ5に格納されている提示時間情報901、及び消去時間情報902は、格納文字列903と関連付けられている。
次に、具体的な文字列バッファ部702の動作について説明する。例えば、図9のデータ格納状態において、提示時間情報901として文字列「12:00:10」と、消去時間情報902として文字列「12:00:13」と、格納文字列903として文字列「TOMORROW’S FORECAST IS SUNNY IN ALL THE AREA」とが入力された場合を想定する。この場合、次の空き文字列バッファである文字列バッファ4の提示時間情報901に文字列「12:00:10」が格納され、文字列バッファ4の消去時間情報902に文字列「12:00:13」が格納され、文字列バッファ4の格納文字列903に文字列「TOMORROW’S FORECAST IS SUNNY IN ALL THE AREA」が格納される。そして、最終データ位置904は、文字列バッファ4を示すように変更される。
また、図9のデータ格納状態において、1つの文字列バッファを削除するように指示があった場合は、文字列バッファ2に格納されているデータを文字列バッファ1に複製する。そして、文字列バッファ3に格納されているデータを文字列バッファ2に複製する。さらに、文字列バッファ4に格納されているデータを文字列バッファ3に複製する。また、文字列バッファ5に格納されているデータを文字列バッファ4に複製する。そして、最終データ位置904を現在示している文字列バッファの図9での1つ上側の文字列バッファ、すなわち図9のデータ格納状態では最終データ位置904は文字列バッファ2を示すように変更する。
上述したように、本実施の形態では、データの削除は必ず文字列バッファ1より行うこととしている。そして、後続するデータは文字列バッファ2を文字列バッファ1に複製し、文字列バッファ3を文字列バッファ2に複製しながらシフトしていくこととしている。しかし、本データ構造体の要素に加え、開始データ位置を示す変数を追加してもよい。そして、その開始データ位置がデータの削除を行うデータを示すものとする。すなわち、データ削除が行われると、開始データ位置が示す文字列バッファ位置が、例えば現在文字列バッファ1を示しているのであれば、文字列バッファ2を示すように変更する。また、現在、文字列バッファ2を示しているのであれば、文字列バッファ3を示すように変更してもよい。このようにすることにより、処理の高速化を達成するとともに同様の効果が得られる。
なお、本実施の形態では文字列バッファは5つまであることとしているが、それ以上であっても、それ以下であっても、動的に格納個数を変化させても同様の効果が得られる。
以下では、図7を用いて、本実施の形態における文字情報提示装置の動作の詳細について説明する。図7に示すように文字列バッファ部702は、基準音声合成長演算部703、制御部704、及び音声合成部706からの要求に応じて、格納されている各データの内容を出力する。
また、データの削除は音声合成部706が文字列バッファ部702よりデータを読み出した際、音声合成部706よりデータ削除要求が文字列バッファ部702に出されることに基づいて実行する。また、文字情報入力部701が、文字列を文字列バッファ部702に入力すると、文字列バッファ部702は格納されているデータが更新されたことを示す更新通知信号を基準音声合成長演算部703、制御部704、及び音声合成部706に通知する。
図7における基準音声合成長演算部703は、文字列バッファ部702内の文字列を音声合成部706が基準速度で発声した場合にかかる時間を、算出する。図10は、基準音声合成長演算部703の内部構成を示すブロック図である。基準音声合成長演算部703は、基準音声合成長演算部用制御部1001、文字列一時格納部1002、読み上げ時間長加算部1003、単語読み上げ時間長基準データ部1004を含む。
次に、このように構成された基準音声合成長演算部703の動作について説明する。ここで、基準音声合成長演算部703に含まれる基準音声合成長演算部用制御部1001、文字列一時格納部1002、読み上げ時間長加算部1003、単語読み上げ時間長基準データ部1004の動作は、図4において示した実施の形態1における基準音声合成長演算部103に含まれる基準音声合成長演算部用制御部401、文字列一時格納部402、読み上げ時間長加算部403、単語読み上げ時間長基準データ部404の動作と、それぞれ同様であるので説明を省略する。
次に、図11を用いて、単語読み上げ時間長基準データ部1004内に格納されているデータの一例を示す。データの例として、単語1101(図11では、「word1101」と表す)の欄と、単語1101を基準速度で発声した場合にかかる時間である読み上げ時間長1102(図11では、「duration1102」と表す)の欄とを示している。
word1101とduration1102は関連付けされており、対応している。例えば、clowdyというword1101に対応するduration1102は2.0である。duration1102の単位は本実施の形態は秒とし、例えばclowdyという単語を発声するために必要な時間は図11のテーブルでは2.0秒である。なお、単位に関しては、他の単位を用いても同様の効果が得られる。
ところで、基準音声合成長演算部用制御部1001が文字列バッファ部702からのデータ更新通知を受けると、更新された文字列データを読み出すように読み出し要求を文字列バッファ部702に出す。そして、文字列「NEXT IS WEATHER FORCAST」が文字列バッファ部702から出力された場合、まず、この文字列は文字列一時格納部1002に保持される。そして、基準音声合成長演算部用制御部1001は、読み上げ時間長加算部1003内に格納されている読み上げ時間長を0にする。文字列一時格納部1002は基準音声合成長演算部用制御部1001からの要求に応じ、格納されている文字列を単語単位に分割する。そして、文字列一時格納部1002は、単語単位に読み上げ時間長加算部1003に出力する。すなわち、文字列「NEXT」、「IS」、「WEATHER」、「FORCAST」と単語単位に出力される。読み上げ時間長加算部1003は文字列一時格納部1002より出力される単語単位の文字列データを単語読み上げ時間長基準データ部1004に参照する。そして、読み上げ時間長加算部1003は、それらの各単語に対応した図11におけるduration1102を読み上げ時間長に加算していく。各単語の図11におけるduration1102は本例の場合、文字列「NEXT」は1.5秒、文字列「IS」は1.0秒、文字列「WEATHER」は2.0秒、文字列「FORCAST」は2.5秒となり、加算結果は単語のみで7.0秒となる。
なお、読み上げ時間長加算部1003は、各単語間に挿入されているスペース文字、ピリオド、コンマ等も単語同様に扱う。例えばスペース文字、ピリオド、コンマに各0.5秒を割り当てている場合、「NEXT IS WEATHER FORCAST」という文字列には計3つのスペース文字が挿入されているため、1.5秒が加算される。その結果、文字列「NEXT IS WEATHER FORCAST」の全ての単語およびスペース文字、ピリオド、コンマ等が処理された後の読み上げ時間長は8.5秒である。読み上げ時間長加算部1003は、演算した読み上げ時間長は制御部704に出力する。
単語読み上げ時間長基準データ部1004内のduration1102にすでに各単語の認識性を高めるための時間が加算されている場合は、別途スペース文字での時間を加算する必要はない。本実施の形態では、英語で使用されるスペース、ピリオド、コンマ等を例に挙げたが、他の言語を扱う場合は各言語で使用される句読点を同様に扱うことにより同様の効果が得られる。
本実施の形態では、16単語のみ単語読み上げ時間長基準データ部内に格納されていることとしている例を示したが、実際には発声する言語で一般的に使われる単語は単語読み上げ時間長基準データ部1004に含めることが望ましい。
なお、1つの言語のみならず、複数言語に対応した単語読み上げ時間長基準データ部1004を持つことにより多言語対応が可能となる。複数言語に対応する場合、以下のようにして、よりデータの効率化を図ることができる。すなわち、よりデータの効率化を図るために、1つの単語読み上げ時間長基準データ部1004内に複数言語のデータを格納してもよい。または、言語ごとに複数の単語読み上げ時間長基準データ部1004を設けてもよい。または、各言語で共通した単語を1つの1つの単語読み上げ時間長基準データ部1004内に格納し、各言語固有の単語に関しては別の単語読み上げ時間長基準データ部1004を設けてもよい。
なお、単語読み上げ時間長基準データ部1004に存在しない単語が参照された場合、単語読み上げ時間長基準データ部1004は次の方法で単語読み上げ時間長を出力することとする。すなわち、単語読み上げ時間長基準データ部1004に存在しない単語が参照された場合の単語読み上げ時間長基準データ部1004の出力方法は、例えば該当する単語の文字数に応じ演算する、類似する単語と同様の単語読み上げ時間長とするなどである。
なお、単語読み上げ時間長基準データ部1004に存在しない単語が参照された場合、単語読み上げ時間長基準データ部1004の出力方法は、単語をさらに詳細に分割し、分割した単位ごとにテーブルを持つことでも可能である。例えば、「implementation」という単語は、文字列「im」、文字列「ple」、文字列「men」、文字列「tation」と単語を分割可能である。そして、各分割した要素ごとの発声に必要な時間を単語読み上げ時間長基準データ部1004内に格納しておけば、単語単位での単語読み上げ時間長基準データ部1004が存在しなくても単語の要素ごとに発声した場合に必要な時間を加算することができる。その結果、実際に単語単位で発声した際に必要な時間が求められる。
また、単語読み上げ時間長基準データ部1004内には単語ごとに発声した場合にかかる時間は保持せず、単語を分割した単位での発声にかかる時間を保持しておいても同様の効果が得られる。
なお、本実施の形態のように単語読み上げ時間長基準データ部1004内に単語読み上げ時間長を算出するためのデータベースを持つ以外に、言語の発声ルールを基に文字列より単語読み上げ時間長を算出するアルゴリズムを用いても同様の効果が得られる。
次に、図9を用いて制御部704の演算処理を詳細に説明する。本例では、図9において示した文字列バッファ2に格納されている提示時間情報901である文字列「12:00:03」と、消去時間情報902である文字列「12:00:06」と、格納文字列903である文字列「WEATHER IS FINE IN THE NORTHERN AREA」とが、制御部704において処理された場合として説明する。制御部704は基準音声合成長演算部703より読み上げ時間長信号を受け取ると文字列バッファ部702より提示時間情報901及び格納文字列903を読み出す。制御部704は演算対象のデータの提示時間情報901の文字列「12:00:03」と、消去時間情報902の文字列「12:00:06」と格納文字列903の文字列「WEATHER IS FINE IN THE NORTHERN AREA」とを処理する際に、まず基準音声合成長演算部703において演算して、文字列「WEATHER IS FINE IN THE NORTHERN AREA」を音声合成部706が基準速度で発声した場合に要する時間を求める。
これには、基準音声合成長演算部703が出力する読み上げ時間長信号を用いることができる。また、制御部704が、図11のテーブルを用いて演算して求めてもよい。その結果、単語のみの発声に10.5秒を要することがわかる。そして、単語間のスペース文字、計6個に対し、各0.5秒ずつ要するとすると追加で3秒必要であり、文字列「WEATHER IS FINE IN THE NORTHERN AREA」を音声合成部706が基準速度で発声した場合に要する時間は13.5秒と求められる。
次に、制御部704は、文字列バッファ2に格納されている提示時間情報901である文字列「12:00:03」と消去時間情報902である文字列「12:00:06」との時間の差分を求める。この場合、時間の差分の演算結果は3秒である。そして、制御部704は、文字列「WEATHER IS FINE IN THE NORTHERN AREA」を基準速度で発声した場合に要する時間である13.5秒を時間の差分の演算結果である3秒で発音を完了するために必要な読み上げ速度率を演算する。例えば、基準速度で発声する場合を100とした場合、以下の公式により読み上げ速度率を演算する。すなわち、「読み上げ速度率」=「基準速度で発声した場合に要する時間」÷「時間の差分」×100である。
本例では、上述した公式により、読み上げ速度率は、13.5÷3×100=450となる。制御部704は、この値(ここでは450)を読み上げ速度率を示す読み上げ速度率信号として音声合成部706に出力する。
音声合成部706は、制御部704より読み上げ速度率信号を受け取ると、文字列バッファ部702より文字列を読み出し、受け取った読み上げ速度率信号が示す読み上げ速度率で文字列を読み上げる。音声合成部706が音声合成を行う音声の発声速度は、制御部704から出力される読み上げ速度率が100の場合に基準音声合成長演算部703において演算される基準速度と同一である。また、制御部704から出力される読み上げ速度率に正比例して可変する。例えば制御部704から出力される読み上げ速度率が200の場合は、基準音声合成長演算部703において演算される基準速度の倍の速度で発声する。その結果、発声に要する時間は半分となる。また、制御部704から出力される読み上げ速度率が50の場合は、基準音声合成長演算部703において演算される基準速度の半分の速度で発声する。その結果、発声に要する時間は倍となる。
なお、本実施の形態では、制御部704は基準音声合成長演算部703において演算される基準速度を用いて、音声合成部706が音声合成を行う音声の発声速度を制御している。しかし、単純に発音する文字列の文字数や単語数により音声合成部706が音声合成を行う音声の発声速度を、制御部704が制御しても同様の効果が得られる。
すなわち、文字数での演算の場合、例えば、本例の文字列「WEATHER IS FINE IN THE NORTHERN AREA」であれば、スペース文字を含め36文字の文字列である。この文字数に基づいて、制御部704が例えば、読み上げ速度率を「文字数」×「10」という公式で演算してもよい。そして、制御部704がその算出結果の360を読み上げ速度率として音声合成部706に出力してもよい。制御部704は、文字列バッファ部702に記憶されている文字列の文字数に基づき、読み上げ速度率を演算してもよい。
また、単語数での演算の場合、例えば、本例の文字列「WEATHER IS FINE IN THE NORTHERN AREA」であれば、6単語の文字列である。この単語数に基づいて、制御部704が例えば、読み上げ速度率を「単語数」×「80」という公式で演算し、結果480を読み上げ速度率として音声合成部706に出力してもよい。このように、制御部704は、文字列バッファ部702に記憶されている文字列の単語数に基づき、読み上げ速度率を演算してもよい。
このように、本実施の形態の文字情報提示装置は、メモリとしての制御手段メモリ705に記憶されている文字列の時間情報は、文字情報入力部701より入力された文字列に付随する提示時間情報901と消去時間情報902であることを特徴とする。このようにすることで、文字列の音声合成に要する時間と文字列の提示時間情報、及び消去時間情報を用い、音声合成の速度を演算することにより、あらかじめ到来する文字列の頻度や文字数がわからなくとも、文字列の読み上げ速度率を最適な値に設定し聞き取りやすさを確保する文字情報提示装置を提供することが可能となる。
(実施の形態3)
図12は、本発明の実施の形態3における文字情報提示装置の構成を示すブロック図である。図12に示すように本実施の形態における文字情報提示装置は、文字情報入力部1201、文字列バッファ部1202、基準音声合成長演算部1203、制御部1204、文字列の時間情報を記憶するメモリとしての制御部メモリ1205、音声合成部1206、音声出力部1207を含む。本実施の形態における文字情報提示装置の文字情報入力部1201は、メモリとしての制御部メモリ1205が、さらに、所定の数の読み上げ速度率信号の履歴を記憶することが、実施の形態1におけると文字情報提示装置と異なる。そして、制御部1204は、基準音声合成長演算部1203より入力される読み上げ時間長信号、文字列バッファ部1202より読み出した読み上げ時間長信号に対応する文字列の時間情報、及びメモリに記憶された時間情報に基づき算出した読み上げ速度率信号と、メモリに記憶された所定の数の読み上げ速度率信号の履歴に基づき、読み上げ速度率信号を算出することを特徴とする。
次に、このように構成された本実施の形態における文字情報提示装置の動作について説明する。本実施の形態における文字情報提示装置に含まれる文字情報入力部1201、文字列バッファ部1202、基準音声合成長演算部1203、音声合成部1206、及び音声出力部1207の動作は、実施の形態1における文字情報提示装置に含まれる文字情報入力部101、文字列バッファ部102、基準音声合成長演算部103、音声合成部106、音声出力部107の動作と、それぞれ同様であるので説明を省略する。
制御部1204は、基準音声合成長演算部1203より入力される読み上げ時間長信号、文字列バッファ部1202より読み出した読み上げ時間長信号に対応する文字列の時間情報、及びメモリに記憶された時間情報に基づき算出した読み上げ速度読み上げ速度率信号と、メモリに記憶された所定の数の読み上げ速度読み上げ速度率信号の履歴に基づき、読み上げ速度読み上げ速度率信号を算出する。そして、メモリとしての制御部メモリ1205は、所定の数の読み上げ速度読み上げ速度率信号の履歴を記憶する。また、制御部1204は、演算結果に基づき読み上げ速度率信号を音声合成部1206に出力する。
次に、図13を用いて、文字列バッファ部1202に記憶されている時間情報や文字列のデータ構造体の一例を示す。図13は、本実施の形態における文字列バッファ部1202に記憶されている時間情報や文字列のデータ構造体の一例を示す模式図である。本例では、文字列バッファ部1202は、strbuffとstringFIFOと名づけたデータ構造体を用いて記述して、ソフトウエアにより構成している。本例では、文字列バッファ部1202は、文字列の表示開始時間または到来時間を、変数であるtimeに記憶する。また、文字列バッファ部1202は、最大5つまでの文字列を、変数であるstrに記憶する。そして、詳細な説明は後述するが、変数であるbuffに文字列を格納する。また、記憶されている文字列の最後のデータ位置を変数であるlaststrに記憶する。
本例では、文字列を記憶する変数であるstrには最大256文字まで格納可能としているが、それ以上であっても同様の効果が得られる。また、入力される文字列の長さにより確保する文字列長を可変させても、同様の効果が得られる。本例でのint64は64ビット整数型、charは8ビット文字型、intは32ビット整数型としているが、他のビット数及び他の型であっても同様の効果が得られる。なお、本実施例では、文字列バッファ部1202は、CPUやメモリなどのハードエウアの動作を規定するソフトウエアにより記述して構成している。ハードウエアのみでも実現可能であるが、ソフトウエアを用いることにより、より柔軟に各種の設定を変更可能であり、かつ低コストで実現できるなどの利点がある。
次に、図14を用いて、図13において示したデータ構造体に格納されているデータの一例を示す。文字列バッファ1,文字列バッファ2、文字列バッファ3、文字列バッファ4、及び文字列バッファ5は、図13のデータ構造体での変数であるbuff[0]、buff[1]、buff[2]、buff[3]及びbuff[4]に対応する。そして、各buff内には時間情報1401と格納文字列1402とが格納されている。例えば、文字列バッファ1に格納されている時間情報1401はstrfifo.buff[0].time、文字列バッファ1に格納されている格納文字列1402はstrfifo.buff[0].strとして示すことができる。
本実施の形態における時間情報1401は、一般的なコンピュータ言語で用いられる協定世界時(UTC)、1970年1月1日の0時(00:00:00)を基点とした経過秒数を格納することとする。図14では、時、分、及び秒のみ記載しているが、実際には、年、及び月も含めたデータを格納していることとする。なお、本実施の形態では他の方式で時間情報1401を格納していたとしても同様の効果が得られる。
図14に示している最終データ位置1403に格納されるデータは、現在有効なデータが格納されている文字列バッファ部1202の最終データの位置を示す。例えば、図14の状態では、文字列バッファ1、文字列バッファ2、文字列バッファ3に有効なデータが格納されおり、文字列バッファ4及び文字列バッファ5には空のデータまたは無効なデータが格納されているとしている。したがって、最終データ位置1403に格納されているデータは有効なデータの内の最終データである文字列バッファ3を示す。図14において、最終データ位置1403は、図13のデータ構造体例では、変数であるlaststrに対応する。文字列バッファ1から文字列バッファ5に格納されている時間情報1401は、格納文字列1402と関連付けられており、文字列の表示開始時間または到来時間を時間情報1401として文字列バッファ部1202が格納することとする。
次に、具体的な文字列バッファ部1202の動作について説明する。図14のデータ格納状態において示すように、各文字列バッファ1から文字列バッファ5は時間情報1401、および格納文字列1402が格納されている。そして、最終データ位置1403が、文字列バッファ3を示している。このように、本実施の形態における文字列バッファ部1202に格納されている時間情報1401、格納文字列1402、及び最終データ位置1403は、実施の形態1における図3に示した文字列バッファ部102に格納されている時間情報301、格納文字列302、及び最終データ位置303とそれぞれ同様である。そして、新しい文字列の入力されたときや1つの文字列バッファを削除するときの動作も同様である。したがって、詳細な説明は省略する。
なお、本実施の形態では文字列バッファは5つまであることとしているが、それ以上であっても、それ以下であっても、動的に格納個数を変化させても同様の効果が得られる。
以下では、図12を用いて、本実施の形態における文字情報提示装置の動作の詳細について説明する。図12に示すように文字列バッファ部1202は、基準音声合成長演算部1203、制御部1204、及び音声合成部1206からの要求に応じて、格納されている各データの内容を出力する。また、データの削除は音声合成部1206が文字列バッファ部1202よりデータを読み出した際、音声合成部1206よりデータ削除要求が文字列バッファ部1202に出されることに基づいて実行する。また、文字情報入力部1201が、文字列を文字列バッファ部1202に入力すると、文字列バッファ部1202は格納されているデータが更新されたことを示す更新通知信号を基準音声合成長演算部1203、制御部1204、及び音声合成部1206に通知する。
図12における基準音声合成長演算部1203は、文字列バッファ部1202内の文字列を音声合成部1206が基準速度で発声した場合にかかる時間を、算出する。図15は、基準音声合成長演算部1203の内部構成を示すブロック図である。基準音声合成長演算部1203は、基準音声合成長演算部用制御部1501、文字列一時格納部1502、読み上げ時間長加算部1503、単語読み上げ時間長基準データ部1504を含む。
次に、このように構成された基準音声合成長演算部1203の動作について説明する。本実施の形態における基準音声合成長演算部1203に含まれる基準音声合成長演算部用制御部1501、文字列一時格納部1502、読み上げ時間長加算部1503、及び単語読み上げ時間長基準データ部1504の動作は、実施の形態1における基準音声合成長演算部103に含まれる基準音声合成長演算部用制御部401、文字列一時格納部402、読み上げ時間長加算部403、及び単語読み上げ時間長基準データ部404の動作と、それぞれ同様であるので説明を省略する。
次に、図16を用いて、単語読み上げ時間長基準データ部1504内に格納されているデータの一例を示す。データの例として、単語1601(図16では、「word1601」と表す)の欄と、単語1601を基準速度で発声した場合にかかる時間である読み上げ時間長1602(図16では、「duration1602」と表す)の欄とを示している。本実施の形態における単語1601、及び読み上げ時間長1602についての処理は、実施の形態1における図5に示した単語501、及び読み上げ時間長502についての処理と同様であるので、詳細な説明は省略する。
次に、図17を用いて制御部メモリ1205に格納されている記憶文字列到着時間情報1701、読み上げ速度率履歴情報1702の説明及び制御部1204での演算処理の説明をする。図17に示すように、本実施の形態における文字情報提示装置に含まれるメモリとしての制御部メモリ1205は、さらに、所定の数の読み上げ速度率信号の履歴を記憶する。そして、制御部1204は、基準音声合成長演算部1203より入力される読み上げ時間長信号、文字列バッファ部1202より読み出した読み上げ時間長信号に対応する文字列の時間情報、及びメモリに記憶された時間情報に基づき算出した読み上げ速度率信号と、メモリに記憶された所定の数の読み上げ速度率信号の履歴に基づき、読み上げ速度率信号を算出することを特徴とする。
具体的には、制御部メモリ1205は、新たに記憶文字列到着時間情報1701、及び読み上げ速度率履歴情報1702が入力されると、図17において、記憶されている記憶文字列到着時間情報、及び読み上げ速度率履歴情報を下方向にシフトする。すなわち、時間情報5に記憶されている記憶文字列到着時間情報及び読み上げ速度率履歴情報は破棄される。そして、時間情報1に新しく入力された記憶文字列到着時間情報、及び読み上げ速度率履歴情報を記憶する。このように、過去5つの記憶文字列到着時間情報、及び読み上げ速度率履歴情報が記憶されている。すなわち、本実施の形態では、所定の数を一例として、5としている。ただし、所定の数は、必ずしも、5でなくともよい。それ以上であっても、それ以下であっても、動的に格納個数を変化させても同様の効果が得られる。
図17の例では、時間情報1の記憶文字列到着時間情報1701には記憶文字列到着時間情報である文字列「12:00:00」が格納されている。本例は、図14での文字列バッファ1に格納されていた時間情報1401である文字列「12:00:00」と格納文字列1402である文字列「NEXT IS WEATHER FORCAST」が制御部1204において処理された後の状態として説明する。制御部1204は、基準音声合成長演算部1203より読み上げ時間長信号を受け取ると、文字列バッファ部1202より時間情報1401及び格納文字列1402を読み出す。制御部1204は、演算対象のデータの時間情報1401である文字列「12:00:03」と格納文字列1402である文字列「WEATHER IS FINE IN THE NORTHERN AREA」を処理する際に、まず基準音声合成長演算部1203において演算して、文字列「WEATHER IS FINE IN THE NORTHERN AREA」を音声合成部1206が基準速度で発声した場合に要する時間を求める。
これには、基準音声合成長演算部1203が出力する読み上げ時間長信号を用いることができる。また、制御部1204が、図16のテーブルを用いて演算して求めてもよい。その結果、単語のみの発声に10.5秒を要することがわかる。そして、単語間のスペース文字、計6個に対し、各0.5秒ずつ要するとすると追加で3秒必要であり、文字列「WEATHER IS FINE IN THE NORTHERN AREA」を音声合成部1206が基準速度で発声した場合に要する時間は13.5秒と求められる。そして、制御部1204は制御部メモリ1205に記憶されている時間情報1の記憶文字列到着時間情報1701の文字列「12:00:00」を読み出し、演算対象のデータである時間情報1401の文字列「12:00:03」との時間の差分を求める。この場合、時間の差分の演算結果は3秒である。
次に、制御部1204は、文字列「WEATHER IS FINE IN THE NORTHERN AREA」を音声合成部1206が基準速度で発声した場合に要する時間である13.5秒を、時間の差分の演算結果である3秒で発音を完了するために必要な読み上げ速度率を演算する。例えば、基準速度で発声する場合を100とした場合、以下の公式により読み上げ速度率を演算する。すなわち、「読み上げ速度率」=「基準速度で発声した場合に要する時間」÷「時間の差分」×100である。
本例では、上述した公式により、読み上げ速度率は、13.5÷3×100=450となる。次に、制御部1204は演算した値、制御部メモリ1205格納されている5つの各読み上げ速度率履歴情報1702の和を求める。本例では450+(400+350+320+400+380)=2300である。そして、平均値を求めるために、この値を(1+5)で除算する。ここでは、小数点以下は切り捨てることとする。この演算結果として、2300÷6=383が求められる。そして、この演算結果を、制御部1204は読み上げ速度率として音声合成部1206に出力する。
なお、本実施の形態では、制御部1204が演算し、音声合成部1206に出力する読み上げ速度率を過去の履歴との平均値として演算した。しかし、例えば、1つ前の読み上げ速度率からあらかじめ定められた割合を上限、及び下限として変化させるようにしてもよい。その結果、制御部1204が音声合成部1206に出力する読み上げ速度率が急激に変化しないように制御を行うことができるので、本実施の形態と同様の効果が得られる。
音声合成部1206は、制御部1204より読み上げ速度率信号を受け取ると、文字列バッファ部1202より文字列を読み出し、受け取った読み上げ速度率信号が示す読み上げ速度率で文字列を読み上げる。音声合成部1206が音声合成を行った結果の音声の発声速度は、制御部1204から出力される読み上げ速度率が100の場合に基準音声合成長演算部1203において演算される基準速度と同一であり、また制御部1204から出力される読み上げ速度率に正比例して可変する。例えば、制御部1204から出力される読み上げ速度率が200の場合は、基準音声合成長演算部1203において演算される基準速度の倍の速度で発声する。その結果、発声に要する時間は半分となる。また、制御部1204から出力される読み上げ速度率が50の場合は、基準音声合成長演算部1203において演算される基準速度の半分の速度で発声する。その結果、発声に要する時間は倍となる。
なお、本実施の形態では、文字列バッファ部1202内の時間情報1401は、格納文字列1402と関連付けされている。したがって、文字列バッファ部1202は、文字情報入力部1201より文字列が文字列バッファ部1202に入力された時間を時間情報1401として格納する。しかし、文字情報入力部1201より文字列と共に時間情報が入力された場合、文字情報入力部1201より文字列が文字列バッファ部1202に入力された時間の代わりに、文字列と共に入力された時間情報を文字列バッファ部1202に格納することとしても同様の効果が得られる。例えば、テレビ放送で使用される字幕情報には画面上に表示する時刻を記した時間情報が文字列と共に送られてくる。この画面上に表示する時刻を文字列バッファ部1202内の時間情報1401として記憶し用いることにより、より字幕の音声合成に適した音声合成を行うことができる。
なお、本実施の形態では、制御部1204は基準音声合成長演算部1203において演算される基準速度を用いて、音声合成部1206が音声合成を行う音声の発声速度を、制御部1204が制御している。しかし、単純に発音する文字列の文字数や単語数により、音声合成部1206が音声合成を行う音声の発声速度を、制御部1204が制御しても同様の効果が得られる。
すなわち、文字数での演算の場合、例えば、本例の文字列「WEATHER IS FINE IN THE NORTHERN AREA」であれば、スペース文字を含め36文字の文字列である。この文字数に基づいて、制御部104が例えば、読み上げ速度率を「文字数」×「10」という公式で演算してもよい。そして、制御部1204がその算出結果の360を読み上げ速度率として音声合成部1206に出力してもよい。
また、単語数での演算の場合、例えば、本例の文字列「WEATHER IS FINE IN THE NORTHERN AREA」であれば、6単語の文字列である。この単語数に基づいて、制御部1204が例えば、読み上げ速度率を「単語数」×「80」という公式で演算してもよい。そして、制御部1204がその算出結果の480を読み上げ速度率として音声合成部1206に出力してもよい。
このように、本実施の形態の文字情報提示装置は、文字列の音声合成に要する時間と文字列が入力される時間間隔、または文字列の音声合成に要する時間と文字列と共に入力される時間情報の間隔を用いる。さらに、文字情報提示装置は、音声合成の速度の演算を過去の演算結果を用いて平均化し演算を行うことにより、あらかじめ到来する文字列の頻度や文字数がわからなくとも、文字列読み上げの速度を最適な値に設定し聞き取りやすさを確保し、かつ急激な文字列の読み上げ速度率の変化を抑えた文字情報提示装置を提供することが可能となる。
(実施の形態4)
図18は、本発明の実施の形態4における文字情報提示装置の構成を示すブロック図である。図18に示すように本実施の形態における文字情報提示装置は、文字情報入力部1801、文字列バッファ部1802、制御部1803、音声合成部1804、映像情報入力部1806、映像バッファ部1807、映像提示部1808、映像出力部1809、音声出力部1810を含む。本実施の形態が、実施の形態1と異なるのは、本実施の形態における文字情報提示装置は、映像情報入力部1806、映像バッファ部1807、映像提示部1808、映像出力部1809を、さらに備えていることである。また、図1に示した基準音声合成長演算部103と制御部メモリ105とを備えていない。そして、詳細は後述するが、制御部1803が、文字列バッファ部1802、音声合成部1804、映像バッファ部1807、及び映像提示部1808を制御することである。
次に、このように構成された本実施の形態における文字情報提示装置の動作について説明する。文字情報入力部1801は、文字列の入力を受け付ける。そして、文字情報入力部1801より入力された文字列は、文字列バッファ部1802に入力され、記憶される。文字列バッファ部1802は、制御部1803及び音声合成部1804からの要求により、文字列の出力を行う。新しい文字列が文字情報入力部1801より入力され、文字列バッファ部1802に記憶された場合は、文字列バッファ部1802は更新通知信号を制御部1803に出す。
音声合成部1804は、音声合成処理を行っていない状態であれば文字列バッファ部1802を監視する。そして、音声合成部1804は、音声合成をまだ行っていない文字列が記憶されていることを検知すると、文字列を文字列バッファ部1802より読み出し、音声合成を開始する。そして、音声合成部1804は、基準速度で音声合成して音声出力部1810に音声信号を出力する。また、音声合成部1804は、音声合成処理が完了すると、完了した文字列のデータを文字列バッファ部1802より削除するように文字列バッファ部1802に要求を出す。なお、基準速度は、例えば、アナウンサ等の発声する言葉の速度に代表される標準的な速度とする。
制御部1803は文字列バッファ部1802からの更新通知信号を受けると、音声合成部1804の状態を確認する。もし、音声合成部1804が音声合成処理を完了していなければ、制御部1803は映像提示部1808に映像の一時停止要求を出す。そして、映像バッファ部1807は映像情報入力部1806より入力される映像情報を一時的に蓄える。
映像提示部1808は例えば映像デコーダであり、映像バッファ部1807より映像信号を読み出し、映像出力部1809に出力する。なお、映像提示部1808は制御部1803より映像信号の一時停止要求を受けると、映像バッファ部1807からの映像情報の読み出しを停止し、映像信号の出力を静止する。また、制御部1803は映像提示部1808に一時停止要求を出した後に、音声合成部1804が音声合成処理を完了したことを検知すると、映像提示部1808に映像信号の再生を再開するように要求を出す。すなわち、音声合成部1804において、合成した音声信号の出力が完了していない場合、制御部1803の制御により映像提示部1808は、映像信号を静止状態で出力する。
次に、図19に文字列バッファ部1802に記憶されているデータの一例を示す。文字列バッファ1,文字列バッファ2、文字列バッファ3、文字列バッファ4、及び文字列バッファ5には、各256文字までの文字列を記憶可能とする。格納されている各文字列は格納文字列1901と呼ぶ。なお、格納可能な文字数は256以上であっても以下であっても、動的に格納可能な文字列の長さを変化させても本実施の形態では同様の効果が得られる。最終データ位置1902に格納されるデータは、現在有効なデータが格納されている文字列バッファ部1802の最終データの位置を示す。例えば、図19の状態では、文字列バッファ1、文字列バッファ2、文字列バッファ3に有効なデータが格納されおり、文字列バッファ4及び文字列バッファ5には空のデータまたは無効なデータが格納されているとしているため、最終データ位置1902に格納されているデータは文字列バッファ3を示している。
図19に示すデータ格納状態において、文字列「TOMORROW’S FORECAST IS SUNNY IN ALL THE AREA」が入力された場合、次の空き文字列バッファである文字列バッファ4の格納文字列1901に文字列「TOMORROW’S FORECAST IS SUNNY IN ALL THE AREA」が格納され、最終データ位置1902は文字列バッファ4を示す。
また、図19に示すデータ格納状態において、1つの文字列バッファを削除するように指示があった場合、文字列バッファ2に格納されているデータを文字列バッファ1に複製する。そして、文字列バッファ3に格納されているデータを文字列バッファ2に複製する。さらに、文字列バッファ4に格納されているデータを文字列バッファ3に複製する。また、文字列バッファ5に格納されているデータを文字列バッファ4に複製する。そして、最終データ位置1902を現在示している文字列バッファ部1802の図19での1つ上側の文字列バッファ、すなわち、図19のデータ格納状態では文字列バッファ2を示すように変更する。
上述したように、本実施の形態では、データ構造体におけるデータの削除は必ず文字列バッファ1より行うこととしている。そして、後続するデータは文字列バッファ2を文字列バッファ1に複製し、文字列バッファ3を文字列バッファ2に複製というように複製しながらシフトしていくこととしている。しかし、本データ構造体の要素に加え、開始データ位置を示す変数を追加してもよい。そして、その開始データ位置がデータの削除を行うデータを示すとしてもよい。すなわち、データ削除が行われると、開始データ位置が示す文字列バッファ位置を、例えば現在文字列バッファ1を示しているのであれば、文字列バッファ2を示すようにシフトしてもよい。さらにまた、開始データ位置が示す文字列バッファ位置を、現在文字列バッファ2を示しているのであれば、文字列バッファ3を示すようにシフトするようにしてもよい。このようにすることにより処理の高速化を達成するとともに同様の効果が得られる。なお、本実施の形態では文字列バッファは5つまであることとしているが、それ以上であっても、それ以下であっても、動的に格納個数を変化させても同様の効果が得られる。
なお、音声合成部1804が音声合成処理を完了していなければ、制御部1803は映像提示部1808に映像信号の出力の一時停止要求を出すかわりに、制御部1803は映像提示部1808に映像提示速度を可変させるように要求を出すことにより、視聴者の違和感を軽減した提示が可能となる。例えば、映像提示部1808は、制御部1803より映像提示速度を遅くするように要求を受けた場合、映像提示部1808は映像バッファ部1807からの映像情報の読み出し頻度を遅くし、映像出力部1809に出力する。また、映像提示部1808は制御部1803より映像提示速度を早くするように要求を受けた場合、映像提示部1808は映像バッファ部1807からの映像情報の読み出し頻度を早くし、映像出力部1809に出力する。すなわち、音声合成部1804において、合成した音声信号の出力が完了していない場合、制御部1803の制御により映像提示部1808は、完全に一時停止させてしまうのではなく、映像信号の提示速度を可変させて出力する。映像提示部1808において映像提示速度を可変させるように制御する方法は、例えば映像提示部1808がMPEG2デコーダである場合は、MPEG2デコーダ内のSTC(System Time Clock)のカウントアップスピードを可変させることにより可能である。
このように、本実施の形態における文字情報提示装置は、映像情報の入力を受け付ける映像情報入力部1806と、映像情報入力部1806に入力された映像情報を記憶する映像バッファ部1807と、映像バッファ部1807から映像情報を読み出し、デコードし、映像信号として出力する映像提示部1808とを備えている。また、文字列の入力を受け付ける文字情報入力部1801と、文字情報入力部1801に入力された文字列を記憶する文字列バッファ部1802と、文字列バッファ部1802から文字列を読み出し、所定の速度で音声合成し、音声信号として出力する音声合成部1804とを備えている。また、少なくとも映像提示部1808を制御する制御部1803を備えている。そして、文字情報提示装置は、入力される文字情報の提示処理が間に合わない場合、すなわち音声合成部1804において、合成した音声信号の出力が完了していない場合、制御部1803の制御により映像提示部1808は、映像信号を出力する速度を制御して映像信号を出力する。すなわち、入力される映像情報の提示を一時停止または提示速度を可変することにより、あらかじめ到来する文字列の頻度や文字数がわからなくとも、文字列の読み上げや聞き取りやすさを確保する文字情報提示装置を提供することが可能となる。
なお、本実施の形態における文字情報提示装置は、制御部1803の制御により、入力される映像情報の提示を一時停止または提示速度を可変することとした。しかし、図20に示すように音声情報の処理を実施の形態1乃至3で示したような構成とし、本実施の形態における映像情報の提示を制御する構成と組み合わせてもよい。そして、ユーザの設定により、文字情報提示装置における提示速度の変更を行う処理を、音声情報の処理あるいは映像情報の処理とで選択できるようにしてもよい。このようにすれば、音声情報あるいは映像情報のどちらか一方を送出側の意図に、限りなく忠実に再現したい場合に有効である。
図20は、本発明の実施の形態4における文字情報提示装置の他の例の構成を示すブロック図である。図に示すように、他の例における文字情報提示装置は、文字情報入力部1801、文字列バッファ部1802、音声合成部1804、映像情報入力部1806、映像バッファ部1807、映像提示部1808、映像出力部1809、音声出力部1810、基準音声合成長演算部1814、制御部1803、制御部メモリ1805、ユーザ入力部1820を含む。
すなわち、他の例における文字情報提示装置は、図18の構成に加えて、基準音声合成長演算部1814、制御部メモリ1805、ユーザ入力部1820をさらに備えている。文字情報入力部1801、文字列バッファ部1802、音声合成部1804、音声出力部1810、基準音声合成長演算部1814、制御部1803、制御部メモリ1805を用いた音声情報の提示速度の変更を行う処理は、既に述べた実施の形態と同様であり、詳細な説明は省略する。
また、文字情報入力部1801、文字列バッファ部1802、音声合成部1804、音声出力部1810、映像情報入力部1806、映像バッファ部1807、映像提示部1808、映像出力部1809、制御部1803を用いた映像情報の提示速度の変更を行う処理は、既に述べた本実施の形態と同様であり、詳細な説明は省略する。
したがって、他の例の文字情報提示装置における異なる部分の構成と動作について説明する。すなわち、他の例の文字情報提示装置は、映像情報の入力を受け付ける映像情報入力部1806と、映像情報入力部1806に入力された映像情報を記憶する映像バッファ部1807と、映像バッファ部1807から映像情報を読み出し、デコードし、映像信号として出力する映像提示部1808とをさらに備えている。そして、制御部1803は、少なくとも映像提示部1808を制御するとともに、選択信号を入力するユーザ入力部1820に接続されている。そして、選択信号が、映像情報の選択である場合、音声合成部1804において、所定の速度で発声した場合にかかる時間に基づいて合成した音声信号の出力が完了していない場合、制御部1803の制御により映像提示部1808は、映像信号を出力する速度を制御して映像信号を出力する。
また、選択信号が、音声情報の選択である場合、制御部1803の制御により映像提示部1808は、映像信号を出力する速度を制御して映像信号を通常の速度で出力するとともに、制御部1803の制御により音声合成は、読み上げ速度率信号に基づき文字列バッファ部1802より入力される文字列の音声合成をする。
次に、制御部1803の詳細な動作について説明する。制御部1803は、ユーザ入力部1820の出力に接続されている。ユーザの選択によりユーザ入力部1820には、文字情報提示装置において、映像信号を通常の速度で出力するか、または音声信号を基準速度で合成して出力するかを選択する選択信号が印加される。すなわち、選択信号には、ユーザの選択が、「音声情報の選択」あるいは「映像情報の選択」を示すデータが含まれる。これらのデータは、具体的には、例えば、論理信号としての「真」、「偽」を用いてもよい。また、選択信号には、2つの信号として区分できるように、例えば「音声情報の選択」を示すためには、0Vから1V、そして「映像情報の選択」を示すためには、4Vから5Vの信号を用いてもよい。なお、ユーザの選択は、例えば、リモコンやタッチパネルなどの操作を用いて行うことができる。
制御部1803は、ユーザ入力部1820から出力される選択信号を入力する。そして選択信号に、「映像情報の選択」を示すデータが含まれる場合、音声合成部1804において、所定の速度で発声した場合にかかる時間に基づいて合成した音声信号の出力が完了していない場合、制御部1803の制御により映像提示部1808は、映像信号を出力する速度を制御して映像信号を出力する。
また、選択信号に、「音声情報の選択」を示すデータが含まれる場合、制御部1803の制御により映像提示部1808は、映像信号を出力する速度を制御して映像信号を通常の速度で出力するとともに、制御部1803の制御により音声合成は、読み上げ速度率信号に基づき文字列バッファ部1802より入力される文字列の音声合成をする。
このような構成により、ユーザの選択に基づいて、文字列の読み上げ速度率を算出して、読み上げ速度率を可変して文字情報の提示を行うことができる。また、ユーザの選択に基づいて、入力される映像情報の提示を一時停止または提示速度を可変することができる。したがって、あらかじめ到来する文字列の頻度や文字数がわからなくとも、提示される映像情報や文字情報の内容に基づいてユーザの選択により、文字列の読み上げや聞き取りやすさを確保する文字情報提示装置を提供することが可能となる。