以下、演算処理装置等の実施形態について図面を参照して説明する。なお、実施の形態において同じ符号を付した構成要素は同様の動作を行うので、再度の説明を省略する場合がある。
(実施の形態1)
本実施の形態における演算処理装置10は、浮動小数点演算を行わずに、実数の逆数演算が可能な演算処理装置である。
図1は、本実施の形態における演算処理装置10のブロック図である。本演算処理装置10は、最小値格納部101、最高次数格納部102、受付部103、第一判断部104、第一正負逆転部105、自然数取得部106、第一乗算部107、整数取得部108、差演算部109、第二判断部110、第一演算部111、第二乗算部112、第二正負逆転部113、出力部114を具備する。
最小値格納部101は、数値(ここでは、処理対象の実数x)をスケーリングする最小の定数である最小値を格納している。最小値は、例えば、10である。また、最小値格納部101は、ハードディスクやROM等の不揮発性の記録媒体が好適であるが、RAM等の揮発性の記録媒体でも実現可能である。なお、例えば、本演算処理装置の演算処理をコンピュータが実行可能なプログラムで実現する場合、最小値は、プログラム中に埋め込まれていても良いことは言うまでもない。かかる場合も、最小値は、プログラムが格納されている記憶媒体に記憶されている、と言える。
最高次数格納部102は、演算する最高次数(n(nは自然数))を格納している。最高次数は、テイラー展開の最高次数である。テイラー展開の最高次数とは、上記の数式8、数式9におけるnである。最高次数格納部102は、ハードディスクやROM等の不揮発性の記録媒体が好適であるが、RAM等の揮発性の記録媒体でも実現可能である。なお、最高次数nは、記憶媒体に格納されている上記の数式8、数式9の情報の中に埋め込まれていても良いし、上記の数式8、数式9とは別途、格納されていても良い。また、例えば、本演算処理装置の演算処理をコンピュータが実行可能なプログラムで実現する場合、最高次数nは、プログラム中に埋め込まれていても良いことは言うまでもない。かかる場合も、最高次数nは、プログラムが格納されている記憶媒体に記憶されている、と言える。
受付部103は、実数xを受け付ける。ここで「受け付け」とは、ユーザからのキーボードなどの入力手段からの入力受け付けや、外部の装置からの通信手段を用いた受信や、本演算処理装置が行う演算処理が実行されるコンピュータシステム内の他のアプリケーションからの受け付け(関数の引数渡しや、メッセージ受信など)など、種々の態様による受け付けを含む。受付部103は、例えば、テンキーやキーボード等の入力手段のデバイスドライバーや、メニュー画面の制御ソフトウェア等で実現され得る。
第一判断部104は、受付部103が受け付けた実数xが負であるか否かを判断する。第一判断部104は、ハードウェア(判断回路)で実現しても良いし、ソフトウェアとMPU等で実現しても良い。
第一正負逆転部105は、第一判断部104が、実数xが負であると判断した場合に、実数xを(−x)とし、記憶媒体に格納する。なお、判断前の実数xを格納する記憶媒体の領域と、実数xを(−x)とした後の値を格納する記憶媒体の領域が、異なる領域でも良いし、同じ領域に(−x)を上書きしても良い。また、第一正負逆転部105は、第一判断部104が、実数xが正であると判断した場合に、実数xをそのまま予め決められた記憶媒体に格納しても良い。また、第一正負逆転部105が(−x)を書き込む記憶媒体は、図示されておらず、メインメモリなどの揮発性の記録媒体でも、ハードディスク等の不揮発性の記録媒体でも良い。第一正負逆転部105は、通常、MPUやメモリ等から実現され得る。第一正負逆転部105の処理手順は、通常、ソフトウェアで実現され、当該ソフトウェアはROM等の記録媒体に記録されている。但し、第一正負逆転部105は、ハードウェア(正負逆転回路)で実現しても良い。
自然数取得部106は、第一正負逆転部105が記憶媒体に格納した実数xを読み出し、かつ、最小値を最小値格納部101から読み出し、実数x、および最小値を用いて、「L・x>=最小値」となる自然数Lを取得する。なお、Lは、「L・x>=最小値」を満たす最小の自然数であることが好適である。例えば、自然数取得部106は、Lを1から1ずつインクリメントして行き、「L・x>=最小値」を満たす最小のLを取得しても良い。また、自然数取得部106は、Lを1から、「L←L+L」の更新を行いながら、「L・x>=最小値」を満たす最小のLを取得しても良い。かかる場合、Lは、「L・x>=最小値」を満たす最小の自然数であるとは限らないが、好適な数値となっている。その他、自然数取得部106が「L・x>=最小値」となる自然数Lを取得するアルゴリズムは問わない。また、通常、式「L・x>=最小値」は記憶媒体に格納されており、自然数取得部106は、かかる式の情報を読み出して、実数x、および最小値を代入して、上述のようにLを取得する。自然数取得部106は、通常、MPUやメモリ等から実現され得る。自然数取得部106の処理手順は、通常、ソフトウェアで実現され、当該ソフトウェアはROM等の記録媒体に記録されている。但し、ハードウェア(専用回路)で実現しても良い。
第一乗算部107は、実数x(ここでは、正の実数になっている)に対してLを乗算し、xを「L・x」とする。つまり、第一乗算部107は、まず、第一正負逆転部105が記憶媒体に格納した実数x(元のxが負の場合)、または受付部103が受け付けた実数x(元のxが正の場合)を、記憶媒体から読み出す。次に、第一乗算部107は、自然数取得部106が取得したLを記憶媒体から読み出す。そして、第一乗算部107は、乗算回路により「L・x」を演算し、その演算結果を記憶媒体に格納する。この記憶媒体に格納された値を以下の処理で「x」に置き換える。なお、「x」に置き換えるとは、元の実数xが格納されている記憶領域に、必ずしも「L・x」の演算結果を上書きする意味ではない。第一乗算部107は、「L・x」の演算結果を、元の実数xが格納されている記憶領域に上書きしても良いし、他の記憶領域に書き込んでも良い。第一乗算部107は、通常、MPUやメモリ等から実現され得る。第一乗算部107の処理手順は、通常、ソフトウェアで実現され、当該ソフトウェアはROM等の記録媒体に記録されている。但し、ハードウェア(乗算回路など)で実現しても良い。
整数取得部108は、実数xを超えない最大の整数x1を取得し、かつ、実数xを下回らない最小の整数x2を取得し、x1およびx2を記憶媒体に格納する。整数取得部108は、例えば、実数xの整数部分を取得する処理を行い、x1を取得し、かつ加算回路による演算を行い、「x1+1」を取得し、x2を得る。ただし、整数取得部108がx1およびx2を取得するアルゴリズムは問わない。整数取得部108は、通常、MPUやメモリ等から実現され得る。整数取得部108の処理手順は、通常、ソフトウェアで実現され、当該ソフトウェアはROM等の記録媒体に記録されている。但し、ハードウェア(例えば、実数から整数部分をフィルタリングする回路や加算回路を含む)で実現しても良い。
差演算部109は、「p1=x−x1」「p2=x2−x」により、p1、およびp2を算出し、かかるp1、およびp2を記憶媒体に格納する。差演算部109は、通常、MPUやメモリ等から実現され得る。差演算部109の処理手順は、通常、ソフトウェアで実現され、当該ソフトウェアはROM等の記録媒体に記録されている。但し、ハードウェア(減算回路)で実現しても良い。
第二判断部110は、「p1<=p2」であるか否かを判断し、判断結果を記憶媒体に格納する。例えば、第二判断部110は、「p1<=p2」である場合にフラグを「1」とし、第二判断部110は、「p1<=p2」でない場合にフラグを「0」とする。第二判断部110は、通常、MPUやメモリ等から実現され得る。第二判断部110の処理手順は、通常、ソフトウェアで実現され、当該ソフトウェアはROM等の記録媒体に記録されている。但し、ハードウェア(比較回路)で実現しても良い。
第一演算部111は、第二判断部110が「p1<=p2」であると判断した場合、最高次数格納部102の最高次数(n)を用いた数式15を演算し、yを取得し、かつ
第二判断部110が「p1<=p2」でないと判断した場合、第一演算部111は最高次数(n)を用いた数式16を演算し、yを取得する。
第一演算部111は、例えば、上記の数式15、16の式の情報を格納している。また、数式15、16において、例えば、最高次数(n)は予め決められている。そして、第二判断部110における判断結果を示すフラグの値を読み取り、当該フラグの値が「p1<=p2」であることを示す値(例えば、「1」)であれば、上記の数式15の情報を読み取り、数式15にp1、x1を代入し、yを取得する。そして、第一演算部111は、フラグの値が「p1<=p2」でないことを示す値(例えば、「0」)であれば、上記の数式16の情報を読み取り、数式16にp2、x2を代入し、yを取得する。第一演算部111は、例えば、乗算回路、除算回路、加算回路で実現され得る。また、第一演算部111は、取得したyを、通常、記憶媒体に格納する。また、第一演算部111は、例えば、MPUとやメモリ等、およびソフトウェアで実現され、当該ソフトウェアはROM等の記録媒体に記録されていても良い。
第二乗算部112は、第一演算部111が取得したyに対してLを乗算し、yを「L・y」とし、記憶媒体に格納する。つまり、第二乗算部112は、通常、記憶媒体に格納されているy、Lを読み出す。次に、予め格納されている式「L・y」を読み出し、y、Lを代入し、乗算し、その結果を記憶媒体に書き込む。第二乗算部112は、通常、MPUやメモリ等から実現され得る。第二乗算部112の処理手順は、通常、ソフトウェアで実現され、当該ソフトウェアはROM等の記録媒体に記録されている。但し、ハードウェア(乗算回路)で実現しても良い。
第二正負逆転部113は、第一判断部104が、実数xが負であると判断した場合に、第二乗算部112が取得したyの正負を逆転させた(−y)を取得し、当該(−y)をyとし、記憶媒体に格納する。第二正負逆転部113は、例えば、第一判断部104の判断結果を格納したフラグを読み出し、当該フラグの値から、受付部103が受け付けた実数xが負であると判断していたことを検知した場合、第二乗算部112が取得したyを読み出し、(−y)を取得し、当該(−y)をyとし、記憶媒体に格納する。なお、(−y)を取得した場合、必ずしも(y)が記憶されている領域に(−y)を上書きする必要はなく、他の記憶領域に(−y)を書き込んでも良い。第二正負逆転部113は、通常、MPUやメモリ等から実現され得る。第二正負逆転部113の処理手順は、通常、ソフトウェアで実現され、当該ソフトウェアはROM等の記録媒体に記録されている。但し、ハードウェア(正負逆転回路)で実現しても良い。なお、第二正負逆転部113は、第一正負逆転部105と、物理的に同じ回路で実現しても良い。
出力部114は、第二正負逆転部113が取得したy、または第二乗算部112が取得したyを出力する。ここで、出力とは、外部の装置への送信、他のアプリケーションへの引渡し、プログラムにおける関数の引数渡し、値yのメッセージ送信、ディスプレイへの表示、プリンタへの印字、音出力、記録媒体への蓄積等を含む概念である。また、出力とは、実施の形態2などで述べる音声処理装置にyを渡す処理でも良い。出力部114は、例えば、MPUやメモリ等から実現され得る。
なお、上記各構成要素が取得するデータ(yやp1など)が格納される記憶媒体は、揮発性の記憶媒体でも、不揮発性の記憶媒体でも良い、各構成要素が共有しても良いし、別の記憶媒体でも良い。
次に、演算処理装置の動作について図2のフローチャートを用いて説明する。
(ステップS201)演算処理装置10は、初期化処理を行う。初期化処理とは、例えば、フラグを0とする処理である。また、初期化処理は、最小値格納部101に最小値Aを設定する処理(書き込む処理)を含んでも良い。また、初期化処理は、最高次数格納部102に最高次数nを設定する処理を含んでも良い。なお、上記フラグとは、実数xの正負を示すフラグであり、例えば、実数xが正の場合は「0」、負の場合は「1」となるフラグである、とする。また、例えば、最小値Aや最高次数nは、ユーザがキーボード等の入力手段を用いて、入力しても良い。
(ステップS202)受付部103は、実数xを受け付けたか否かを判断する。実数xを受け付ければステップS203に行き、実数xを受け付けなければステップS202に戻る。
(ステップS203)第一判断部104は、受付部103が受け付けた実数xをメモリ上に一時格納する。
(ステップS204)第一判断部104は、受付部103が受け付けた実数xが負であるか否かを判断する。実数xが負であれば、フラグを「1」に書き換えて、ステップS205に行き、実数xが負でなければステップS206に行く。
(ステップS205)第一正負逆転部105は、ステップS204で、実数xが負であると判断した場合に、実数xを(−x)とし、メモリに格納する。
(ステップS206)自然数取得部106は、第一正負逆転部105がメモリに格納した実数xを読み出し、かつ、最小値Aを最小値格納部101から読み出し、実数x、および最小値Aを用いて、「L・x>=A」となる自然数Lを取得する。
(ステップS207)第一乗算部107は、xに対してL(ステップS206で取得)を乗算し、「L・x」を算出し、その値をxとし、メモリに格納する。
(ステップS208)整数取得部108は、実数xを超えない最大の整数x1を取得し、メモリ上に配置する。
(ステップS209)整数取得部108は、実数xを下回らない最小の整数x2を取得し、メモリ上に配置する。
(ステップS210)差演算部109は、式「p1=x−x1」「p2=x2−x」を読み出す。そして、差演算部109は、既にメモリ上に格納されているx、x1、x2を読み出し、上記読み出した式に代入し、演算「p1=x−x1」「p2=x2−x」を実行し、p1、p2を得て、当該p1、p2をメモリに格納する。
(ステップS211)第二判断部110は、メモリ上に格納されているp1、p2を読み出し、「p1<=p2」であるか否かを判断する。「p1<=p2」であればステップS212に行き、「p1<=p2」でなければステップS216に行く。
(ステップS212)第一演算部111は、上記数式15の情報を読み出す。
(ステップS213)第一演算部111は、p1、x1をメモリ上から読み出し、読み出した数式15にp1、x1を代入し、数式15を実行し、yを算出する。そして、第一演算部111は、算出したyをメモリ上に一時格納する。
(ステップS214)第一演算部111は、上記数式16の情報を読み出す。
(ステップS215)第一演算部111は、p2、x2をメモリ上から読み出し、読み出した数式16にp2、x2を代入し、数式16を実行し、yを算出する。そして、第一演算部111は、算出したyをメモリ上に一時格納する。
(ステップS216)第二乗算部112は、ステップS213、またはステップS215において、第一演算部111が取得したyに対してLを乗算し、yを「L・y」とし、メモリに格納する。
(ステップS217)第二正負逆転部113は、フラグを読み出し、フラグが「1」(xが負)であるか否かを判断する。フラグが「1」(xが負)であればステップS218に行き、フラグが「0」であればステップS219に行く。
(ステップS218)第二正負逆転部113は、第二乗算部112が取得したyの正負を逆転させた(−y)を取得し、当該(−y)をyとし、メモリに格納する。
(ステップS219)出力部114は、メモリ上のyを読み出し、yを出力する。処理を終了する。
なお、図2のフローチャートにおいて、最高次数nは、固定であったが、実数xの値に応じて動的に変更しても良い。つまり、下記のようにβの値に応じて、最高次数nを動的に変更しても良い。つまり、例えば、図示しない判断手段は、βを取得し、βが「0〜0.1未満」であれば「n=2」とし、βが「0.1以上0.2未満」であれば「n=3」とし、βが「0.2以上0.3未満」であれば「n=4」とし、βが「0.3以上0.4未満」であれば「n=5」とし、βが「0.4以上0.5以下」であれば「n=6」とし、そのnの値を最高次数格納部102に書き込む。かかる場合、最高次数nは、βの値(つまり、実数xの値)により動的に決められることとなる。なお、βの範囲に対応したnの値は、例えば、最高次数管理表に格納されている、とする。最高次数管理表は、「βの範囲」「最高次数n」の属性を有するレコードを1以上格納している。最高次数管理表は、演算処理装置10が予め記憶媒体に保持している。また、最高次数管理表は、図示しない最高次数管理表格納部に格納されている。
以下、本実施の形態における演算処理装置の動作の理論について説明する。
まず、実数xを0.5以上の正の実数とする。そして、実数xを超えない最大の整数をx1、かつ、実数xを下回らない最小の整数をx2とする。そして、「p1=x−x1」「p2=x2−x」とする。
すると、テイラー展開により、以下の数式17、数式18が成り立つ。なお、テイラー展開は公知の定理であるので、詳細な説明を省略する。
また、上記数式17、数式18において、「0<=β1,β2<=0.5」であり、数式17、数式18の収束は早い。したがって、数式17、数式18において、有限項で演算を打ち切っても、演算結果の近似は良好である。
ただし、xが0.5未満の場合、実数xを超えない最大の整数x1は「0」となり、演算ができない。
そこで、xがある定数(上記Aであり、例えば、「10」)以上になるようにスケーリングしてから数式17、または数式18を適用する。そして、最後にスケーリングの影響を解除し、元のスケールに戻す。また、xが負の場合、まずは、正にしてから上記の数式17、または数式18を適用し、最後に答えを負に戻す。
かかる理論で、実数xの逆数演算を行う装置が、上記の演算処理装置である。
以上、本実施の形態によれば、浮動小数点演算を行うことなく、自然数の逆数を算出することにより、実数の逆数が計算できる。つまり、本演算処理装置は、少ないメモリで、少ない計算負荷で、実数の逆数が計算できる。
なお、本実施の形態によれば、上述したように、βにより、演算する最高次数(n)を動的に変更することにより、さらに高速に、精度高く、実数の逆数が計算できる。
さらに、本実施の形態における処理は、ソフトウェアで実現しても良い。そして、このソフトウェアをソフトウェアダウンロード等により配布しても良い。また、このソフトウェアをCD−ROMなどの記録媒体に記録して流布しても良い。なお、このことは、本明細書における他の実施の形態においても該当する。なお、本実施の形態における情報処理装置を実現するソフトウェアは、以下のようなプログラムである。つまり、このプログラムは、コンピュータに、実数xを受け付ける受付ステップと、実数xが負であるか否かを判断し、判断結果を記憶媒体に格納する第一判断ステップと、前記第一判断ステップで、実数xが負であると判断した場合に、実数xを(−x)とし、記憶媒体に格納する第一正負逆転ステップと、格納されている最小値Aを用いて、「L・x>=最小値A」となる自然数Lを取得し、記憶媒体に格納する自然数取得ステップと、実数xに対してLを乗算し、xを「L・x」とする第一乗算ステップと、実数xを超えない最大の整数x1を取得し、かつ、実数xを下回らない最小の整数x2を取得し、記憶媒体に格納する整数取得ステップと、記憶媒体のx,x1,x2を読み出し、式「p1=x−x1」「p2=x2−x」にx,x1,x2を代入し、式を演算することにより、p1、およびp2を算出し、当該p1、およびp2を記憶媒体に格納する差演算ステップと、記憶媒体のp1,p2を読み出し、「p1<=p2」であるか否かを判断する第二判断ステップと、前記第二判断ステップで「p1<=p2」であると判断した場合、最高次数(n)を用いた上記の数式15を演算し、yを取得し、当該yを記憶媒体に格納し、前記第二判断ステップで「p1<=p2」でないと判断した場合、最高次数(n)を用いた数式16を演算し、yを取得し、当該yを記憶媒体に格納する第一演算ステップと、前記第一演算ステップで取得したyに対してLを乗算し、yを「L・y」とし、記憶媒体に格納する第二乗算ステップと、前記第一判断ステップで、実数xが負であると判断した場合に、前記第二乗算ステップで取得したyの正負を逆転させた(−y)を取得し、当該(−y)をyとし、記憶媒体に格納する第二正負逆転ステップと、前記第二正負逆転ステップで取得したy、または前記第二乗算ステップで取得したyを記憶媒体から読み出し、出力する出力ステップを実行させるためのプログラムであり、浮動小数点演算を行わずに、実数の逆数の演算を行うプログラム、である。
(実施の形態2)
本実施の形態において、実施の形態1で説明した演算処理装置を用いて、線形予測係数の出力を行う音声処理装置について説明する。
図3は、本実施の形態における音声処理装置11のブロック図である。
音声処理装置11は、演算処理装置10、音声受付部1101、音声離散時間信号取得部1102、短区間切出部1103、高域強調処理部1104、窓操作部1105、自己相関関数値算出部1106、第一逆数取得部1107、レビンソン・ダービン初期化処理部1108、レビンソン・ダービン演算部1109、線形予測係数出力部1110を具備する。
レビンソン・ダービン演算部1109は、第二逆数取得部11091を具備する。
音声受付部1101は、音声を受け付ける。音声の受け付けは、通常、マイクからの音声の受け付けである。ただし、マイクから受け付けた音声を、音声受付部1101は、図示しない外部装置から受信しても良い。音声は、例えば、ユーザが発声した音声である。音声受付部1101は、マイクのドライバーソフトまたは、マイクとそのドライバーソフトで実現され得る。
音声離散時間信号取得部1102は、音声受付部1101が受け付けた音声から音声離散時間信号を取得し、記憶媒体に格納する。音声から音声離散時間信号を取得する処理は公知技術であるので詳細な説明を省略する。音声離散時間信号取得部1102は、通常、ハードウェアで実現される。
短区間切出部1103は、音声離散時間信号取得部1102が記憶媒体に格納した音声離散時間信号を読み出し、当該音声離散時間信号から短区間部分を切り出した第一短区間離散時間信号(Sn(n=0,1,2,...,N−1))を得て、記憶媒体に格納する。音声離散時間信号から短区間部分を切り出す処理も公知技術であるので詳細な説明を省略する。短区間切出部1103は、通常、MPUやメモリ等から実現され得る。短区間切出部1103の処理手順は、通常、ソフトウェアで実現され、当該ソフトウェアはROM等の記録媒体に記録されている。但し、ハードウェア(専用回路)で実現しても良い。
高域強調処理部1104は、短区間切出部1103が取得した第一短区間離散時間信号(Sn)に対して高域強調処理を施し、第二短区間離散時間信号(Sn')を得て、記憶媒体に格納する。高域強調処理は公知技術であるので詳細な説明を省略する。第一短区間離散時間信号(Sn)に対して高域強調処理を施した信号が第二短区間離散時間信号(Sn')である。高域強調処理部1104は、通常、MPUやメモリ等から実現され得る。高域強調処理部1104の処理手順は、通常、ソフトウェアで実現され、当該ソフトウェアはROM等の記録媒体に記録されている。但し、ハードウェア(専用回路)で実現しても良い。
窓操作部1105は、第二短区間離散時間信号(Sn')に対して、予め決められた窓関数(Wn(n=0,1,2,...,N−1))を用いて、窓操作を行い、処理対象信号(xn)を得て、記憶媒体に格納する。窓関数は、ハミング窓、ハニング窓などがあり、どのような窓関数を用いるかは問わない。窓関数については公知技術であるので詳細な説明を省略する。窓操作部1105は、通常、MPUやメモリ等から実現され得る。窓操作部1105の処理手順は、通常、ソフトウェアで実現され、当該ソフトウェアはROM等の記録媒体に記録されている。但し、ハードウェア(専用回路)で実現しても良い。
自己相関関数値算出部1106は、窓操作部1105が取得した処理対象信号(xn)の各値を記憶媒体から読み出し、かつ、予め格納している数式19の情報を読み出し、当該数式19に処理対象信号(xn)の各値を代入し、予め保持しているPを記憶媒体から読み出し、「i=0」から「i=P」まで繰り返し実行し、「ro」「r1」・・・「rp」を取得する。つまり、自己相関関数値算出部1106は、自己相関関数値(ri(i=0,1,2,...,P))を取得し、当該取得した自己相関関数値(ri(i=0,1,2,...,P))を記憶媒体に格納する。自己相関関数値算出部1106は、通常、MPUやメモリ等から実現され得る。自己相関関数値算出部1106の処理手順は、通常、ソフトウェアで実現され、当該ソフトウェアはROM等の記録媒体に記録されている。但し、ハードウェア(専用回路)で実現しても良い。
第一逆数取得部1107は、実数である自己相関関数値(r0)を記憶媒体から読み出し、演算処理装置10に、読み出した自己相関関数値(r0)を与え、自己相関関数値(r0)の逆数(1/r0)を取得し、記憶媒体に格納する。第一逆数取得部1107が、演算処理装置10に自己相関関数値(r0)を与える処理は、演算処理装置10を実現する関数に引数として与えても良いし、メッセージ送信によっても良いし、演算処理装置10に通信手段により自己相関関数値(r0)を与えても良い。通信手段により自己相関関数値(r0)を与える場合、演算処理装置10は、音声処理装置11の外部に存在しても良い。第一逆数取得部1107は、通常、MPUやメモリ等から実現され得る。第一逆数取得部1107の処理手順は、通常、ソフトウェアで実現され、当該ソフトウェアはROM等の記録媒体に記録されている。但し、ハードウェア(専用回路)で実現しても良い。
レビンソン・ダービン初期化処理部1108は、記憶媒体に格納されている逆数(1/r0)と、自己相関関数値(ri(i=0,1,2,...,P))を読み出し、数式20に代入し、数式20を実行し、k1,J1,α1 (1)を得て、当該k1,J1,α1 (1)を記憶媒体に格納する。レビンソン・ダービン初期化処理部1108は、通常、MPUやメモリ等から実現され得る。レビンソン・ダービン初期化処理部1108の処理手順は、通常、ソフトウェアで実現され、当該ソフトウェアはROM等の記録媒体に記録されている。但し、ハードウェア(専用回路)で実現しても良い。
レビンソン・ダービン演算部1109は、記憶媒体からk1,J1,α1 (1)を読み出し、m=2からPまでの自然数を繰り返し代入し、数式21に従って線形予測係数(ai(i=0,1,2,...,P))を算出し、記憶媒体に格納する。なお、レビンソン・ダービン演算部1109は、Pを自己相関関数値算出部1106から取得し、当該Pの値を用いて、m=2からPの分だけループし、線形予測係数(ai(i=0,1,2,...,P))を算出する。また、数式21の情報も、レビンソン・ダービン演算部1109は予め格納しており、かかる数式の情報を読み出す。レビンソン・ダービン演算部1109は、通常、MPUやメモリ等から実現され得る。レビンソン・ダービン演算部1109の処理手順は、通常、ソフトウェアで実現され、当該ソフトウェアはROM等の記録媒体に記録されている。但し、ハードウェア(専用回路)で実現しても良い。
第二逆数取得部11091は、kmを算出する場合に、実数Jm−1を演算処理装置10に与え、実数Jm−1の逆数(1/Jm−1)を取得し、記憶媒体に格納する。第二逆数取得部11091は、通常、MPUやメモリ等から実現され得る。実数Jm−1を演算処理装置10に与える方法は、第一逆数取得部1107の処理と同様で良い。第二逆数取得部11091の処理手順は、通常、ソフトウェアで実現され、当該ソフトウェアはROM等の記録媒体に記録されている。但し、ハードウェア(専用回路)で実現しても良い。
線形予測係数出力部1110は、レビンソン・ダービン演算部1109が取得した線形予測係数(ai(i=0,1,2,...,P))を、記憶媒体から読み出し、出力する。ここで出力とは、他のアプリケーションへの値の引渡し(関数引渡しやメッセージ送信など)、ディスプレイへの表示、プリンタへの印字、音出力、外部の装置への送信、記録媒体への蓄積等を含む概念である。
次に、音声処理装置11の動作について図4のフローチャートを用いて説明する。
(ステップS401)音声受付部1101は、音声を受け付けたか否かを判断する。音声を受け付ければステップS402に行き、音声を受け付けなければステップS401に戻る。
(ステップS402)音声離散時間信号取得部1102は、ステップS401で受け付けた音声から音声離散時間信号を取得し、記憶媒体に格納する。
(ステップS403)短区間切出部1103は、ステップS402で記憶媒体に格納した音声離散時間信号を読み出し、当該音声離散時間信号から短区間部分を切り出した第一短区間離散時間信号(Sn(n=0,1,2,...,N−1))を得て、記憶媒体に格納する。
(ステップS404)高域強調処理部1104は、ステップS403で取得した第一短区間離散時間信号(Sn)に対して高域強調処理を施し、第二短区間離散時間信号(Sn')を得て、記憶媒体に格納する。
(ステップS405)窓操作部1105は、ステップS404で取得した第二短区間離散時間信号(Sn')を記憶媒体から読み込み、当該第二短区間離散時間信号(Sn')に対して、予め決められた窓関数(Wn(n=0,1,2,...,N−1))を用いて、窓操作を行い、処理対象信号(xn)を得て、記憶媒体に格納する。
(ステップS406)自己相関関数値算出部1106は、窓操作部1105が取得した処理対象信号(xn)の各値を記憶媒体から読み出し、かつ、予め格納している数式19の情報を読み出す。
(ステップS407)自己相関関数値算出部1106は、数式19に処理対象信号(xn)の各値を代入し、数式19を実行し、自己相関関数値(ri(i=0,1,2,...,P))を取得し、当該取得した自己相関関数値(ri(i=0,1,2,...,P))を記憶媒体に格納する。
(ステップS408)第一逆数取得部1107は、実数である自己相関関数値(r0)を記憶媒体から読み出し、演算処理装置10に、読み出した自己相関関数値(r0)を与える。
(ステップS409)演算処理装置10は、第一逆数取得部1107から自己相関関数値(r0)を受け付け、逆数(1/r0)を取得する。演算処理装置10の処理は、実施の形態1で説明したので、ここでの説明は省略する。
(ステップS410)第一逆数取得部1107は、演算処理装置10がステップS409で算出した逆数(1/r0)を取得する。
(ステップS411)レビンソン・ダービン初期化処理部1108は、記憶媒体に格納されている逆数(1/r0)と、自己相関関数値(ri(i=0,1,2,...,P))を読み出し、上記の数式20に代入し、数式20を実行し、k1,J1,α1 (1)を得て、当該k1,J1,α1 (1)を記憶媒体に格納する。
(ステップS412)レビンソン・ダービン演算部1109は、記憶媒体からk1,J1,α1 (1)を読み出し、当該読み出したk1,J1,α1 (1)を用いて、m=2からPまでの自然数を繰り返し数式21に代入し、数式21に従って線形予測係数(ai(i=0,1,2,...,P))を算出し、記憶媒体に格納する。なお、第二逆数取得部11091は、kmを算出する場合に、実数Jm−1を演算処理装置10に与え、実数Jm−1の逆数(1/Jm−1)を取得し、記憶媒体に格納する。
(ステップS413)線形予測係数出力部1110は、ステップS412で取得した線形予測係数(ai(i=0,1,2,...,P))を記憶媒体から読み出し、出力する。処理を終了する。
以下、本実施の形態における音声処理装置の動作の理論について説明する。本音声処理装置は、実施の形態1で説明した演算処理装置を用いた一適用例である。つまり、本音声処理装置は、実数の逆数演算を自然数の逆数演算に基づいて行なう方法を適用して音声処理を行う装置である。そして、音声処理の内容が、線形予測分析法(LPC法)である。
線形予測分析法(LPC法)とは、以下の処理を言う。つまり、音声離散時間信号から短区間部分を切り出した短区間離散時間信号をSn(n=0,1,2,...,N−1)とする。ここで、nは離散時間インデクスである。そして、まず、短区間離散時間信号Snに対して高域強調処理を施す。この処理は,例えば数式22を用いて、行なわれる。
ただし、「S0 '=S0」である。
また、μは1に近い0以上1未満の実数であり、例えば、「μ=0.98」などである。次に、数23の窓関数wnを使って、窓操作を行なう。
数式23において、Nは、フレーム長である。窓関数wnとしては、例えば、数式24のハミング窓であるが、他の窓関数でも良い。
そして、線形予測分析は、xnに対して行なう。まず、数式25の自己相関関数値(ri(i=0,1,2,...,P))を計算する。
ここで、PはLPC次数を表わす。そして、数式26の連立一次方程式を解くことにより,線形予測係数(ai(i=0,1,2,...,P))を得る。
この連立一次方程式を解く計算方法は、好適には、レビンソン・ダービンの算法である。
本実施の形態における音声処理装置は、レビンソン・ダービンの算法により線形予測係数を算出する装置である。また、本音声処理装置における実数の逆数の演算について、実施の形態1で述べた演算処理装置を用いる。そのことにより、浮動小数点演算を行うことなく実数の逆数が計算できる。つまり、本演算処理装置は、少ないメモリで、少ない計算負荷で、実数の逆数が計算できる。
以上、本実施の形態によれば、少ないメモリで、少ない計算負荷で、実数の逆数が計算できる。その結果、少ないメモリで、少ない計算負荷で、音声処理を行い、線形予測係数(ai(i=0,1,2,...,P))を得ることができる。なお、この線形予測係数を導く過程で算出されるk(PARCOR係数)は、音声通信などに利用され得る。従って、本音声処理装置は、電話などの音声通信装置に利用され得る。なお、線形予測係数を導く過程で算出されるkのみを出力する場合、本演算処理装置は、線形予測係数を出力する必要がなく、kのみを出力すれば良い。
なお、本実施の形態によれば、音声処理装置11は、演算処理装置10を具備していた。しかし、音声処理装置11は演算処理装置10を具備せず、演算処理装置10に対して実数の逆数計算を指示し、その演算結果を受け取る構成でも良い。かかる場合、音声処理装置11は、音声受付部1101、音声離散時間信号取得部1102、短区間切出部1103、高域強調処理部1104、窓操作部1105、自己相関関数値算出部1106、第一逆数取得部1107、レビンソン・ダービン初期化処理部1108、レビンソン・ダービン演算部1109、線形予測係数出力部1110を具備する。そして、第一逆数取得部1107と第二逆数取得部11091は、演算処理装置10に実数の逆数演算を指示し、演算結果を受け取る。
さらに、本実施の形態における音声処理装置を実現するソフトウェアは、以下のようなプログラムである。つまり、このプログラムは、コンピュータに、マイクからの音声を受け付ける音声受付ステップと、前記音声受付ステップで受け付けた音声から音声離散時間信号を取得し、記憶媒体に格納する音声離散時間信号取得ステップと、前記音声離散時間信号から短区間部分を切り出した第一短区間離散時間信号(Sn(n=0,1,2,...,N−1))を得て、記憶媒体に格納する短区間切出ステップと、前記第一短区間離散時間信号(Sn)に対して高域強調処理を施し、第二短区間離散時間信号(Sn')を得て、記憶媒体に格納する高域強調処理ステップと、前記第二短区間離散時間信号(Sn')に対して、予め決められた窓関数(Wn(n=0,1,2,...,N−1))を用いて、窓操作を行い、処理対象信号(xn)を得て、記憶媒体に格納する窓操作ステップと、前記処理対象信号(xn)の各値を、数式19に代入し、自己相関関数値(ri(i=0,1,2,...,P))を算出し、記憶媒体に格納する自己相関関数値算出ステップと、実数である自己相関関数値(r0)を前記記憶媒体から読み出し、演算処理装置10に前記自己相関関数値(r0)を与え、自己相関関数値(r0)の逆数(1/r0)を取得し、記憶媒体に格納する第一逆数取得ステップと、前記逆数(1/r0)と、前記自己相関関数値(ri(i=0,1,2,...,P))を読み出し、数式20に代入し、k1,J1,α1 (1)を得て、記憶媒体に格納するレビンソン・ダービン初期化処理ステップと、前記k1,J1,α1 (1)を読み出し、m=2からPまでの自然数を繰り返し代入し、数式21に従って線形予測係数(ai(i=0,1,2,...,P))を算出し、記憶媒体に格納するレビンソン・ダービン演算ステップと、前記レビンソン・ダービン演算ステップで取得した線形予測係数(ai(i=0,1,2,...,P))を出力する線形予測係数出力ステップを実行させるプログラムであって、前記レビンソン・ダービン演算ステップは、前記kmを算出する場合に、実数Jm−1を前記演算処理装置10に与え、実数Jm−1の逆数(1/Jm−1)を取得し、記憶媒体に格納する第二逆数取得ステップを具備するプログラム、である。
(実施の形態3)
本実施の形態において、実施の形態2で説明した音声処理装置を用いて、特徴ベクトルの抽出を行う音声処理装置について説明する。
図5は、本実施の形態における音声処理装置21のブロック図である。
音声処理装置21は、演算処理装置10、音声受付部1101、音声離散時間信号取得部1102、短区間切出部1103、高域強調処理部1104、窓操作部1105、自己相関関数値算出部1106、第一逆数取得部1107、レビンソン・ダービン初期化処理部1108、レビンソン・ダービン演算部1109、線形予測係数出力部1110、予測残差取得部2101、第一特徴値算出部2102、線形予測係数取得部2103、第二特徴値算出部2104、第三特徴値算出部2105、第四特徴値算出部2106、特徴ベクトル出力部2107を具備する。
予測残差取得部2101は、レビンソン・ダービン演算部1109が線形予測係数を算出する過程で取得した予測残差(JP)を取得し、記憶媒体に格納する。予測残差取得部2101は、通常、MPUやメモリ等から実現され得る。予測残差取得部2101の処理手順は、通常、ソフトウェアで実現され、当該ソフトウェアはROM等の記録媒体に記録されている。但し、ハードウェア(専用回路)で実現しても良い。
第一特徴値算出部2102は、予測残差(JP)の自然対数「logJP」を算出し、特徴値(c0)として記憶媒体に格納する。第一特徴値算出部2102は、ハードウェア(自然対数算出回路)または、CPUやメモリ等から実現され得る。つまり、第一特徴値算出部2102の処理手順は、通常、ソフトウェアで実現されても良い。
線形予測係数取得部2103は、線形予測係数出力部1110が出力した線形予測係数(ai(i=0,1,2,...,P))を取得する。この取得は、関数の引数渡しや、メッセージの受信や、通信手段を用いた受信などである。線形予測係数取得部2103は、通常、MPUやメモリ等から実現され得る。線形予測係数取得部2103の処理手順は、通常、ソフトウェアで実現され、当該ソフトウェアはROM等の記録媒体に記録されている。但し、ハードウェア(専用回路)で実現しても良い。
第二特徴値算出部2104は、線形予測係数取得部2103が取得した線形予測係数(a1)の正負を逆転させ、特徴値(c1)を得て、記憶媒体に格納する。第二特徴値算出部2104は、例えば、ハードウェア(正負逆転回路)や、ソフトウェアとMPUやメモリ等から実現され得る。
第三特徴値算出部2105は、線形予測係数取得部2103が取得した線形予測係数(a1からaP)を読み出し、当該線形予測係数(a1からaP)を用いて、以下の数式27により、特徴値(c2からcP)を算出し、記憶媒体に格納する。第三特徴値算出部2105は、通常、数式27の情報を格納しており、読み出した線形予測係数(a1からaP)を数式27に代入し、数式27を実行し、特徴値(c2からcP)を得る。第三特徴値算出部2105は、通常、MPUやメモリ等から実現され得る。第三特徴値算出部2105の処理手順は、通常、ソフトウェアで実現され、当該ソフトウェアはROM等の記録媒体に記録されている。但し、ハードウェア(四則演算を行う回路などを含む専用回路)で実現しても良い。
第四特徴値算出部2106は、線形予測係数取得部2103が取得した線形予測係数(a1からaP)を用いて、数式28により、特徴値(cP+1以降のcn)を算出し、記憶媒体に格納する。第四特徴値算出部2106は、通常、数式28の情報を格納しており、読み出した線形予測係数(a1からaP)を数式28に代入し、数式28を実行し、特徴値(cP+1以降のcn)を得る。なお、第四特徴値算出部2106は、予め決められた最終の特徴値(cx)まで、算出する。第四特徴値算出部2106は、通常、MPUやメモリ等から実現され得る。第四特徴値算出部2106の処理手順は、通常、ソフトウェアで実現され、当該ソフトウェアはROM等の記録媒体に記録されている。但し、ハードウェア(四則演算を行う回路などを含む専用回路)で実現しても良い。
特徴ベクトル出力部2107は、第一特徴値算出部2102、第二特徴値算出部2104、第三特徴値算出部2105、および第四特徴値算出部2106が得た特徴値(cn(n=0,1,2,・・・,w))を出力する。ここで出力とは、他のアプリケーションへの値の引渡し(関数引渡しやメッセージ送信など)、ディスプレイへの表示、プリンタへの印字、音出力、外部の装置への送信、記録媒体への蓄積等を含む概念である。
次に、音声処理装置21の動作について図6のフローチャートを用いて説明する。なお、図6のフローチャートにおいて、図4のステップS401からステップS413の処理を含む。
(ステップS601)予測残差取得部2101は、レビンソン・ダービン演算部1109が線形予測係数を算出する過程で取得した予測残差(JP)を取得し、記憶媒体に格納する。
(ステップS602)第一特徴値算出部2102は、ステップS601で取得した予測残差(JP)を読み出し、当該予測残差(JP)の自然対数「logJP」を算出し、特徴値(c0)として記憶媒体に格納する。
(ステップS603)線形予測係数取得部2103は、ステップS413で線形予測係数出力部1110が出力した線形予測係数(ai(i=0,1,2,...,P))を取得し、記憶媒体に格納する。
(ステップS604)第二特徴値算出部2104は、線形予測係数取得部2103が取得した線形予測係数(a1)を記憶媒体から読み出し、線形予測係数(a1)の正負を逆転させ、特徴値(c1)を得て、特徴値(c1)を記憶媒体に格納する。
(ステップS605)第三特徴値算出部2105は、予め格納されている数式27の情報を読み取る。そして、n=2からn=Pまで、順に数式27に代入し、cnを算出し、主メモリ等の記憶媒体に一時格納する。なお、第三特徴値算出部2105は、cnを算出する際に、線形予測係数(a1からaP)のうち必要な係数を記憶媒体から読み出す。第三特徴値算出部2105は、例えば、算出したcnをメモリ上の配列に書き込む。
(ステップS606)第四特徴値算出部2106は、予め格納されている数式28の情報を読み取る。そして、n=P+1からn=xまで、順に数式28に代入し、cnを算出し、主メモリ等の記憶媒体に一時格納する。
(ステップS607)特徴ベクトル出力部2107は、ステップS602、ステップS604、ステップS605、およびステップS606で得た特徴値(cn(n=0,1,2,・・・,w))から、特徴ベクトルを構成する。なお、ステップS602、ステップS604、ステップS605、およびステップS606において、例えば、特徴ベクトルを格納する配列に、各特徴値を書き込んでいた場合など、本ステップは省略され得る。
(ステップS608)特徴ベクトル出力部2107は、ステップS607で構成した特徴ベクトルを出力する。処理を終了する。
以下、本実施の形態における音声処理装置の動作の理論について説明する。本音声処理装置は、実施の形態1で説明した演算処理装置を用いた一適用例である。つまり、本音声処理装置は、実数の逆数演算を自然数の逆数演算に基づいて行なう方法を適用して音声処理を行う装置である。そして、音声処理の内容が、LPCケプストラム係数(cn(n=0,1,2,...))を出力する処理である。このLPCケプストラム係数は、実施の形態4で述べる発音評定処理や、音声認識処理などの音声処理に広く利用され得る。
以下、LPCケプストラム係数(cn(n=0,1,2,...))を算出する処理について説明する。まず、線形予測分析で得られる線形予測係数(ai(i=0,1,2,...,P))から処理対象信号(xn(n=0,1,2,...,N−1))のパワースペクトルの概形:X〜(f)が、以下の数式29により算出される。なお、数式29において、「X〜(f)」の「〜」は、Xの上部に位置しているが、同様に、パワースペクトルの概形である。
ここでFsは、サンプリング周波数である。LPCケプストラム係数cn(c=0,1,2,...,N−1)は、パワースペクトルの概形の対数を逆フーリエ変換して得られるものであり、数式30の関係がある。
ただし、対数は自然対数(底がeの対数)である。cn(n=0,1,2,...)は、線形予測係数(ai(i=0,1,2,...,P))を用いて、以下の数式31の1.から4.の式により、再帰的アルゴリズムで求めるのが望ましい。
本実施の形態における音声処理装置21は、上記の数式31をコンピュータにより実行させ、音声処理を行う装置である。また、本音声処理装置21における実数の逆数の演算について、実施の形態1で述べた演算処理装置を用いる。そのことにより、浮動小数点演算を行うことなく実数の逆数が計算できる。つまり、本演算処理装置は、少ないメモリで、少ない計算負荷で、実数の逆数が計算できる。
以上、本実施の形態によれば、少ないメモリで、少ない計算負荷で、実数の逆数が計算できる。その結果、少ないメモリで、少ない計算負荷で、音声処理を行い、LPCケプストラム係数(cn(n=0,1,2,...))を得ることができる。なお、このLPCケプストラム係数(cn(n=0,1,2,...))は、特徴ベクトルとも言い、発音評定処理や音声認識処理など、広く音声処理に利用され得る。
なお、本実施の形態における音声処理装置を実現するソフトウェアは、以下のようなプログラムである。つまり、このプログラムは、コンピュータに、マイクからの音声を受け付ける音声受付ステップと、前記音声受付ステップで受け付けた音声から音声離散時間信号を取得し、記憶媒体に格納する音声離散時間信号取得ステップと、前記音声離散時間信号から短区間部分を切り出した第一短区間離散時間信号(Sn(n=0,1,2,...,N−1))を得て、記憶媒体に格納する短区間切出ステップと、前記第一短区間離散時間信号(Sn)に対して高域強調処理を施し、第二短区間離散時間信号(Sn')を得て、記憶媒体に格納する高域強調処理ステップと、前記第二短区間離散時間信号(Sn')に対して、予め決められた窓関数(Wn(n=0,1,2,...,N−1))を用いて、窓操作を行い、処理対象信号(xn)を得て、記憶媒体に格納する窓操作ステップと、前記処理対象信号(xn)の各値を、数式19に代入し、自己相関関数値(ri(i=0,1,2,...,P))を算出し、記憶媒体に格納する自己相関関数値算出ステップと、実数である自己相関関数値(r0)を前記記憶媒体から読み出し、演算処理装置10に前記自己相関関数値(r0)を与え、自己相関関数値(r0)の逆数(1/r0)を取得し、記憶媒体に格納する第一逆数取得ステップと、前記逆数(1/r0)と、前記自己相関関数値(ri(i=0,1,2,...,P))を読み出し、数式20に代入し、k1,J1,α1 (1)を得て、記憶媒体に格納するレビンソン・ダービン初期化処理ステップと、前記k1,J1,α1 (1)を読み出し、m=2からPまでの自然数を繰り返し代入し、数式21に従って線形予測係数(ai(i=0,1,2,...,P))を算出し、記憶媒体に格納するレビンソン・ダービン演算ステップと、前記レビンソン・ダービン演算ステップで取得した線形予測係数(ai(i=0,1,2,...,P))を出力する線形予測係数出力ステップと、前記レビンソン・ダービン演算ステップで取得した予測残差(JP)を取得する予測残差取得ステップと、前記予測残差(JP)の自然対数「logJP」を算出し、特徴値(c0)として記憶媒体に格納する第一特徴値算出ステップと、前記線形予測係数出力ステップで出力した線形予測係数(ai(i=0,1,2,...,P))を取得する線形予測係数取得ステップと、前記線形予測係数取得ステップで取得した線形予測係数(a1)の正負を逆転させ、特徴値(c1)を得て、記憶媒体に格納する第二特徴値算出ステップと、前記線形予測係数取得ステップで取得した線形予測係数(a1からaP)を用いて、数式27により、特徴値(c2からCP)を算出し、記憶媒体に格納する第三特徴値算出ステップと、前記線形予測係数取得ステップで取得した線形予測係数(a1からaP)を用いて、数式28により、特徴値(cP+1以降のcn)を算出し、記憶媒体に格納する第四特徴値算出ステップと、前記第一特徴値算出ステップ、前記第二特徴値算出ステップ、前記第三特徴値算出ステップ、および前記第四特徴値算出ステップで得た特徴値(cn(n=0,1,2,・・・,w))を出力する特徴ベクトル出力ステップを実行させるためのプログラム、である。
(実施の形態4)
本実施の形態において、実施の形態3で述べた音声処理装置21が取得した特徴ベクトルを用いて、発音評定を行う発音評定装置について説明する。本発音評定装置は、比較対象の音声と入力音声の類似度の評定を精度高く、かつ高速にできる発音評定装置である。本発音評定装置が算出する事後確率を、t-p−DAPと呼ぶ。
図7は、本実施の形態における発音評定装置のブロック図である。本発音評定装置は、入力受付部701、教師データ格納部702、音声処理装置21、評定部703、出力部704を具備する。評定部703は、最適状態決定手段7031、発音区間フレーム音韻確率値取得手段7032、評定値算出手段7033を具備する。
入力受付部701は、発音評定装置の動作開始を指示する動作開始指示や、入力した音声の評定結果の出力態様の変更を指示する出力態様変更指示や、処理を終了する終了指示などの入力を受け付ける。かかる指示等の入力手段は、テンキーやキーボードやマウスやメニュー画面によるもの等、何でも良い。入力受付部701は、テンキーやキーボード等の入力手段のデバイスドライバーや、メニュー画面の制御ソフトウェア等で実現され得る。
教師データ格納部702は、比較される対象の音声に関するデータであり、1以上の音韻毎のデータである教師データを1以上格納している。教師データは、音韻毎の隠れマルコフモデル(HMM)を連結したHMMに基づくデータであることが好適である。また、教師データは、入力される音声を構成する音素に対応するHMMを、入力順序に従って連結されているHMMに基づくデータであることが好適である。ただし、教師データは、必ずしも、音韻毎のHMMを連結したHMMに基づくデータである必要はない。教師データは、全音素のHMMの、単なる集合であっても良い。また、教師データは、必ずしもHMMに基づくデータである必要はない。教師データは、単一ガウス分布モデルや、確率モデル(GMM:ガウシャンミクスチャモデル)や、統計モデルなど、他のモデルに基づくデータでも良い。HMMに基づくデータは、例えば、フレーム毎に、状態識別子と遷移確率の情報を有する。また、HMMに基づくデータは、例えば、複数の学習対象言語を母国語として話す外国人が発声した2以上のデータから学習した(推定した)モデルでも良い。教師データ格納部702は、ハードディスクやROMなどの不揮発性の記録媒体が好適であるが、RAMなどの揮発性の記録媒体でも実現可能である。
評定部703は、教師データ格納部702の教師データと、音声処理装置21が取得した1以上のフレームのフレームごとの特徴ベクトル(特徴ベクトル系列)を用いて、音声受付部1101が受け付けた音声の評定を行う。評定方法の具体例は、後述する。評定部703は、通常、MPUやメモリ等から実現され得る。評定部703の処理手順は、通常、ソフトウェアで実現され、当該ソフトウェアはROM等の記録媒体に記録されている。但し、ハードウェア(専用回路)で実現しても良い。
評定部703を構成している最適状態決定手段7031は、1以上のフレームごとの特徴ベクトル系列のうちの少なくとも一の特徴ベクトル系列に対する最適状態を決定する。最適状態決定手段7031は、例えば、全音韻HMMから、比較される対象(学習対象)の単語や文章などの音声を構成する1以上の音素に対応するHMMを取得し、当該取得した1以上のHMMを、音素の順序で連結したデータ(比較される対象の音声に関するデータであり、音韻毎の隠れマルコフモデルを連結したHMMに基づくデータ)を構成する。そして、最適状態決定手段7031は、構成した当該データ、および取得した特徴ベクトル系列を構成する各特徴ベクトルotに基づいて、所定のフレームの最適状態(特徴ベクトルotに対する最適状態)を決定する。なお、最適状態を決定するアルゴリズムは、例えば、Viterbiアルゴリズムである。また、教師データは、上述の比較される対象の音声に関するデータであり、音韻毎の隠れマルコフモデルを連結したHMMに基づくデータと考えても良いし、連結される前のデータであり、全音韻HMMのデータと考えても良い。
発音区間フレーム音韻確率値取得手段7032は、最適状態決定手段7031が決定した各フレームの最適状態を有する音韻全体の状態における1以上の確率値を、発音区間毎に取得する。
評定値算出手段7033は、発音区間フレーム音韻確率値取得手段7032が取得した1以上の発音区間毎の1以上の確率値をパラメータとして音声の評定値を算出する。評定値算出手段7033は、例えば、最適状態決定手段7031が決定した各フレームの最適状態を有する音韻全体の状態における1以上の確率値の総和を、フレーム毎に得て、当該フレーム毎の確率値の総和に基づいて、発音区間毎の確率値の総和の時間平均値を1以上得て、当該1以上の時間平均値をパラメータとして音声の評定値を算出する。
最適状態決定手段7031、発音区間フレーム音韻確率値取得手段7032、および評定値算出手段7033は、通常、MPUやメモリ等から実現され得る。最適状態決定手段7031等の処理手順は、通常、ソフトウェアで実現され、当該ソフトウェアはROM等の記録媒体に記録されている。但し、ハードウェア(専用回路)で実現しても良い。
出力部704は、評定部703の評定結果を出力する。出力部704の出力態様は、種々考えられる。出力とは、ディスプレイへの表示、プリンタへの印字、音出力、外部の装置への送信、記録媒体への蓄積等を含む概念である。出力部704は、例えば、評定部703の評定結果を視覚的に表示する。出力部704は、例えば、フレーム単位、または/および音素・単語単位、または/および発声全体の評定結果を視覚的に表示する。出力部704は、ディスプレイやスピーカー等の出力デバイスを含むと考えても含まないと考えても良い。出力部704は、出力デバイスのドライバーソフトまたは、出力デバイスのドライバーソフトと出力デバイス等で実現され得る。
次に、発音評定装置の動作について図8のフローチャートを用いて説明する。
(ステップS801)入力受付部701は、発音評定装置の動作開始を指示する動作開始指示を受け付けたか否かを判断する。動作開始指示を受け付ければステップS802に行き、動作開始指示を受け付けなければステップS820に飛ぶ。
(ステップS802)音声処理装置21の音声受付部1101は、音声の入力を受け付けたか否かを判断する。音声の入力を受け付ければステップS803に行き、音声の入力を受け付けなければステップS819に飛ぶ。
(ステップS803)音声処理装置21は、ステップS802で受け付けた音声のデータを図示しないバッファに一時格納する。
(ステップS804)音声処理装置21は、バッファに一時格納した音声データをフレームに区分し、フレームごとに特徴ベクトルを取得し、記憶媒体に特徴ベクトル系列(2以上のフレームの特徴ベクトル)を格納する。音声処理装置21が行うフレーム分割の処理は、例えば、評定部703がフレーム音声データを取り出す際の前処理であり、入力された音声のデータを、すべてのフレームに一度に分割するとは限らない。また、音声処理装置21が特徴ベクトルを取得する処理は、実施の形態3で説明した処理である。
(ステップS805)評定部703は、全フレームの特徴ベクトルである特徴ベクトル系列を、記憶媒体から読み出す。特徴ベクトルは、例えば、実施の形態3で説明した音声処理装置が取得したLPCケプストラム係数であり、その静的パラメータ、デルタパラメータおよびデルタデルタパラメータをそれぞれ12次元、さらに正規化されたパワーとデルタパワーおよびデルタデルタパワー(39次元)を有する。ただし、特徴ベクトルは、上記に限らない。なお、静的パラメータ、デルタパラメータおよびデルタデルタパラメータ等を取得する処理は公知技術であるので詳細な説明を省略する。
(ステップS806)最適状態決定手段7031は、全フレームの最適状態を決定する。最適状態決定手段7031が最適状態を決定するアルゴリズムは、例えば、Viterbiアルゴリズムによる。Viterbiアルゴリズムは、公知のアルゴリズムであるので、詳細な説明は省略する。
(ステップS807)発音区間フレーム音韻確率値取得手段7032は、全フレームの全状態の前向き尤度と後向き尤度を算出する。そして、全フレーム、全状態の確率値を得る。具体的には、発音区間フレーム音韻確率値取得手段7032は、例えば、各特徴ベクトルが対象の状態から生成された事後確率を算出する。この事後確率は、HMMの最尤推定におけるBaum−Welchアルゴリズムの中で現れる占有度数に対応する。Baum−Welchアルゴリズムは、公知のアルゴリズムであるので、説明は省略する。
(ステップS808)発音区間フレーム音韻確率値取得手段7032は、全フレームの最適状態確率値を算出する。
(ステップS809)発音区間フレーム音韻確率値取得手段7032は、jに1を代入する。
(ステップS810)発音区間フレーム音韻確率値取得手段7032は、次の評定対象の発音区間である、j番目の発音区間が存在するか否かを判断する。j番目の発音区間が存在すればステップS811に行き、j番目の発音区間が存在しなければステップS802に行く。
(ステップS811)発音区間フレーム音韻確率値取得手段7032は、カウンタkに1を代入する。
(ステップS812)発音区間フレーム音韻確率値取得手段7032は、k番目のフレームが、j番目の発音区間に存在するか否かを判断する。k番目のフレームが存在すればステップS813に行き、k番目のフレームが存在しなければステップS816に飛ぶ。
(ステップS813)発音区間フレーム音韻確率値取得手段7032は、k番目のフレームの最適状態を含む音韻の全ての確率値を取得する。
(ステップS814)評定値算出手段7033は、ステップS813で取得した1以上の確率値をパラメータとして、1フレームの音声の評定値を算出する。
(ステップS815)発音区間フレーム音韻確率値取得手段7032は、kを1、インクメントする。ステップS812に戻る。
(ステップS816)評定値算出手段7033は、j番目の発音区間の評定値を算出する。評定値算出手段7033は、例えば、最適状態決定手段7031が決定した各フレームの最適状態を有する音韻全体の状態における1以上の確率値の総和を、フレーム毎に得て、当該フレーム毎の確率値の総和に基づいて、発音区間の確率値の総和の時間平均値を、当該発音区間の音声の評定値として算出する。
(ステップS817)出力部704は、ステップS816で算出した評定値を出力する。出力部704は、ステップS814における評定結果(ここでは、音声の評定値)を、設定されている出力モードに従って、出力する。出力モードとは、評定値を数値で画面に表示するモード、評定値の遷移をグラフで画面に表示するモード、評定値を音声で出力するモード、評定値が所定の数値より低い場合に警告を示す情報を表示するモードなど、何でも良い。なお、ここでの出力モードは、ステップS821で設定されるモードである。
(ステップS818)発音区間フレーム音韻確率値取得手段7032は、jを1、インクメントし、ステップS810に戻る。
(ステップS819)音声受付部1101は、タイムアウトか否かを判断する。つまり、音声受付部1101は、所定の時間以上、音声の入力を受け付けなかったか否かを判断する。タイムアウトであればステップS801に戻り、タイムアウトでなければステップS802に戻る。
(ステップS820)入力受付部701は、出力態様変更指示を受け付けたか否かを判断する。出力態様変更指示を受け付ければステップS821に行き、出力態様変更指示を受け付なければステップS822に飛ぶ。出力態様変更指示は、出力モードを有する情報である。
(ステップS821)出力部704は、ステップS820で受け付けた出力態様変更指示が有する出力モードを示す情報を書き込み、出力モードを設定する。ステップS201に戻る。
(ステップS822)入力受付部701は、終了指示を受け付けたか否かを判断する。終了指示を受け付ければ処理を終了し、終了指示を受け付なければステップS801に戻る。
なお、図8のフローチャートにおいて、本発音評定装置は、出力モードの設定機能を有しなくても良い。
以下、本実施の形態における発音評定装置の具体的な動作について説明する。本具体例において、発音評定装置が語学学習に利用される場合について説明する。
まず、本発音評定装置において、図示しない手段により、ネイティブ発音の音声データベースからネイティブ発音の音韻HMMを学習しておく。ここで、音韻の種類数をLとし、l番目の音韻に対するHMMをλlとする。なお、かかる学習の処理については、公知技術であるので、詳細な説明は省略する。
そして、学習したL種類の音韻HMMから、学習対象の単語や文章などの音声を構成する1以上の音素に対応するHMMを取得し、当該取得した1以上のHMMを、音素の順序で連結した教師データを構成する。そして、当該教師データを教師データ格納部702に保持しておく。ここでは、例えば、比較される対象の音声は、単語「right」の音声である。
次に、学習者が、語学学習の開始の指示である動作開始指示を入力する。かかる指示は、例えば、マウスで所定のボタンを押下することによりなされる。
次に、学習者は、学習対象の音声「right」を発音する。そして、音声処理装置21の音声受付部1101は、学習者が発音した音声の入力を受け付ける。
次に、音声処理装置21は、音声受付部1101が受け付けた音声を、短時間フレームに区分する。なお、フレームの間隔は、予め決められている、とする。
そして、音声処理装置21は、区分した音声データを、スペクトル分析し、実施の形態3で説明した処理と、デルタパラメータ、デルタデルタパラメータ、パワー、デルタパワー、デルタデルタパワーを算出する処理により、特徴ベクトル系列「O=o1,o2,・・・,oT」を算出する。なお、Tは、系列長である。ここで、特徴ベクトル系列は、各フレームの特徴ベクトルの集合である。また、スペクトル分析において、ケプストラム平均除去を施すことは好適である。
次に、発音区間フレーム音韻確率値取得手段7032は、各フレームの各状態の事後確率(確率値)を算出する。つまり、発音区間フレーム音韻確率値取得手段7032は、下記の数式32の情報を記憶媒体から読み出し、実行する。
なお、数式32において、「αt(j)」[βt(j)]は、全部のHMMを用いて、forward−backwardアルゴリズムにより算出される。forward−backwardアルゴリズムは、公知のアルゴリズムであるので、詳細な説明を省略する。また、「αt(j)」は前向き尤度、[βt(j)]は後向き尤度である。
また、数式32において、Nは、全HMMにわたる状態の総数を示す。
次に、最適状態決定手段7031は、取得した特徴ベクトル系列を構成する各特徴ベクトルotに基づいて、所定のフレームの最適状態(特徴ベクトルotに対する最適状態)を決定する。最適状態決定手段7031が最適状態を決定するアルゴリズムは、例えば、Viterbiアルゴリズムによる。かかる場合、最適状態決定手段7031は、上記で連結したHMMを用いて最適状態を決定する。つまり、最適状態決定手段7031は、最適状態系列を得る。なお、各フレームの各状態の事後確率(確率値)の算出と、最適状態の決定の順序は問わない。
次に、発音区間フレーム音韻確率値取得手段7032は、発音区間ごとに、当該発音区間に含まれる各フレームの最適状態(qt *)を含む音韻の全ての確率値を取得する。そして、評定値算出手段7033は、各フレームの最適状態を含む音韻の全ての確率値の総和を、フレーム毎に算出する。具体的には、評定値算出手段7033は、数式33により評定値を算出する。
なお、数式33において、P(i)は、i番目の状態を有しているHMMの持つ全状態の集合を示す。
そして、評定値算出手段7033は、各フレームの最適状態を含む音韻の全ての確率値の総和を、フレーム毎に算出する。そして、評定値算出手段7033は、フレーム毎に算出された確率値の総和を、発音区間毎に時間平均し、発音区間毎の評定値を算出する。また、数式34において、Τ(qt *)は、状態qt *を含むHMMが含まれる評定対象の発音区間である。|Τ(qt *)|は、Τ(qt *)の区間長である。また、τは、発音区間Τ(qt *)内のある時刻を示す。そして、数式34の分子は、Τ(qt *)内において、時刻τのにおけるp−DAP(τ)の総和をとったものである。数式34において、t−p−DAPは、最適状態を含む音韻の中の全状態の確率値を発音区間で評価して、算出される評定値である。
そして、出力部704は、算出した発音区間ごと(ここでは、音素毎)の評定値を、順次出力する。かかる出力例は、図9である。
以上、本実施の形態によれば、ユーザが入力した発音を、教師データに対して、如何に似ているかを示す類似度(評定値)を、少ないメモリで、少ない計算負荷で算出し、出力できる。それは、少ないメモリで、少ない計算負荷で、実数の逆数が計算できるためである。
なお、本実施の形態によれば、発音評定をt−p−DAPという事後確率を用いて行ったが、発音評定のアルゴリズムは問わない。例えば、特許文献2に記載されているDAP、t−DAP、p−DAPなどの他の評価方法により、発音評定を行っても良い。
さらに、本実施の形態における発音評定装置を実現するソフトウェアは、以下のようなプログラムである。つまり、このプログラムは、コンピュータに、比較される対象の音声に関するデータであり、1以上の音韻毎のデータである教師データを1以上格納しており、音声処理装置21に、音声を受け付け、当該音声をフレーム毎の音声データに区分し、当該区分されたフレーム毎の音声データである特徴値(cn(n=0,1,2,・・・,w))を取得させ、前記教師データと前記特徴値を用いて、音声処理装置21が受け付けた音声の評定を行う評定ステップと、前記評定ステップにおける評定結果を出力する出力ステップを実行させるためのプログラム、である。
また、上記プログラムにおいて、前記教師データは、音韻毎の隠れマルコフモデル(HMM)を連結したHMMに基づくデータであり、前記評定ステップは、前記1以上のフレーム音声データの最適状態を決定する最適状態決定サブステップと、前記最適状態決定サブステップで決定した各フレームの最適状態を有する音韻全体の状態における1以上の確率値を、発音区間毎に取得する発音区間フレーム音韻確率値取得サブステップと、前記発音区間フレーム音韻確率値取得サブステップで取得した1以上の発音区間毎の1以上の確率値をパラメータとして音声の評定値を算出する評定値算出サブステップを具備するプログラム、である。
また、上記各実施の形態において、各処理(各機能)は、単一の装置(システム)によって集中処理されることによって実現されてもよく、あるいは、複数の装置によって分散処理されることによって実現されてもよい。
また、図10は、本明細書で述べたプログラムを実行して、上述した種々の実施の形態の演算処理装置や音声処理装置を実現するコンピュータの外観を示す。上述の実施の形態は、コンピュータハードウェア及びその上で実行されるコンピュータプログラムで実現され得る。図10は、このコンピュータシステム340の概観図であり、図11は、コンピュータシステム340のブロック図である。
図10において、コンピュータシステム340は、FD(Flexible Disk)ドライブ、CD−ROM(Compact Disk Read Only Memory)ドライブを含むコンピュータ341と、キーボード342と、マウス343と、モニタ344と、マイク345とを含む。
図11において、コンピュータ341は、FDドライブ3411、CD−ROMドライブ3412に加えて、CPU(Central Processing Unit)3413と、CD−ROMドライブ3412及びFDドライブ3411に接続されたバス3414と、ブートアッププログラム等のプログラムを記憶するためのROM(Read−Only Memory)3415と、CPU3413に接続され、アプリケーションプログラムの命令を一時的に記憶するとともに一時記憶空間を提供するためのRAM(Random Access Memory)3416と、アプリケーションプログラム、システムプログラム、及びデータを記憶するためのハードディスク3417とを含む。ここでは、図示しないが、コンピュータ341は、さらに、LANへの接続を提供するネットワークカードを含んでも良い。
コンピュータシステム340に、上述した実施の形態の演算処理装置や音声処理装置の機能を実行させるプログラムは、CD−ROM3501、またはFD3502に記憶されて、CD−ROMドライブ3412またはFDドライブ3411に挿入され、さらにハードディスク3417に転送されても良い。これに代えて、プログラムは、図示しないネットワークを介してコンピュータ341に送信され、ハードディスク3417に記憶されても良い。プログラムは実行の際にRAM3416にロードされる。プログラムは、CD−ROM3501、FD3502またはネットワークから直接、ロードされても良い。
プログラムは、コンピュータ341に、上述した実施の形態の情報処理装置の機能を実行させるオペレーティングシステム(OS)、またはサードパーティープログラム等は、必ずしも含まなくても良い。プログラムは、制御された態様で適切な機能(モジュール)を呼び出し、所望の結果が得られるようにする命令の部分のみを含んでいれば良い。コンピュータシステム340がどのように動作するかは周知であり、詳細な説明は省略する。
また、上記プログラムを実行するコンピュータは、単数であってもよく、複数であってもよい。すなわち、集中処理を行ってもよく、あるいは分散処理を行ってもよい。
また、上記各実施の形態において、一の装置に存在する2以上の通信手段(情報送信部など)は、物理的に一の媒体で実現されても良いことは言うまでもない。
本発明は、以上の実施の形態に限定されることなく、種々の変更が可能であり、それらも本発明の範囲内に包含されるものであることは言うまでもない。