説明

音声処理装置

【課題】聞く人に応じて音量をより適切な大きさに自動的に調節することができる音声処理装置を提供する。
【解決手段】処理すべき音声データの有音区間と無音区間とを判定する音声判定部30Aと、この音声判定部30Aで判定された有音区間について、各有音区間の平均フレームエネルギーを計算する平均フレームエネルギー計算部30Bと、この平均フレームエネルギー計算部30Bで計算された各有音区間の平均フレームエネルギーに基づいて、各有音区間の音声レベルを調整するための音声レベル調整ゲインを計算する音声レベル調整ゲイン計算部30Cと、この音声レベル調整ゲイン計算部30Cにより求めた音声レベル調整ゲインを音声データの所定の位置に書き込む音声レベル調整ゲイン書き込み部30Dとを具備する。

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は音声処理装置に関する。
【0002】
【従来の技術】音声録音再生装置等の音声処理装置には、通常、ボリューム手段が設けられており、使用者はそのボリューム手段を操作することにより所望の音量で聞くことができる。
【0003】しかし、音声はダイナミックレンジが広く、同じボリュームレベルであっても音量が小さい場合も大きい場合もあり、そのような音量の変動が原因で聞きづらい場合には、使用者がそのつどボリュームを調整する必要があった。特に、対談の録音のように、録音装置と発言者との距離が発言者によって異なる場合にあっては、録音装置から近い位置にいる発言者の音声だけが大きく聞こえて、録音装置から遠い位置にいる発言者の声は小さくて聞き取りにくい場合がある。
【0004】特開平9−232892号公報はこのような問題を克服すべく、入力された直前の音声のレベルに基づいて音量を調節する音量制御装置を開示している。
【0005】
【発明が解決しようとする課題】ところで音量は重要な情報量のひとつであり、頻繁にその音量が変更されると自然さが失われ、かえって音質を低下させることになりかねない。音量の調節は、自然さを保ったまま行われることが望ましく、このためには、処理すべき音声の全体との関係において音量を調整することが必要である。
【0006】しかしながら、上記した特開平9−232892号公報では、直前の音声のレベルのみに基づいて音量を調節するので、音量が一定に保持されるという効果は有するが、かえって音質を低下させてしまう場合があった。
【0007】本発明はこのような課題に着目してなされたものであり、その目的とするところは、聞く人に応じて音量をより適切な大きさに自動的に調節することができる音声処理装置を提供することにある。
【0008】
【課題を解決するための手段】上記の目的を達成するために、第1の発明に係る音声処理装置は、処理すべき音声データの有音区間と無音区間とを判定する音声判定手段と、この音声判定手段で判定された有音区間について、各有音区間の平均フレームエネルギーを計算する平均フレームエネルギー計算手段と、この平均フレームエネルギー計算手段により計算された各有音区間の平均フレームエネルギーに基づいて、各有音区間の音声レベルを調整するための音声レベル調整ゲインを計算する音声レベル調整ゲイン計算手段と、この音声レベル調整ゲイン計算手段により求めた音声レベル調整ゲインを上記音声データの所定の位置に書き込む音声レベル調整ゲイン書き込み手段とを具備する。
【0009】また、第2の発明に係る音声処理装置は、第1の発明に係る音声処理装置において、上記音声レベル調整ゲイン計算手段が、上記各有音区間の平均フレームエネルギーの、全有音区間での平均値に基づいて前記音声レベル調整ゲインを計算する。
【0010】また、第3の発明に係る音声処理装置は、第1または第2の発明に係る音声処理装置において、前記音声データを再生するにあたって、各フレームに対応する上記音声レベル調整ゲインを当該音声データに乗じるか否かをユーザに選択させるための選択部を有する。
【0011】
【発明の実施の形態】以下、図面を参照して本発明の実施形態を詳細に説明する。
【0012】図1(A)は本実施形態に係る音声処理の一形態を説明するための図である。図1(A)において、音声録音装置としてのディジタルレコーダ10によって録音された音声データは当該ディジタルレコーダ10に着脱自在に装着されたミニチュアカード11に記憶される。ミニチュアカード11はディジタルレコーダ10から取り外されてPCカードアダプタ12に装着した状態で、パーソナルコンピュータ13に装填される。パーソナルコンピュータ13には音声再生、情報表示などの処理を行なう制御プログラム14がインストールされている。
【0013】図1(B)は、パーソナルコンピュータ13の制御部の構成を示す図であり、本実施形態に係る音声処理を行なうために各種の機能を備えている。すなわち、音声判定部30Aは処理すべき音声データ全体についてその有音区間と無音区間とを判定する。平均フレームエネルギー計算部30Bは音声判定部30Aで判定された有音区間について、各有音区間の平均フレームエネルギーを計算する。音声レベル調整ゲイン計算部30Cは平均フレームエネルギー計算部30Bにより計算された各有音区間の平均フレームエネルギーに基づいて、各有音区間の音声レベルを調整するための音声レベル調整ゲインを計算する。音声レベル調整ゲイン書き込み部30Dは音声レベル調整ゲイン計算部30Cで計算した音声レベル調整ゲインを音声データの所定の位置に書き込む。選択処理部30Eは音声データの再生時において、音声レベル調整ゲイン書き込み部30Dに書き込まれた音声レベル調整ゲインを乗じるか否かをユーザに選択させ、この選択に応じた処理を行なう部分である。ユーザの選択は例えばパーソナルコンピュータ13のキーボードから行なうことができる。
【0014】図2は音声データのデータ構造を示す図である。図2において、音声データは、1のファイルとして構成されており、ファイルヘッダ領域20−1とフレームデータ領域20−2とからなる。ファイルヘッダ領域20−1には例えば、記録された日時や録音時間長等の情報が記録されている。また、フレームデータ領域20−2は複数のフレーム(フレーム1,2,3,…n)から構成され、各フレームは、フレームヘッダ領域20−3と音声データ領域20−4とからなる。フレームヘッダ領域20−3には音声レベル調整ゲインが上記した音声レベル調整ゲイン書き込み部30Dにより書き込まれる。ここでは初期値として1がセットされるものとし、音声データ領域20−4には音声データが所定長記録される。
【0015】ここでパーソナルコンピュータ13内に取り込まれた音声データは、再生に先だって、本実施形態に係る音声レベルの調整が行われる。以下、フローチャートを参照して説明する。
【0016】図3は、本実施形態に係る音声レベルの調整処理の概要を示すフローチャートである。本調整処理はここではパーソナルコンピュータ13の制御部で行われる。
【0017】図3において、まず処理対象の音声データについて、有音/無音区間判定処理のためのしきい値計算処理を行い(ステップS1)、そのしきい値に基づいて有音/無音区間判定処理を行う(ステップS2)。続いて、ステップS2において判定された各有音区間における平均フレームエネルギーを計算し(ステップS3)、求めた各有音区間の平均フレームエネルギーに基づいて、各有音区間における各サンプルの音声レベル調整ゲインを計算する(ステップS4)。次に音声レベル調整ゲイン書き込み部30Dによりこの音声レベル調整ゲインを音声データ中の所定の位置に書き込む(ステップS5)。ここでは図2に示すフレームヘッダ領域20−3に書き込まれる。
【0018】以下、上記ステップS1からステップS5までの各ステップの処理について、詳細に説明する。
【0019】図4は、ステップS1の有音/無音区間の判定時のしきい値計算処理の内容を示すフローチャートである。この処理が始まると、まず、フレーム番号のカウント値を示す変数fを0に初期化しておく(ステップS6)。
【0020】次に、以下の式を用いてフレームfにおけるフレームエネルギーe(f)を計算する(ステップS7)。
【0021】
【数1】


【0022】なお、数式中、s(i)は1フレーム中のサンプル位置iにおけるサンプル、Nは1フレームを構成するサンプル数を示している。
【0023】次に、変数fの値が0であるか否か、すなわち、初期のフレームであるか否かを判定し(ステップS8)、fが0である場合には、最小フレームエネルギーを示す変数minの値をe(f)(=e(0))にセットする(ステップS9)。
【0024】また、上記ステップS8においてfが0でない場合には、フレームエネルギーe(f)が変数minより小さいか否かを判定し(ステップS10)、小さい場合には変数minにフレームエネルギーe(f)をセットし(ステップS9)、一方、小さくない場合にはそのまま何もせずにステップS11に行く。
【0025】ステップS11ではファイルが終端に達したか否かを判定し、まだ終端ではない場合には、変数fをインクリメントして(ステップS12)、次のフレームデータを読み出して上記ステップS7に戻って上述した処理を繰返す。
【0026】また、このステップS11においてファイルの終端に達したと判断された場合は、しきい値trsに、上記変数minに所定の値α(例えば1.2)を積算した値をセットして(ステップS13)、この処理を抜ける。
【0027】このようなしきい値設定の処理方法は、すでに音声データが記録されていることを有効に利用したものであり、ファイル全体の最小エネルギーに基づいてしきい値を決定することができるために、誤りの少ない有音/無音区間判定処理を行なうことが可能であるなお、上述では、読み込んだ全区間(つまり、音声ファイルを構成する全フレーム)の最小値を求めているが、本発明はこれに限定されるものではなく、例えばパーソナルコンピュータのメモリ容量を勘案して、全区間の最小値でなく、ある程度の長さの区間に区切って処理するようにしても良い。
【0028】続いて、図5は、上記図3のステップS2における有音/無音区間判定処理の内容を示すフローチャートである。
【0029】この処理が始まると、フレーム番号のカウント値を示す変数f、直前のフレームの有音/無音の状態を示す変数Prev、音声データ中の有音区間のカウント値を示す変数VsCntを、各々0に初期化しておき、有音区間から無音区間への遷移を猶予するための制御変数HangCntを、例えば10にセットしておく(ステップS14)。
【0030】次に、上述した図4において計算したフレームエネルギーe(f)が、図4において計算したしきい値trsより大きいか否かを判定する(ステップS15)。ここでe(f)がtrsより大きい場合には、HangCntの値を0にセットし(ステップS16)、続いて直前のフレームの有音/無音の状態を示す変数Prevの値が0か否かを判定する(ステップS17)。このPrevの値が0であれば、直前のフレームは無音フレームであったことを示し、Prevの値が1であれば、直前のフレームは有音フレームであったことを示すものである。ここでPrevが0であれば、有音区間の開始フレームを示す変数vb(VsCnt)に現在のフレームfの値をセットし、Prevに1をセットし、有音区間のカウント値を示す変数VsCntをインクリメントする(ステップS18)。一方、Prevが0でなければ何もせずにステップS19に行く。
【0031】そして、ファイルが終端に達したか否かを判定し(ステップS19)、まだ終端でない場合には、変数fをインクリメントして(ステップS20)、次のフレームを読み出して上記ステップS15に戻って処理を繰返す。
【0032】また、ステップS19においてファイルの終端に達したと判断された場合は、この処理を抜ける。
【0033】また、上記ステップS15において、e(f)がしきい値trsより小さいと判定された場合には、HangCntの値が、例えば9より大きいか否かを判定し(ステップS21)、HangCntの値が9より小さいと判定されたときは、HangCntの値をインクリメントして(ステップS22)、上記ステップS17に行く。一方、HangCntの値が9より大きいと判定されたときは、Prevの値が1であるか否か、すなわち、直前のフレームが有音であったか否かを判定する(ステップS23)。ここで、Prevが1であれば、有音区間の終了フレームを示す変数ve(VsCnt)に現在のフレームfの値をセットし、Prevに0をセットし(ステップS24)、上記ステップS19に行く。一方、Prevが0であれば、何もしないで上記ステップS19に行く。
【0034】この処理の結果、ファイル中の有音区間、無音区間の判定がされ、各有音区間が始まるフレームの値と、各有音区間が終了するフレームの値が、各々変数vb(VsCnt)、ve(VsCnt)に記憶される。ここで、変数VsCntは、有音区間の区間数をカウントする変数であり、この処理を抜けた時点で、ファイル中の有音区間の総区間数を示している。
【0035】また、この処理のように変数HangCntを設定することにより有音区間から無音区間への遷移が所定フレーム分猶予されることになるため、語尾の部分を誤って無音と判定してしまうようなことを回避することができるという効果を奏する。
【0036】続いて、図6は、上記図3のステップS3における有音区間毎の平均フレームエネルギー計算処理の内容を示すフローチャートである。
【0037】この処理が始まると、まず、有音区間のカウント値を示す変数Cntの値を0に初期化しておく(ステップS25)。
【0038】次に、図5の処理によって求められた有音区間の総区間数VsCntが0より大きいか否かを判定する(ステップS26)。ここでVsCntが0以下であれば、ファイル中に有音区間は存在しないと判断して、何もしないでこの処理を抜ける。一方、ここでVsCntが0より大きければ、以下の式を用いて有音区間Cntにおけるフレーム数vnを計算する(ステップS27)。
【0039】
【数2】


【0040】次に、以下の式により有音区間Cntにおける平均フレームエネルギーEsec(Cnt)を計算する(ステップS28)。
【0041】
【数3】


【0042】そして、CntがVsCnt−1に満たないか否か、すなわち、全ての有音区間に対して平均フレームエネルギーEsec(Cnt)の計算を終えていないか否かを判定し(ステップS29)、CntがVsCnt−1に満たないのであれば、Cntの値をインクリメントして(ステップS30)、上記ステップS27に戻って次の有音区間の平均フレームエネルギーEsec(Cnt)の計算処理を行う。一方、ステップS29においてCntの値がVsCnt−1以上であると判定されれば、この処理を抜ける。
【0043】続いて、図7は、上記図3のステップS4における有音区間毎のゲイン計算処理の内容を示すフローチャートである。
【0044】この処理が始まると、まず、有音区間のカウント値を示す変数Cntの値を0に初期化しておく(ステップS31)。次に、図5の処理によって求められた有音区間の総区間数VsCntが0より大きいか否かを判定する(ステップS32)。ここでVsCntが0以下であれば、ファイル中に有音区間は存在しないと判断して、何もしないでこの処理を抜ける。一方、ここでVsCntが0より大きければ、以下の式により、図6R>6のステップS28で求めた、有音区間Cntにおける平均フレームエネルギーEsec(Cnt)の、ファイル中の全有音区間の平均値Eavrを計算する(ステップS33)。
【0045】
【数4】


【0046】次に、有音区間CntにおけるゲインG(Cnt)を、以下の式を用いて計算する(ステップS34)。
【0047】
【数5】


【0048】ここで、数式中、sqrt( )は、カッコ内の式の平方根を示している。そして、CntがVsCnt−1に満たないか否か、すなわち、全ての有音区間に対してゲインG(Cnt)の計算を終えていないか否かを判定し(ステップS35)、CntがVsCnt−1に満たないのであれば、Cntの値をインクリメントして(ステップS36)、上記ステップS34に戻って次の有音区間のゲインG(Cnt)の計算処理を行う。一方、ステップS35においてCntの値がVsCnt−1以上であると判定されれば、この処理を抜ける。
【0049】続いて、図8は、上記図3のステップS5におけるゲインを音声データ中の所定の位置に書き込む処理の内容を示すフローチャートである。
【0050】図8において、この処理が始まると、まず、フレーム番号のカウント値を示す変数fと、有音区間のカウント値を示す変数Cntの値を0に初期化しておく(ステップS37)。
【0051】次に、図5の処理で求められた有音区間の総区間数VsCntが0より大きいか否かを判定する(ステップS38)。ここでVsCntが0以下であれば、ファイル中に有音区間は存在しないと判断して、何もしないでこの処理を抜ける。
【0052】一方、上記ステップS38において、VsCntが0より大きければ、fがvb(Cnt)の値以上であるか否かを判定する(ステップS39)。ここで、fがvb(Cnt)の値に満たないと判定すると、ファイルが終端に達したか否かを判定し(ステップS44)、まだ終端でない場合にはfをインクリメントして(ステップS45)、次のフレームデータを読み出して、ステップS39に戻る。このステップS44においてファイルの終端に達したと判断した場合は、この処理を抜ける。
【0053】ステップS39においてfがvb(Cnt)の値以上であると判定すると、fはve(Cnt)の値以下であるか否かを判定する(ステップS40)。このとき、ステップS39,S40ともに判定がyesであれば、現在のfは有音区間内にあることを示している。
【0054】ここで、fはve(Cnt)の値以下であると判定すると、フレームヘッダにG(Cnt)の値を書き換える(ステップS41)。一方、ステップS40においてfはve(Cnt)より大きいと判断すると、Cntをインクリメントする(ステップS42)。
【0055】次に、CntがVsCnt−1に満たないか否か、すなわち、全ての有音区間におけるフレームヘッダの書き換えを終えていないか否かを判定し(ステップS43)、CntがVsCnt−1に満たなければ、ファイル終端に達したか否かを判定する(ステップS44)。一方、CntがVsCnt−1以上であれば、この処理を抜ける。
【0056】以上説明した手段によって、各フレームにおけるゲイン値を設定することができる。この後、音声データの再生時、各フレームの音声に当該フレームヘッダのゲイン値を乗じることがユーザにより選択された場合には、音声レベルを自動的に調整した音声データが再生される。また、各フレームの音声に当該フレームヘッダのゲイン値を乗じないことが選択された場合には、音声レベルを調整しない状態の元の音声データが再生される。このようにして、本実施形態では音声レベルを自動的に調整した音声データを再生するか、元の音声データを再生するかをユーザが選択することができる。
【0057】上記した実施形態によれば、すでに記録されている音声データに対して、音声データ全体との関係において、各有音区間の音声レベルを自動的に調整するようにしたので、ユーザはボリュームを調整することなく、音声を一定の音量で聞くことができるという効果を奏する。
【0058】また、すでに記録されている音声データに対して音声認識をさせる場合にも、音声認識処理に先立って、本実施形態による音声レベルの調整処理を行えば、音声レベルが一定に保たれるために安定した音声認識を行うことが可能となるという効果を奏する。
【0059】さらに、本実施形態においては、パーソナルコンピュータ13により音声レベルの調整処理を行なうようにしたが、音声録音装置としてのディジタルレコーダ10内において、音声レベルの調整処理を実現するようにしてもよい。
【0060】なお、本発明は上述した実施形態に限定されるものではなく、発明の主旨を逸脱しない範囲内において種々の変形や応用が可能であることはもちろんである。
【0061】
【発明の効果】請求項1あるいは2に記載の発明によれば、聞く人に応じて音量をより適切な大きさに自動的に調節することができる音声処理装置を提供することができるという効果を奏する。
【0062】また、請求項3に記載の発明によれば、音声レベルを自動的に調整した音声データを再生するか、元の音声データを再生するかをユーザが選択することができるという効果を奏する。
【図面の簡単な説明】
【図1】(A)は本実施形態に係る音声処理の一形態を説明するための図であり、(B)は制御部の構成を示す図である。
【図2】フレームの構成を示す図である。
【図3】本発明に係る音声レベルの調整処理の概要を示すフローチャートである。
【図4】図3に示すステップS1の有音/無音区間の判定時のしきい値計算処理の内容を示すフローチャートである。
【図5】図3のステップS2における有音/無音区間判定処理の内容を示すフローチャートである。
【図6】図3のステップS3における有音区間毎の平均フレームエネルギー計算処理の内容を示すフローチャートである。
【図7】図3のステップS4における有音区間毎のゲイン計算処理の内容を示すフローチャートである。
【図8】図3のステップS5におけるゲインを音声データ中の所定の位置に書き込む処理の内容を示すフローチャートである。
【符号の説明】
10…ディジタルレコーダ、
11…ミニチュアカード、
12…PCカードアダプタ、
13…パーソナルコンピュータ、
14…制御プログラム、
30A…音声判定部、
30B…平均フレームエネルギー計算部、
30C…音声レベル調整ゲイン計算部、
30D…音声レベル調整ゲイン書き込み部、
30E…選択処理部。

【特許請求の範囲】
【請求項1】 処理すべき音声データの有音区間と無音区間とを判定する音声判定手段と、この音声判定手段で判定された有音区間について、各有音区間の平均フレームエネルギーを計算する平均フレームエネルギー計算手段と、この平均フレームエネルギー計算手段により計算された各有音区間の平均フレームエネルギーに基づいて、各有音区間の音声レベルを調整するための音声レベル調整ゲインを計算する音声レベル調整ゲイン計算手段と、この音声レベル調整ゲイン計算手段により求めた音声レベル調整ゲインを上記音声データの所定の位置に書き込む音声レベル調整ゲイン書き込み手段と、を具備することを特徴とする音声処理装置。
【請求項2】 上記音声レベル調整ゲイン計算手段は、上記各有音区間の平均フレームエネルギーの、全有音区間での平均値に基づいて前記音声レベル調整ゲインを計算すること、を特徴とする請求項1記載の音声処理装置。
【請求項3】 前記音声データを再生するにあたって、各フレームに対応する上記音声レベル調整ゲインを当該音声データに乗じるか否かをユーザに選択させるための選択部を有することを特徴とする請求項1または2記載の音声処理装置。

【図1】
image rotate


【図2】
image rotate


【図3】
image rotate


【図4】
image rotate


【図5】
image rotate


【図6】
image rotate


【図7】
image rotate


【図8】
image rotate