(57)【特許請求の範囲】
【請求項１】
１つのファイルで構成され、複数のフレームからなる音声データ全体について、フレーム毎にその有音区間と無音区間とを判定する音声判定手段と、
前記音声判定手段で判定された有音区間について、フレーム毎に各有音区間の平均フレームエネルギーを計算する平均フレームエネルギー計算手段と、
前記平均フレームエネルギー計算手段により計算された各有音区間の平均フレームエネルギーの、全有音区間での全フレームに関する平均値に基づいて各有音区間の音声レベルを調整するための音声レベル調整ゲインを計算する音声レベル調整ゲイン計算手段と、
前記音声レベル調整ゲイン計算手段により計算された各有音区間における音声レベル調整ゲインに基づいて、音声レベルを調整する音声レベル調整手段と、を具備することを特徴とする音声処理装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、音声処理装置に関する。
【０００２】
【従来の技術】
音声録音再生装置等の音声処理装置には、通常、ボリューム手段が設けられており、使用者はそのボリューム手段を操作することにより所望の音量で音声を聞くことができる。
【０００３】
しかし、音声はダイナミックレンジが広く、同じボリュームレベルであっても音量が小さい場合も大きい場合もあり、そのような音量の変動が原因で聞きづらい場合には、使用者がそのつどボリュームを調整する必要があった。特に、対談の録音のように、録音装置と発言者との距離が発言者によって異なる場合にあっては、録音装置から近い位置にいる発言者の音声だけが大きく聞こえて、録音装置から遠い位置にいる発言者の声は小さくて聞き取りにくいという場合がある。
【０００４】
特開平９−２３２８９２号公報はこのような問題を克服すべく、入力された直前の音声のレベルに基づいて音量を調節する音量制御装置を開示している。
【０００５】
【発明が解決しようとする課題】
ところで音量は重要な情報量のひとつであり、頻繁にその音量が変更されると自然さが失われ、かえって音質を低下させることになりかねない。音量の調節は自然さを保ったまま行われることが望ましく、このためには、処理すべき音声の全体との関係において音量を調整することが必要である。
【０００６】
しかしながら、上記した特開平９−２３２８９２号公報では、直前の音声のレベルのみに基づいて音量を調節するので、音量が一定に保持されるという効果は有するが、かえって音質を低下させてしまう場合があった。
【０００７】
本発明はこのような課題に着目してなされたものであり、聞く人に応じて音量をより適切な大きさに自動的に調節することができる音声処理装置を提供することにある。
【０００８】
【課題を解決するための手段】
上記の目的を達成するために、本発明の第１の態様に係る音声処理装置は、１つのファイルで構成され、複数のフレームからなる音声データ全体について、フレーム毎にその有音区間と無音区間とを判定する音声判定手段と、前記音声判定手段で判定された有音区間について、フレーム毎に各有音区間の平均フレームエネルギーを計算する平均フレームエネルギー計算手段と、前記平均フレームエネルギー計算手段により計算された各有音区間の平均フレームエネルギーの、全有音区間での全フレームに関する平均値に基づいて各有音区間の音声レベルを調整するための音声レベル調整ゲインを計算する音声レベル調整ゲイン計算手段と、前記音声レベル調整ゲイン計算手段により計算された各有音区間における音声レベル調整ゲインに基づいて、音声レベルを調整する音声レベル調整手段と、を具備する。
【００１１】
【発明の実施の形態】
以下、図面を参照して本発明の実施形態を詳細に説明する。
【００１２】
図１（Ａ）は本実施形態に係る音声処理の一形態を説明するための図である。図１（Ａ）において、音声録音装置としてのディジタルレコーダ１０によって録音された音声データは当該ディジタルレコーダ１０に着脱自在に装着されたミニチュアカード１１に記憶される。ミニチュアカード１１はディジタルレコーダ１０から取り外されてＰＣカードアダプタ１２に装着した状態で、パーソナルコンピュータ１３に装填される。パーソナルコンピュータ１３には音声再生、情報表示などの処理を行なう制御プログラム１４がインストールされている。
【００１３】
図１（Ｂ）は、パーソナルコンピュータ１３の制御部の構成を示す図であり、本実施形態に係る音声処理を行なうために各種の機能を備えている。すなわち、音声判定部３０Ａは処理すべき音声データ全体についてその有音区間と無音区間とを判定する。平均フレームエネルギー計算部３０Ｂは音声判定部３０Ａで判定された有音区間について、各有音区間の平均フレームエネルギーを計算する。音声レベル調整ゲイン計算部３０Ｃは平均フレームエネルギー計算部３０Ｂにより計算された各有音区間の平均フレームエネルギーに基づいて、各有音区間の音声レベルを調整するための音声レベル調整ゲインを計算する。音声レベル調整部３０Ｂは音声レベル調整ゲイン計算部３０Ｃにより計算された各有音区間における音声レベル調整ゲインに基づいて、音声レベルを調整する。
【００１４】
図２は音声データのデータ構造を示す図である。図２において、音声データは、１のファイルとして構成されており、ファイルヘッダ領域２０−１とフレームデータ領域２０−２とからなる。ファイルヘッダ領域２０−１には例えば、記録された日時や録音時間長等の情報が記録されている。また、フレームデータ領域２０−２は複数のフレーム（フレーム１，２，３，…ｎ）から構成され、各フレームは、フレームヘッダ領域２０−３と音声データ領域２０−４とからなる。
【００１５】
ここでパーソナルコンピュータ１３内に取り込まれた音声データは、再生に先だって、本実施形態に係る音声レベルの調整が行われる。以下、フローチャートを参照して説明する。
【００１６】
図３は、本実施形態に係る音声レベルの調整処理の概要を示すフローチャートである。本調整処理はここではパーソナルコンピュータ１３の制御部で行われる。
【００１７】
図３において、まず処理対象の音声データについて、有音／無音区間判定処理のためのしきい値計算処理を行い（ステップＳ１）、そのしきい値に基づいて有音／無音区間判定処理を行う（ステップＳ２）。続いて、ステップＳ２において判定された各有音区間における平均フレームエネルギーを計算し（ステップＳ３）、求めた各有音区間の平均フレームエネルギーに基づいて、各有音区間における各サンプルの音声レベル調整ゲインを計算する（ステップＳ４）。この音声レベル調整ゲインは各有音区間の平均フレームエネルギーの、全有音区間での平均値に基づいて計算される。そしてこの計算された各有音区間における各サンプルの有音レベル調整ゲインを、各サンプルに乗じて音声レベルを調整する（ステップＳ５）。
【００１８】
以下、上記ステップＳ１からステップＳ５までの各ステップの処理について、詳細に説明する。
【００１９】
図４は、ステップＳ１の有音／無音区間の判定時のしきい値計算処理の内容を示すフローチャートである。この処理が始まると、まず、フレーム番号のカウント値を示す変数ｆを０に初期化しておく（ステップＳ６）。
【００２０】
次に、以下の式を用いてフレームｆにおけるフレームエネルギーｅ（ｆ）を計算する（ステップＳ７）。
【００２１】
【数１】
0004208312.tif 000002
【００２２】
なお、数式中、ｓ（ｉ）は１フレーム中のサンプル位置ｉにおけるサンプル、Ｎは１フレームを構成するサンプル数を示している。
【００２３】
次に、変数ｆの値が０であるか否か、すなわち、初期のフレームであるか否かを判定し（ステップＳ８）、ｆが０である場合には、最小フレームエネルギーを示す変数ｍｉｎの値をｅ（ｆ）（＝ｅ（０））にセットする（ステップＳ９）。
【００２４】
また、上記ステップＳ８においてｆが０でない場合には、フレームエネルギーｅ（ｆ）が変数ｍｉｎより小さいか否かを判定し（ステップＳ１０）、小さい場合には変数ｍｉｎにフレームエネルギーｅ（ｆ）をセットし（ステップＳ９）、一方、小さくない場合にはそのまま何もせずにステップＳ１１に行く。
【００２５】
ステップＳ１１ではファイルが終端に達したか否かを判定し、まだ終端ではない場合には、変数ｆをインクリメントして（ステップＳ１２）、次のフレームデータを読み出して上記ステップＳ７に戻って上述した処理を繰返す。
【００２６】
また、このステップＳ１１においてファイルの終端に達したと判断された場合は、しきい値ｔｒｓに、上記変数ｍｉｎに所定の値α（例えば１．２）を積算した値をセットして（ステップＳ１３）、この処理を抜ける。
【００２７】
このようなしきい値設定の処理方法は、すでに音声データが記録されていることを有効に利用したものであり、ファイル全体の最小エネルギーに基づいてしきい値を決定することができるために、誤りの少ない有音／無音区間判定処理を行なうことが可能である
なお、上述では、読み込んだ全区間（つまり、音声ファイルを構成する全フレーム）の最小値を求めているが、本発明はこれに限定されるものではなく、例えばパーソナルコンピュータのメモリ容量を勘案して、全区間の最小値でなく、ある程度の長さの区間に区切って処理するようにしても良い。
【００２８】
続いて、図５は、上記図３のステップＳ２における有音／無音区間判定処理の内容を示すフローチャートである。
【００２９】
この処理が始まると、フレーム番号のカウント値を示す変数ｆ、直前のフレームの有音／無音の状態を示す変数Ｐｒｅｖ、音声データ中の有音区間のカウント値を示す変数ＶｓＣｎｔを、各々０に初期化しておき、有音区間から無音区間への遷移を猶予するための制御変数ＨａｎｇＣｎｔを、例えば１０にセットしておく（ステップＳ１４）。
【００３０】
次に、上述した図４において計算したフレームエネルギーｅ（ｆ）が、しきい値ｔｒｓより大きいか否かを判定する（ステップＳ１５）。ここでｅ（ｆ）がｔｒｓより大きい場合には、ＨａｎｇＣｎｔの値を０にセットし（ステップＳ１６）、続いて直前のフレームの有音／無音の状態を示す変数Ｐｒｅｖの値が０か否かを判定する（ステップＳ１７）。このＰｒｅｖの値が０であれば、直前のフレームは無音フレームであったことを示し、Ｐｒｅｖの値が１であれば、直前のフレームは有音フレームであったことを示すものである。ここでＰｒｅｖが０であれば、有音区間の開始フレームを示す変数ｖｂ（ＶｓＣｎｔ）に現在のフレームｆの値をセットし、Ｐｒｅｖに１をセットし、有音区間のカウント値を示す変数ＶｓＣｎｔをインクリメントする（ステップＳ１８）。一方、Ｐｒｅｖが０でなければ何もせずにステップＳ１９に行く。
【００３１】
そして、ファイルが終端に達したか否かを判定し（ステップＳ１９）、まだ終端でない場合には、変数ｆをインクリメントして（ステップＳ２０）、次のフレームを読み出して上記ステップＳ１５に戻って処理を繰返す。
【００３２】
また、ステップＳ１９においてファイルの終端に達したと判断された場合は、この処理を抜ける。
【００３３】
また、上記ステップＳ１５において、ｅ（ｆ）がしきい値ｔｒｓより小さいと判定された場合には、ＨａｎｇＣｎｔの値が、例えば９より大きいか否かを判定し（ステップＳ２１）、ＨａｎｇＣｎｔの値が９より小さいと判定されたときは、ＨａｎｇＣｎｔの値をインクリメントして（ステップＳ２２）、上記ステップＳ１７に行く。一方、ＨａｎｇＣｎｔの値が９より大きいと判定されたときは、Ｐｒｅｖの値が１であるか否か、すなわち、直前のフレームが有音であったか否かを判定する（ステップＳ２３）。ここで、Ｐｒｅｖが１であれば、有音区間の終了フレームを示す変数ｖｅ（ＶｓＣｎｔ）に現在のフレームｆの値をセットし、Ｐｒｅｖに０をセットし（ステップＳ２４）、上記ステップＳ１９に行く。一方、Ｐｒｅｖが０であれば、何もしないで上記ステップＳ１９に行く。
【００３４】
この処理の結果、ファイル中の有音区間、無音区間の判定がされ、各有音区間が始まるフレームの値と、各有音区間が終了するフレームの値が、各々変数ｖｂ（ＶｓＣｎｔ）、ｖｅ（ＶｓＣｎｔ）に記憶される。ここで、変数ＶｓＣｎｔは、有音区間の区間数をカウントする変数であり、この処理を抜けた時点で、ファイル中の有音区間の総区間数を示している。
【００３５】
また、この処理のように変数ＨａｎｇＣｎｔを設定することにより有音区間から無音区間への遷移が所定フレーム分猶予されることになるため、語尾の部分を誤って無音と判定してしまうようなことを回避することができるという効果を奏する。
【００３６】
続いて、図６は、上記図３のステップＳ３における有音区間毎の平均フレームエネルギー計算処理の内容を示すフローチャートである。
【００３７】
この処理が始まると、まず、有音区間のカウント値を示す変数Ｃｎｔの値を０に初期化しておく（ステップＳ２５）。
【００３８】
次に、図５の処理によって求められた有音区間の総区間数ＶｓＣｎｔが０より大きいか否かを判定する（ステップＳ２６）。ここでＶｓＣｎｔが０以下であれば、ファイル中に有音区間は存在しないと判断して、何もしないでこの処理を抜ける。一方、ここでＶｓＣｎｔが０より大きければ、以下の式を用いて有音区間Ｃｎｔにおけるフレーム数ｖｎを計算する（ステップＳ２７）。
【００３９】
【数２】
0004208312.tif 000003
【００４０】
次に、この数式により有音区間Ｃｎｔにおける平均フレームエネルギーＥｓｅｃ（Ｃｎｔ）を計算する（ステップＳ２８）。
【００４１】
そして、ＣｎｔがＶｓＣｎｔ−１に満たないか否か、すなわち、全ての有音区間に対して平均フレームエネルギーＥｓｅｃ（Ｃｎｔ）の計算を終えていないか否かを判定し（ステップＳ２９）、ＣｎｔがＶｓＣｎｔ−１に満たないのであれば、Ｃｎｔの値をインクリメントして（ステップＳ３０）、上記ステップＳ２７に戻って次の有音区間の平均フレームエネルギーＥｓｅｃ（Ｃｎｔ）の計算処理を行う。一方、ステップＳ２９においてＣｎｔの値がＶｓＣｎｔ−１以上であると判定されれば、この処理を抜ける。
【００４２】
続いて、図７は、上記図３のステップＳ４における有音区間毎のゲイン計算処理の内容を示すフローチャートである。
【００４３】
この処理が始まると、まず、有音区間のカウント値を示す変数Ｃｎｔの値を０に初期化しておく（ステップＳ３１）。次に、図５の処理によって求められた有音区間の総区間数ＶｓＣｎｔが０より大きいか否かを判定する（ステップＳ３２）。ここでＶｓＣｎｔが０以下であれば、ファイル中に有音区間は存在しないと判断して、何もしないでこの処理を抜ける。一方、ここでＶｓＣｎｔが０より大きければ、図６のステップＳ２７と同様の方法により有音区間Ｃｎｔにおけるフレーム数ｖｎを計算する。
【００４４】
次に、以下の式により、図６のステップＳ２８で求めた、有音区間Ｃｎｔにおける平均フレームエネルギーＥｓｅｃ（Ｃｎｔ）の、ファイル中の全有音区間の平均値Ｅａｖｒを計算する（ステップＳ３３）。
【００４５】
【数３】
0004208312.tif 000004
【００４６】
次に、有音区間ＣｎｔにおけるゲインＧ（Ｃｎｔ）を、以下の式を用いて計算する（ステップＳ３４）。
【００４７】
【数４】
0004208312.tif 000005
【００４８】
ここで、数式中、ｓｑｒｔ（  ）は、カッコ内の式の平方根を示している。そして、ＣｎｔがＶｓＣｎｔ−１に満たないか否か、すなわち、全ての有音区間に対してゲインＧ（Ｃｎｔ）の計算を終えていないか否かを判定し（ステップＳ３５）、ＣｎｔがＶｓＣｎｔ−１に満たないのであれば、Ｃｎｔの値をインクリメントして（ステップＳ３６）、上記ステップＳ３４に戻って次の有音区間のゲインＧ（Ｃｎｔ）の計算処理を行う。一方、ステップＳ３５においてＣｎｔの値がＶｓＣｎｔ−１以上であると判定されれば、この処理を抜ける。
【００４９】
続いて、図８は、上記図３のステップＳ５における音声レベルの調整処理の内容を示すフローチャートである。
【００５０】
この処理が始まると、まず、フレーム番号のカウント値を示す変数ｆと、有音区間のカウント値を示す変数Ｃｎｔの値を０に初期化しておく（ステップＳ３７）。
【００５１】
次に、図５の処理によって求められた有音区間の総区間数ＶｓＣｎｔが０より大きいか否かを判定する（ステップＳ３８）。ここでＶｓＣｎｔが０以下であれば、ファイル中に有音区間は存在しないと判断して、何もしないでこの処理を抜ける。
【００５２】
一方、上記ステップＳ３８において、ＶｓＣｎｔが０より大きければ、ｆがｖｂ（Ｃｎｔ）の値以上であるか否かを判定する（ステップＳ３９）。ここで、ｆがｖｂ（Ｃｎｔ）の値に満たないと判定すると、ファイルが終端に達したか否かを判定し（ステップＳ４７）、まだ終端でない場合にはｆをインクリメントして（ステップＳ４８）、次のフレームデータを読み出して、ステップＳ３９に戻る。このステップＳ４７においてファイルの終端に達したと判断した場合は、この処理を抜ける。
【００５３】
ステップＳ３９においてｆがｖｂ（Ｃｎｔ）の値以上であると判定すると、ｆはｖｅ（Ｃｎｔ）の値以下であるか否かを判定する（ステップＳ４０）。このとき、ステップＳ３９、Ｓ４０ともに判定がｙｅｓであれば、現在のｆは有音区間内にあることを示している。
【００５４】
ここで、ｆはｖｅ（Ｃｎｔ）の値以下であると判定すると、ステップＳ４１、Ｓ４２、Ｓ４３、Ｓ４４の処理により、当該ｆにおけるサンプル値をゲインに基づいて調整する。すなわち、当該ｆにおけるサンプル位置ｉを０にセットしておき（ステップＳ４１）、以下の式に示すようにサンプル値ｓ（ｉ）にゲインＧ（Ｃｎｔ）を乗じてサンプル値ｓ（ｉ）を調整する（ステップＳ４２）。
【００５５】
【数５】
0004208312.tif 000006
【００５６】
次に、ｉがＮ−１に満たないか否かを判定し（ステップＳ４３）、ｉはＮ−１に満たないと判定すると、ｉをインクリメントして（ステップＳ４４）、ステップＳ４２に戻って処理を繰返す。
【００５７】
一方、ステップＳ４０においてｆはｖｅ（Ｃｎｔ）より大きいと判断すると、Ｃｎｔをインクリメントする（ステップＳ４５）。次に、ＣｎｔがＶｓＣｎｔ−１に満たないか否か、すなわち、全ての有音区間に対して音声レベルの調整を終えていないか否かを判定し（ステップＳ４６）、ＣｎｔがＶｓＣｎｔ−１に満たなければ、ファイル終端に達したか否かを判定する（ステップＳ４７）。一方、ＣｎｔがＶｓＣｎｔ−１以上であれば、この処理を抜ける。
【００５８】
上記した実施形態によれば、すでに記録されている音声データに対して、音声データ全体との関係において各有音区間の音声レベルを自動的に調整することで音声データ中の音量のばらつきをなくすことが可能となり、これによってユーザはボリュームを調整することなく音声を一定の音量で聞くことができるという効果を奏する。
【００５９】
また、すでに記録されている音声データに対して音声認識をさせる場合にも、音声認識処理に先立って、本実施形態により音声レベルの調整処理を行えば、音声レベルが一定に保たれるために安定した音声認識を行うことが可能となるという効果を奏する。
【００６０】
なお、本実施形態においては、パーソナルコンピュータ１３により音声レベルの調整処理を行うようにしたが、音声録音装置としてのディジタルレコーダ１０内において、音声レベルの調整処理を実現するようにしてもよい。
【００６１】
なお、本発明は上述した実施形態に限定されるものではなく、発明の主旨を逸脱しない範囲内において種々の変形や応用が可能であることはもちろんである。
【００６２】
【発明の効果】
本発明によれば、聞く人に応じて音量をより適切な大きさに自動的に調節することができる音声処理装置を提供することができるという効果を奏する。
【図面の簡単な説明】
【図１】（Ａ）は本実施形態に係る音声処理の一形態を説明するための図であり、（Ｂ）は制御部の構成を示す図である。
【図２】フレームの構成を示す図である。
【図３】本発明に係る音声レベルの調整処理の概要を示すフローチャートである。
【図４】図３に示すステップＳ１の有音／無音区間の判定時のしきい値計算処理の内容を示すフローチャートである。
【図５】図３のステップＳ２における有音／無音区間判定処理の内容を示すフローチャートである。
【図６】図３のステップＳ３における有音区間毎の平均フレームエネルギー計算処理の内容を示すフローチャートである。
【図７】図３のステップＳ４における有音区間毎のゲイン計算処理の内容を示すフローチャートである。
【図８】図３のステップＳ５における音声レベルの調整処理の内容を示すフローチャートである。
【符号の説明】
１０…ディジタルレコーダ、
１１…ミニチュアカード、
１２…ＰＣカードアダプタ、
１３…パーソナルコンピュータ、
１４…制御プログラム、
３０Ａ…音声判定部、
３０Ｂ…平均フレームエネルギー計算部、
３０Ｃ…音声レベル調整ゲイン計算部、
３０Ｄ…音声レベル調整部。
【図１】
0004208312.tif 000007
【図２】
0004208312.tif 000008
【図３】
0004208312.tif 000009
【図４】
0004208312.tif 000010
【図５】
0004208312.tif 000011
【図６】
0004208312.tif 000012
【図７】
0004208312.tif 000013
【図８】
0004208312.tif 000014