以下に、本願の開示する音声処理プログラム、音声処理方法および音声処理装置の実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。
本実施例1に係る音声処理装置の説明を行う前に、オペレータと顧客との会話が異常な会話状況であるか否かを判定する参考技術1について説明する。この参考技術1は、従来技術ではない。
参考技術1は、会話の開始時刻から終了時刻までの音声情報(会話全体の音声情報)を基にして、会話状況が通常の会話状況であるか、異常な会話状況であるかを判定する。ここで「異常な会話状況」とは、顧客が不満を感じたり、怒り出したり、脅迫したりするなど、「通常でない状況」を含むものである。
この参考技術1は、会話全体の時間、会話全体の音声区間の割合、ストレス評価値、所定のキーワードを検出した回数を、予め学習しておいたモデルに入力することで、異常な会話状況らしさを示す出力値を特定する。参考技術1は、この出力値が閾値以上である場合に、会話状況が異常な会話状況であると判定する。
ここで、会話の終盤だけ顧客が怒り出した場合、あるいは会話中に顧客が不満を述べたが、オペレータが話術で鎮静化させた場合は「異常な会話状況」であると判定することが好ましい。しかし、参考技術1では、会話全体に対する評価値、分析結果を用いて、総合的に異常な会話状況であるかを判定しているため、会話の一部に異常な会話状況が含まれていても、全体としては、異常な会話状況らしさを示す出力値が大きくならず、会話状況が異常であると判定できない場合がある。
次に、本実施例1に係る音声処理装置の処理の一例について説明する。音声処理装置は、異常な会話状況らしさを判定する「モデルを学習する処理」と、「異常な会話状況であるか否かを判定する処理」を行う。
音声処理装置が、モデルを学習する場合には、参考技術1と同様にして、会話全体の音声情報に対する評価値、分析結果を用いて、モデルを学習する。
続いて、音声処理装置が、異常な会話状況であるか否かを判定する場合には、会話の開始時刻から各設定時刻までの評価値、分析結果を、一定時間間隔でモデルに入力し、モデルの出力値を算出、蓄積する。音声処理装置は、蓄積された出力値から得られる軌跡を用いて、通常の会話状況か異常な会話状況かの判定を行う。
図1は、本実施例1に係る音声処理装置の処理を説明するための図である。図1において、縦軸はモデルの出力値に対応するものであり、横軸は会話時間に対応するものである。出力値10aは、時刻0から時刻t1までの区間における会話の評価値、分析結果をモデルに入力した場合の出力値である。出力値10bは、時刻0から時刻t2までの区間における会話の評価値、分析結果をモデルに入力した場合の出力値である。出力値10cは、時刻0から時刻t3までの区間における会話の評価値、分析結果をモデルに入力した場合の出力値である。出力値10dは、時刻0から時刻t4までの区間における会話の評価値、分析結果をモデルに入力した場合の出力値である。出力値10eは、時刻0から時刻t5までの区間における会話の評価値、分析結果をモデルに入力した場合の出力値である。出力値10fは、時刻0から時刻t6までの区間における会話の評価値、分析結果をモデルに入力した場合の出力値である。
出力値10gは、時刻0から時刻t7までの区間における会話の評価値、分析結果をモデルに入力した場合の出力値である。出力値10hは、時刻0から時刻t8までの区間における会話の評価値、分析結果をモデルに入力した場合の出力値である。出力値10iは、時刻0から時刻t9までの区間における会話の評価値、分析結果をモデルに入力した場合の出力値である。出力値10jは、時刻0から時刻t10までの区間における会話の評価値、分析結果をモデルに入力した場合の出力値である。出力値10kは、時刻0から時刻t11までの区間における会話の評価値、分析結果をモデルに入力した場合の出力値である。
音声処理装置は、各出力値10a〜10kの軌跡を基にして、通常の会話状況か異常な会話状況かの判定を行う。これによって、会話の一部に異常な会話状況が含まれていていると、軌跡に変化を与えるため、会話状況が、通常の会話状況か異常な会話状況であるかを判定することができる。これに対して、上記の参考技術1では、会話全体の時間(時刻0〜t11)の会話の評価値、分析結果をモデルに入力した出力値10kとの閾値比較により、通常の会話状況か異常な会話状況であるかを判定するため、会話の一部に異常な会話状況が含まれていても、特定できない。
図2は、本実施例1に係る音声処理装置の構成を示す機能ブロック図である。図2に示すように、この音声処理装置100は、通信部110、記憶部120、制御部130を有する。
通信部110は、ネットワークを介して外部の装置とデータ通信を実行する処理部である。たとえば、通信部110は、顧客とオペレータとの会話を含む音声情報を収集するサーバ装置(図示略)から、音声情報を受信する。通信部110は、受信した音声情報を制御部130に出力する。通信部110は、通信装置の一例である。なお、本実施例1では一例として、音声情報の会話を顧客とオペレータとの会話とするがこれに限定されるものではなく、利用者間の会話であってもよい。
記憶部120は、音声バッファ120aと、モデル情報120bと、出力値蓄積バッファ120cとを有する。記憶部120は、RAM(Random Access Memory)、ROM(Read Only Memory)、フラッシュメモリ(Flash Memory)などの半導体メモリ素子や、HDD(Hard Disk Drive)などの記憶装置に対応する。
音声バッファ120aは、顧客とオペレータとの会話の音声情報を記憶するバッファである。「モデルを学習する処理」を音声処理装置100が行う場合には、音声バッファ120aには、学習用の音声情報が蓄積される。これに対して、「会話状況を判定する処理」を音声処理装置100が行う場合には、音声バッファ120aには、判定対象となる音声情報が蓄積される。
モデル情報120bは、音声情報に含まれる会話が、異常な会話状況である度合いを示す出力値を出力するモデルの情報である。図3は、本実施例1に係るモデル情報を説明するための概略図である。図3に示すように、このモデル情報120bは、ニューラルネットワークの構造を有し、入力層20a、隠れ層20b、出力層20cを持つ。入力層20a、隠れ層20b、出力層20cは、複数のノードがエッジで結ばれる構造となっている。隠れ層20b、出力層20cは、活性化関数と呼ばれる関数とバイアス値とを持ち、エッジは、重みを持つ。
入力層20aに含まれる各ノードに、音声情報の特徴量を入力すると、隠れ層20bを通って、出力層20cの各ノードから、会話が異常な会話状況である確率「Ot」と、会話が通常の会話状況である確率「On」とが出力される。
本実施例では、モデル情報120bから出力される出力値Vを、式(1)により定義する。式(1)に含まれるP(t)は、式(2)により定義される値である。式(1)に含まれるP(n)は、式(3)により定義される値である。
V=logP(t)−logP(n)・・・(1)
P(t)=exp(Ot)/{exp(Ot)+exp(On)}・・・(2)
P(n)=exp(On)/{exp(Ot)+exp(On)}・・・(3)
出力値蓄積バッファ120cは、モデル情報120bを基に算出される出力値を格納するバッファである。図4は、本実施例1に係る出力値蓄積バッファのデータ構造の一例を示す図である。図4に示すように、この出力値蓄積バッファ120cは、時間と、出力値とを対応付ける。時間は、特徴量を抽出した音声情報の時間(会話の開始時刻からの経過時間)を示す。出力値は、該当する時間の音声情報から算出された特徴量を、モデル情報120bに入力した際に得られる出力値Vを示す。たとえば、図4に示す例では、時間「0〜t1」の音声情報から算出した特徴量を、モデル情報120bに入力した際に得られる出力値は、出力値V1である。
制御部130は、取得部130aと、特徴量算出部130bと、モデル学習部130cと、会話時間管理部130dと、出力値算出部130eと、判定部130fとを有する。制御部130は、CPU(Central Processing Unit)やMPU(Micro Processing Unit)などによって実現できる。また、制御部130は、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)などのハードワイヤードロジックによっても実現できる。
取得部130aは、音声情報を取得し、取得した音声情報を音声バッファ120aに格納する処理部である。たとえば、「モデルを学習する処理」を音声処理装置100が行う場合には、取得部130aは、学習用の音声情報を取得し、学習用の音声情報を音声バッファ120aに格納する。「会話状況を判定する処理」を音声処理装置100が行う場合には、取得部130aは、判定対象となる音声情報を取得し、音声情報を音声バッファ120aに格納する。
特徴量算出部130bは、音声バッファ120aに格納された音声情報を基にして、特徴量を算出する処理部である。たとえば、特徴量算出部130bが算出する特徴量は、ストレス評価値、キーワードの検出回数、会話の開始時刻からの経過時間である。ストレス評価値、検出回数、経過時間に関する説明は後述する。
「モデルを学習する処理」を音声処理装置100が行う場合には、特徴量算出部130bは、特徴量をモデル学習部130cに出力する。「会話状況を判定する処理」を音声処理装置100が行う場合には、特徴量算出部130bは、特徴量を、出力値算出部130eに出力する。
図5は、本実施例1に係る特徴量算出部の構成を示す機能ブロック図である。図5に示すように、この特徴量算出部130bは、音声取得部131aと、フレーム処理部131bと、ピッチ抽出部132と、パワー算出部133と、ピッチ・パワー蓄積部134と、ストレス評価値算出部135とを有する。また、特徴量算出部130bは、音声認識部136と、認識結果蓄積部137と、会話時間算出部138とを有する。
音声取得部131aは、音声バッファ120aに格納された音声情報を取得し、読み込んだ音声情報を、フレーム処理部131bに出力する。以下の説明では、音声取得部131aにより読み込まれたデジタル信号の音声情報を、単に、「音声情報」と表記する。
フレーム処理部131bは、音声取得部131aから取得する音声情報の信号時系列を、予め定められたサンプル数毎に「フレーム」として取り出し、フレームにハニング窓等の分析窓を乗算する。
たとえば、フレーム処理部131bは、サンプリング周波数8kHzで32msの区間のサンプルNをフレームとして取り出す。たとえば、N=256とする。フレームに含まれる各サンプルを「s(0)、s(1)、s(2)、・・・、s(N−1)」とする。フレーム処理部131bは、上記の各サンプルに対しハミング窓を乗算する。例えば、ハミング窓は、式(4)により示される。
各サンプルに対しハミング窓を乗算したサンプルを「x(0)、x(1)、x(2)、・・・、x(N−1)」とする。以下の説明では、ハミング窓を乗算した結果得られるサンプル「x(0)、x(1)、x(2)、・・・、x(N−1)」をサンプル値と表記する。フレーム処理部131bは、フレームにハニング窓を乗算したサンプル値を、ピッチ抽出部132、パワー算出部133、音声認識部136に出力する。フレーム処理部131bは、フレーム単位で、サンプル値の情報を出力し、フレーム識別番号をフレームに付与してもよい。
ピッチ抽出部132は、フレームのサンプル値を基にして、フレームの基本周波数(ピッチ)を抽出する処理部である。ピッチ抽出部132は、フレーム毎のピッチの情報を、ピッチ・パワー蓄積部134に蓄積する。
たとえば、ピッチ抽出部132は、フレームの各サンプル値を用いて、自己相関関数を計算する。ピッチ抽出部132は、式(5)に基づいて、自己相関関数φ(m)を計算する。式(5)に示すmは、遅延時間を示す。
ピッチ抽出部132は、式(5)について、遅延時間m=0以外において、自己相関関数が極大値となる遅延時間mの値を特定する。自己相関関数が極大となる遅延時間mを「遅延時間m’」と表記する。ピッチ抽出部132は、遅延時間m’を算出した後に、式(6)に基づいて、ピッチを算出する。
ピッチ=1/遅延時間m’・・・(6)
ピッチ抽出部132は、各フレームのサンプル値に対して、上記の処理を繰り返し実行することで、各フレームからピッチをそれぞれ算出する。ただし、前記自己相関関数の極大値が、予め決められた閾値以下の場合には、無音区間として、そのフレームのピッチとパワーは後の処理には使用しない。
パワー算出部133は、フレームのサンプル値を基にして、フレームのパワーを算出する処理部である。パワー算出部133は、フレーム毎のパワーの情報を、ピッチ・パワー蓄積部134に蓄積する。
たとえば、パワー算出部133は、フレームの各サンプル値「「x(0)、x(1)、x(2)、・・・、x(N−1)」の二乗値の総和に対し、対数をとることで、フレームのパワーを算出する。具体的に、パワー算出部133は、式(7)に基づいて、フレームのパワーを算出する。
ピッチ・パワー蓄積部134は、ピッチ抽出部132により抽出されたピッチの情報およびパワー算出部133により算出されたパワーの情報を格納するバッファである。図6は、本実施例1に係るピッチ・パワー蓄積部のデータ構造の一例を示す図である。図6に示すように、ピッチ・パワー蓄積部134は、フレーム識別番号と、ピッチと、パワーとを対応付ける。ただし、ピッチ抽出部132において無音区間とされたフレームはバッファには含めない。
ストレス評価値算出部135は、ピッチ・パワー蓄積部134に格納されたピッチおよびパワーの情報を基にして、設定時刻毎にストレス評価値を算出する処理部である。たとえば、ストレス評価値算出部135は、利用者の平常時のピッチおよびパワーの組をサンプルとした際のばらつき具合と比較して、現在のピッチおよびパワーの組のサンプルのばらつき具合が大きいほど、ストレス評価値を大きくし、小さいほどストレス評価値を小さくする。
ストレス評価値算出部135は、音声処理装置100が「会話状況を判定する処理」を行う場合に、次の処理を行う。ストレス評価値算出部135は、会話の開始時刻から、出力制御信号を受信した時刻までに蓄積されたピッチ・パワーの組のサンプルを用いて、混合ガウス分布を最尤推定によりモデル化し、推定に用いたサンプルに対するモデルの平均対数尤度にマイナス1を掛けたものを、ストレス評価値として算出し、算出したストレス評価値を、出力値算出部130eに出力する。「出力制御信号」は、会話時間管理部130dから出力される信号である。たとえば、ストレス評価値算出部135は、特開2015−082093に記載されたEMアルゴリズム(期待値最大化法)を用いて、最尤推定によるモデル化を行う。
音声認識部136は、たとえば、ワードスポッティング型の音声認識を行うことで、音声情報に所定のキーワードが含まれているか否かを検出する処理部である。音声認識部136は、音声情報から所定のキーワードを検出する度に、所定のキーワードに対応する検出回数に1を加算する処理を行う。音声認識部136は、所定のキーワードと、検出回数とを対応付けた情報を、認識結果蓄積部137に蓄積する。所定のキーワードは、顧客が不満を感じた場合や、怒っている際によく発言するキーワードである。
また、音声認識部136は、音声認識を行うための音声区間検出処理を開始し、音声区間を検出した際の、音声区間の開始時間と終了時間の情報を、会話時間算出部138に出力する。
認識結果蓄積部137は、音声認識部136により検出された各キーワード(所定のキーワード)の検出回数の情報(検出回数情報)を保持する。図7は、本実施例1に係る検出回数情報のデータ構造の一例を示す図である。図7に示すように、検出回数情報137aは、キーワードと検出回数とを対応付ける。
認識結果蓄積部137は、音声処理装置100が「モデルを学習する処理」を行う場合には、次の処理を行う。認識結果蓄積部137は、会話の開始時刻から、会話の終了時刻における検出回数情報137aを、モデル学習部130cに出力する。
認識結果蓄積部137は、音声処理装置100が「会話状況を判定する処理」を行う場合には、次の処理を行う。認識結果蓄積部137は、会話の開始時刻から、出力制御信号を受信した時刻までの検出回数情報137aを、出力値算出部130eに出力する。
会話時間算出部138は、会話の開始時刻からの会話の経過時間を計算する処理部である。たとえば、会話時間算出部138は、図示しないタイマから時間情報を取得し、会話の開始時刻からの経過時間を計測する。会話時間算出部138は、各フレームに含まれるサンプル数の累計を基にして、経過時間を推定してもよい。会話時間算出部138は、開始時刻と、開始時刻からの経過時間との情報を、会話時間管理部130dに出力する。
たとえば、会話時間算出部138は、音声認識部136から、検出した音声区間の開始時刻の情報をはじめに受け付けた開始時刻を、会話の開始時刻として特定する。会話時間算出部138は、検出した音声区間の情報を最後に受け付けた終了時刻から、所定時間経過しても、単語を検出した旨の情報を新たに受け付けない場合には、会話が終了したと判定する。会話時間算出部138は、会話が終了したと判定した場合には、検出した音声区間を最後に受け付けた終了時刻を終了時刻として特定する。会話時間算出部138は、会話の終了時刻の情報を、会話時間管理部130dに出力する。
会話時間算出部138は、音声処理装置100が「モデルを学習する処理」を行う場合には、次の処理を行う。会話時間算出部138は、会話の開始時刻から、会話の終了時刻までの経過時間の情報を、モデル学習部130cに出力する。
会話時間算出部138は、音声処理装置100が「会話状況を判定する処理」を行う場合には、次の処理を行う。会話時間算出部138は、会話の開始時刻から、出力制御信号を受信した時刻までの経過時間の情報を、出力値算出部130eに出力する。
図2の説明に戻る。モデル学習部130cは、学習用の音声情報から算出された特徴量を用いて、モデル情報120bを生成(学習)する処理部である。モデル学習部130cは、モデル情報120bを生成する場合には、予め、学習用の音声情報に対応する正解データを保持しておくものとする。たとえば、学習の音声情報が、「異常な会話状況」を含むものであれば、正解データの「Ot(異常な会話状況である確率)」の値は、「On(通常の会話状況である確率)」の値よりも大きい値となる。一方、学習の音声情報が、「通常の会話状況」の音声情報であれば、正解データの「Ot(異常な会話状況である確率)」の値は、「On(通常の会話状況である確率)」の値よりも小さい値となる。
モデル学習部130cは、学習用の音声情報から算出された特徴量をモデル情報120bの入力層20aに入力して、出力層20cから出力される値と、正解データとの差を小さくするように、隠れ層20bおよび出力層20cのバイアス値、エッジの重みを調整する。モデル学習部130cは、各学習用の音声情報と、各学習用の音声情報に対応する正解データを用いて、上記処理を繰り返し実行することで、モデル情報120bを学習する。たとえば、モデル学習部130cは、Back Propagation法等のアルゴリズムを用いて、モデル情報120bを学習してもよい。
会話時間管理部130dは、会話時間算出部138から、会話の開始時刻と、会話の開始時刻からの経過時間とを取得し、予め指定された時間Tを経過したか否かを判定する。会話時間管理部130dは、時間Tを経過する度に、「出力制御信号」を、ストレス評価値算出部135、認識結果蓄積部137、会話時間算出部138、出力値算出部130eに出力する。
会話時間管理部130dは、会話時間算出部138から、会話の終了時刻の情報を受け付けた場合には、会話の終了時刻の情報を、判定部130fに出力する。
出力値算出部130eは、特徴量算出部130bから取得する特徴量と、モデル情報120bとを基にして、出力値を算出する処理部である。出力値算出部130eは、算出した出力値を、出力値蓄積バッファ120cに蓄積する。
たとえば、出力値算出部130eは、会話時間管理部130dから出力制御信号を取得したタイミングで、特徴量算出部130bから特徴量を取得し、取得した特徴量をモデル情報120bの入力層20aに入力する。出力値算出部130eは、特徴量をモデル情報120bの入力層20aに入力した際に、出力層20cから出力される確率「Ot」と、確率「On」との値を取得し、式(1)〜式(3)を基にして、出力値Vを算出する。
出力値算出部130eは、会話時間管理部130dから出力制御信号を取得する度に、上記の処理を繰り返し実行することで、各経過時間の特徴量に対応する出力値Vを順次算出し、算出した出力値Vの情報を、出力値蓄積バッファ120cに格納する。出力値算出部130eは、出力値Vを蓄積する場合に、経過時間(時間)を対応付ける。
判定部130fは、出力値蓄積バッファ120cに格納された出力値の軌跡を基にして、会話が異常な会話状況であるのか、通常の会話状況であるのかを判定する処理部である。判定部130fは、判定結果を表示装置(図示略)に出力して表示させてもよいし、通信部110を介して、外部装置に通知してもよい。
判定部130fが行う判定処理は、様々なバリエーションがある。以下では、判定部130fが行う判定処理のバリエーション1〜4について説明する。どのバリエーションにより、判定処理を行うかは、利用者が予め設定しておくものとする。
図8は、判定処理のバリエーション1を説明するための図である。図8において、縦軸は出力値に対応するものであり、横軸は会話時間に対応するものである。判定部130fは、閾値50を設け、この閾値50により、出力値のとりうる範囲を、領域50aと領域50bとを設ける。出力値が閾値50を超える場合には、会話状況が異常な会話状況である可能性が高い。閾値50は、予め設定される閾値である。
判定部130fは、出力値の軌跡と、閾値50とを比較し、出力値の軌跡が閾値50を超えて領域50aに含まれた時点で、会話が異常な会話状況であると判定する。
判定部130fは、出力値の軌跡30aと、閾値50とを比較すると、軌跡30aは、閾値50を超えないまま会話が終了している。判定部130fは、出力値の軌跡30aに対応する会話を「通常の会話状況」であると判定する。
判定部130fは、出力値の軌跡30bと、閾値50とを比較すると、軌跡30bは、閾値50を超えて、一旦領域50aに侵入し、その後、領域50bに戻っている。判定部130fは、軌跡30bが会話の終盤で、領域50bに戻っているものの、閾値50を一度超えているため、軌跡30bに対応する会話を「異常な会話状況」であると判定する。
判定部130fは、出力値の軌跡30cと、閾値50とを比較すると、軌跡30cは、閾値50を超えて、領域50aに侵入している。判定部130fは、軌跡30cに対応する会話を「異常な会話状況」であると判定する。
図9は、判定処理のバリエーション2を説明するための図である。図9において、縦軸は出力値に対応するものであり、横軸は会話時間に対応するものである。判定部130fは、閾値50,51を設け、この閾値50,51により、領域50b,51a,51bを設ける。出力値が閾値50を超える場合には、会話が異常な会話状況である可能性が高い。出力値が閾値51を超える場合には、会話が異常な会話状況である可能性が極めて高い(確実に異常な会話状況である)。閾値50,51は、予め設定される閾値である。
判定部130fは、出力値の軌跡と、閾値50,51とを比較し、出力値の軌跡が閾値51を超えて領域51bに含まれた時点で、会話が異常な会話状況であると判定する。判定部130fは、出力値の軌跡と、閾値50,51とを比較し、出力値の軌跡の全体が、領域51aに含まれている場合には、会話が異常な会話状況であると判定する。判定部130fは、出力値の軌跡と、閾値50,51とを比較し、出力値の軌跡の一部が、領域50bに含まれている場合には、会話が通常の会話状況であると判定する。
判定部130fは、出力値の軌跡31aと、閾値50,51と比較すると、軌跡31aの一部が領域50bに含まれている。このため、判定部130fは、軌跡31aに対応する会話を「通常の会話状況」であると判定する。
判定部130fは、出力値の軌跡31bと、閾値50,51とを比較すると、軌跡31bは、閾値51を超えて、領域51bに侵入している。判定部130fは、軌跡31bが会話の終盤で、領域50bに戻っているものの、閾値50を一度超えているため、軌跡31bに対応する会話を「異常な会話状況」であると判定する。
判定部130fは、出力値の軌跡31cと、閾値50,51とを比較すると、出力値の軌跡31cの全体が、領域51aに含まれている。このため、判定部130fは、軌跡31cに対応する会話を「異常な会話状況」であると判定する。
図10は、判定処理のバリエーション3を説明するための図である。図10において、縦軸は出力値に対応するものであり、横軸は会話時間に対応するものである。判定部130fは、閾値50,52を設け、この閾値50,52により、領域50a,52a,52bを設ける。出力値が閾値50を超える場合には、会話が異常な会話状況である可能性が高い。出力値が閾値52以下となる場合には、会話が通常の会話状況である可能性が極めて高い(確実に通常の会話状況である)。閾値50,52は、予め設定される閾値である。
判定部130fは、出力値の軌跡と、閾値50,52とを比較し、出力値の軌跡が閾値52を下回り、領域52aに含まれた時点で、会話が通常の会話状況であると判定する。判定部130fは、出力値の軌跡と、閾値50,52とを比較し、軌跡が領域52aに含まれず、かつ、閾値50を超えた場合には、会話が異常な会話状況であると判定する。
判定部130fは、出力値の軌跡32aと、閾値50,52とを比較すると、軌跡32aは一度も閾値52を下回らず、軌跡の一部が領域50aに含まれている。このため、判定部130fは、軌跡32aに対応する会話を「異常な会話状況」であると判定する。
判定部130fは、出力値の軌跡32bと閾値50,52とを比較すると、軌跡32bは、軌跡の一部が領域50aに含まれているものの、閾値52を下回っている時間帯がある。このため、判定部130fは、軌跡32bに対する会話を「通常の会話状況」であると判定する。
図11は、判定処理のバリエーション4を説明するための図である。図11において、縦軸は出力値に対応するものであり、横軸は会話時間に対応するものである。判定部130fは、閾値50,51,52を設け、この閾値50,51,52により、領域51a,51b,52a,52bを設ける。出力値が閾値51を超える場合には、会話が異常な会話状況である可能性が極めて高い(確実に異常な会話状況である)。出力値が閾値52以下となる場合には、会話が通常の会話状況である可能性が極めて高い(確実に通常の会話状況である)。閾値50,51,52は、予め設定される閾値である。
判定部130fは、出力値の軌跡と、閾値50,51,52とを比較し、軌跡の一部が領域51a、52bに含まれる場合において、会話の終了時刻に近い方を優先する。たとえば、判定部130fは、出力値の軌跡が、先に閾値51を上回り、その後に、閾値52以下となった場合には、軌跡が閾値52以下となったことを優先し、「通常の会話状況」であると判定する。判定部130fは、出力値の軌跡が、先に閾値52以下となり、その後に、閾値51を上回った場合には、軌跡が閾値51以上となったことを優先し、「異常な会話状況」であると判定する。
判定部130fは、出力値の軌跡33aと、閾値50,51,52とを比較すると、軌跡33aは、先に閾値51を上回り、その後に、閾値52以下となっている。判定部130fは、会話の終了時刻に近い「軌跡33aが閾値52以下となった」ことを優先し、軌跡33aに対応する会話を「通常の会話状況」であると判定する。
判定部130fは、出力値の軌跡33bと、閾値50,51,52とを比較すると、軌跡33bは、先に閾値52以下となり、その後に、閾値51を上回っている。判定部130fは、会話の終了時刻に近い「軌跡33bが閾値51を上回った」ことを優先し、軌跡33bに対応する会話を「異常な会話状況」であると判定する。
次に、本実施例1に係る音声処理装置100の処理手順の一例について説明する。図12は、本実施例1に係る音声処理装置の処理手順を示すフローチャートである。図12に示すように、音声処理装置100の特徴量算出部130bは、フレーム処理を実行して、音声情報からフレームを抽出する(ステップS101)。特徴量算出部130bは、フレームのピッチを抽出し(ステップS102)、パワーを算出する(ステップS103)。
特徴量算出部130bは、ピッチおよびパワーの値を蓄積し(ステップS104)、ステップS107に移行する。一方、特徴量算出部130bは、音声認識を実行し(ステップS105)、検出回数情報を更新し(ステップS106)、ステップS107に移行する。
音声処理装置100の会話時間管理部130dは、出力値を算出する時間であるか否かを判定する(ステップS107)。会話時間管理部130dは、出力値を算出する時間でない場合には(ステップS107,No)、ステップS101に移行する。
音声処理装置100は、出力値を算出する時間である場合には(ステップS107,Yes)、ストレス評価値を算出し(ステップS108)、ステップS109に移行する。音声処理装置100の出力値算出部130eは、モデルの出力値を算出し、出力値蓄積バッファ120cに蓄積する(ステップS109)。音声処理装置100の判定部130fは、出力値の軌跡を算出し(ステップS110)、図13のステップS111に移行する。
図13の説明に移行する。判定部130fは、軌跡を基にして、異常な会話状況か否かを判定する(ステップS111)。判定部130fは、判定結果が確定した場合には(ステップS112,Yes)、ステップS115に移行する。
判定部130fは、判定結果が確定していない場合には(ステップS112,No)、会話が終了したか否かを判定する(ステップS113)。判定部130fは、会話が終了していない場合には(ステップS113,No)、図12のステップS101に移行する。
判定部130fは、判定結果が確定した場合には(ステップS113,Yes)、軌跡を基にして、異常な会話状況か否かを判定する(ステップS114)。判定部130fは、判定結果を出力する(ステップS115)。
次に、本実施例1に係る音声処理装置100の効果について説明する。音声処理装置100は、音声情報に含まれる会話の開始時刻から所定の時間間隔毎に設定時刻を設定し、開始時刻から各設定時刻までの音声情報から複数の特徴量を算出する。音声処理装置100は、各特徴量をモデル情報120bに入力し、モデル情報120bから得られる各出力値の軌跡を基にして、会話が異常な会話状況であるか否かを判定する。これにより、通常の会話状況か異常な会話状況かを判定することが可能となる。
音声処理装置100は、出力値の軌跡がとりうる範囲を、会話の状況が異常な場合にとる異常領域と、会話の状況が通常である場合にとる通常領域とに分割し、出力値の軌跡と、異常領域、通常領域とを基にして、会話が異常な会話状況であるか否かを判定する。これにより、会話の一部に異常な状況が含まれている場合でも、会話状況が異常であるか否かを正確に判定することができる。
図14は、本実施例1に係る音声処理装置の効果を説明するための図である。図14では、グラフ60a,60b,60cを示す。各グラフ60a〜60cにおいて、縦軸は出力値に対応するものであり、横軸は会話時間に対応するものである。閾値50,51に関する説明は、図9の説明と同様である。閾値55は、参考技術1が会話状況の異常、通常を判定する場合に用いる閾値である。
グラフ60aに示す各軌跡は、異常な会話状況に対する典型的な軌跡を示す実験結果であり、1本の軌跡は1会話に対応する。グラフ60aに示す各軌跡のうち、領域61aに含まれるものは、判定部130fにより、会話が異常な会話状況であることを判定できる。また、領域61aに含まれていなくても、ほとんどの軌跡が、領域61bに含まれていないため、会話が異常な会話状況であることを判定できる。たとえば、図9で説明したバリエーション2に基づく判定処理により、正確に判定できる。
グラフ60bに示す各軌跡は、通常の会話状況に対する典型的な軌跡を示す実験結果である。グラフ60bに示す各軌跡のうち、軌跡の大部分が、領域62bに含まれ、領域62aに含まれる軌跡は存在しない。このため、会話が通常の会話状況であることを判定できる。たとえば、図9で説明したバリエーション2に基づく判定処理により、正確に判定できる。
グラフ60cに示す各軌跡は、異常な会話状況に対する軌跡の実験結果である。全ての軌跡が、会話終了時において、閾値55を下回っているので、参考技術1に基づく判定では、異常な会話状況であることを判定できない。これに対して、本実施例1に係る判定部130fによれば、会話の開始時刻から終了時刻までの軌跡は、領域63bに含まれていないので、会話が異常な会話状況であることを判定できる。たとえば、図9で説明したバリエーション2に基づく判定処理により、正確に判定できる。
ところで、会話の開始直後は、特徴量の値が安定しないため、モデル情報120bに特徴量を出力した際に得られる出力値が安定しない場合がある。このため、会話時間管理部130dは、会話の開始時刻を受け付けたから、所定時間を経過するまで、「出力制御信号」を、ストレス評価値算出部135、認識結果蓄積部137、会話時間算出部138、出力値算出部130eに出力する処理を抑止してもよい。これによって、判定部130fは、安定した出力値を用いて、会話状況を判定することができる。
図15は、会話時間管理部のその他の処理を説明するための図である。図15において、縦軸は出力値に対応するものであり、横軸は会話時間に対応するものである。会話時間管理部130dは、開始時刻0から、所定時間taだけ経過した時点から所定の時間間隔で、「出力制御信号」を、ストレス評価値算出部135、認識結果蓄積部137、会話時間算出部138、出力値算出部130eに出力する。これにより、判定部130fは、時刻ta以降の安定した出力値を基にして、会話状況を判定できる。図15に示す閾値50,51、軌跡31a〜31cに関する説明は、図9の説明と同様である。
本実施例2に係る音声処理装置の説明を行う前に、オペレータと顧客との会話が異常な会話状況であるか否かを判定する参考技術2について説明する。この参考技術2は、従来技術ではない。会話の開始時刻から所定時間間隔で音声情報を区切り、区切った各音声情報から得られる特徴量をモデル情報に入力して、出力値を算出する。
図16は、参考技術2の処理を説明するための図である。図16に示すように、参考技術2は、音声情報を複数の音声情報12a〜12kに区切る。参考技術は、各音声情報12a〜12kの区間内で算出した各特徴量をそれぞれモデルに入力することで、出力値11a〜11kを算出する。特徴量を入力するモデルは、実施例1で説明したモデル情報120bに対応する。このように、音声情報を所定時間毎に区切って、出力値11a〜11kを算出すると、図16に示すように、各出力値が安定しないため、会話状況を精度よく判定できない場合がある。
次に、本実施例2に係る音声処理装置の処理の一例について説明する。図17は、本実施例2に係る音声処理装置の処理を説明するための図である。図17の横軸は会話時間に対応する軸であり、縦軸は出力値に対応する軸である。たとえば、音声処理装置は、音声情報を30秒毎に分割し、分割した各音声情報の特徴量をモデル情報に入力して、各出力値11a〜11nを得る。分割した各音声情報は、分割音声情報の一例である。また、音声処理装置は、開始時刻から現在時刻までの音声情報の特徴量をモデル情報に入力して、出力値(図示略)を得る。音声処理装置は、リアルタイムに、会話状況を判定する。現在の時刻を「Tc」とする。
音声処理装置は、開始時刻から現在時刻Tcまでの各出力値の平均値と、現在時刻Tcから所定時間前(たとえば、5分前)までに含まれる各出力値の最小値と、開始時刻から現在時刻Tcまでの出力値とを基にして、会話状況を判定する。
図17に示す例において、開始時刻から現在時刻Tcまでの各出力値の平均値は、時間帯B1に含まれる各出力値11a〜11nの平均値である。現在時刻Tcから所定時間前までに含まれる各出力値の最小値は、時間帯B2に含まれる出力値11c〜11nの最小値である。現在時刻Tcの出力値は、時刻0〜時刻Tcまでの区間における音声情報の特徴量をモデルに入力することで得られる出力値である。
本実施例2に係る音声処理装置は、「条件2および条件1を満たす場合」、または、「条件2および条件3を満たす場合」に、会話が異常な会話状況であると判定する。条件1〜3に含まれるTh1〜Th3は予め設定される閾値である。各閾値の大小関係は、Th3>Th1>Th2である。
条件1:開始時刻から現在時刻Tcまでの各出力値の平均値>Th1
条件2:現在時刻Tcから所定時間前までに含まれる各出力値の最小値>Th2
条件3:開始時刻から現在時刻Tcの出力値>Th3
本実施例2に係る音声処理装置は、出力値が安定しない場合であっても、上記の条件1〜3を用いて、会話状況が異常であるか否かを判定することで、会話状況を精度よく判定することができる。
図18は、本実施例2に係る音声処理装置の構成を示す機能ブロック図である。図18に示すように、この音声処理装置200は、通信部210、記憶部220、制御部230を有する。
通信部210は、ネットワークを介して外部の装置とデータ通信を実行する処理部である。たとえば、通信部210は、顧客とオペレータとの会話を含む音声情報を収集するサーバ装置(図示略)から、音声情報を受信する。通信部210は、受信した音声情報を制御部230に出力する。通信部210は、通信装置の一例である。
記憶部220は、音声バッファ220aと、モデル情報220bと、出力値蓄積バッファ220cとを有する。記憶部220は、RAM、ROM、フラッシュメモリなどの半導体メモリ素子や、HDDなどの記憶装置に対応する。
音声バッファ220aは、顧客とオペレータとの会話の音声情報を記憶するバッファである。「モデルを学習する処理」を音声処理装置200が行う場合には、音声バッファ220aには、学習用の音声情報が蓄積される。これに対して、「会話状況を判定する処理」を音声処理装置200が行う場合には、音声バッファ220aには、判定対象となる音声情報が蓄積される。
モデル情報220bは、音声情報に含まれる会話が、異常な会話状況である度合いを示す出力値を出力するモデルの情報である。モデル情報220bに関するその他の説明は、実施例1で説明したモデル情報120bに関する説明と同様である。
出力値蓄積バッファ220cは、モデル情報220bを基に出力される出力値を格納するバッファである。図19は、本実施例2に係る出力値蓄積バッファのデータ構造の一例を示す図である。図19に示すように出力値蓄積バッファ220cは、テーブル221a,221bを有する。
テーブル221aは、時間と、出力値とを対応付ける。テーブル221aにおける時間は、特徴量を抽出した音声情報の時間を示すものである。出力値は、該当する時間の音声情報から抽出された特徴量をモデル情報220bに入力した際に得られる出力値Vを示す。
テーブル221bは、時間と、出力値とを対応付ける。テーブル221bにおける時間は、特徴量を抽出した音声情報の時間(会話の開始時刻からの経過時間)を示すものである。出力値は、該当する時間の音声情報から算出された特徴量を、モデル情報220bに入力した際に得られる出力値Vを示す。
図18の説明に戻る。制御部230は、取得部230aと、特徴量算出部230bと、モデル学習部230cと、会話時間管理部230dと、出力値算出部230eと、判定部230fとを有する。制御部230は、CPUやMPUなどによって実現できる。また、制御部230は、ASICやFPGAなどのハードワイヤードロジックによっても実現できる。
取得部230aは、音声情報を取得し、取得した音声情報を音声バッファ220aに格納する処理部である。たとえば、「モデルを学習する処理」を音声処理装置200が行う場合には、取得部230aは、学習用の音声情報を取得し、学習用の音声情報を音声バッファ220aに格納する。「会話状況を判定する処理」を音声処理装置200が行う場合には、取得部230aは、判定対象となる音声情報を取得し、音声情報を音声バッファ220aに格納する。
特徴量算出部230bは、音声バッファ220aに格納された音声情報を基にして、特徴量を算出する処理部である。たとえば、特徴量算出部230bが算出する特徴量は、ストレス評価値、キーワードの検出回数、会話の開始時刻からの経過時間である。ストレス評価値、検出回数、経過時間に関する説明は後述する。
「モデルを学習する処理」を音声処理装置200が行う場合には、特徴量算出部230bは、特徴量をモデル学習部230cに出力する。「会話状況を判定する処理」を音声処理装置200が行う場合には、特徴量算出部230bは、特徴量を、出力値算出部230eに出力する。
図20は、本実施例2に係る特徴量算出部の構成を示す機能ブロック図である。図20に示すように、この特徴量算出部230bは、音声取得部231aと、フレーム処理部231bと、ピッチ抽出部232と、パワー算出部233と、ピッチ・パワー蓄積部234と、ストレス評価値算出部235とを有する。また、特徴量算出部230bは、音声認識部236と、認識結果蓄積部237と、会話時間算出部238とを有する。
音声取得部231aは、音声バッファ220aに格納された音声情報を取得し、読み込んだ音声情報を、フレーム処理部231bに出力する。以下の説明では、音声取得部231aにより読み込まれたデジタル信号の音声情報を、単に、「音声情報」と表記する。
フレーム処理部231bは、音声取得部231aから取得する音声情報の信号時系列を、予め定められたサンプル数毎に「フレーム」として取り出し、フレームの情報を、ピッチ抽出部232、パワー算出部233、音声認識部236に出力する。フレーム処理部231bの処理は、実施例1のフレーム処理部131bの処理に対応する。
ピッチ抽出部232は、フレームのサンプル値を基にして、フレームの基本周波数(ピッチ)を抽出する処理部である。ピッチ抽出部232は、フレーム毎のピッチの情報を、ピッチ・パワー蓄積部234に蓄積する。ピッチ抽出部232の処理は、実施例1のピッチ抽出部132の処理に対応する。
パワー算出部233は、フレームのサンプル値を基にして、フレームのパワーを算出する処理部である。パワー算出部233は、フレーム毎のパワーの情報を、ピッチ・パワー蓄積部234に蓄積する。パワー算出部233の処理は、実施例1のパワー算出部133の処理に対応する。
ピッチ・パワー蓄積部234は、ピッチ抽出部232により抽出されたピッチの情報およびパワー算出部233により算出されたパワーの情報を格納するバッファである。ピッチ・パワー蓄積部234のデータ構造は、図6に示したピッチ・パワー蓄積部134のデータ構造と同様である。
ストレス評価値算出部235は、ピッチ・パワー蓄積部234に格納されたピッチおよびパワーの情報を基にして、設定時刻毎にストレス評価値を算出する処理部である。たとえば、ストレス評価値算出部235は、ストレス評価値算出部135と同様に、ストレス評価値を算出する。
ストレス評価値算出部235は、音声処理装置200が「会話状況を判定する処理」を行う場合には、次の処理を行う。ストレス評価値算出部235は、会話の開始時刻から、出力制御信号を受信した時刻までに蓄積されたピッチ・パワーの組のサンプルを用いて、混合ガウス分布を最尤推定によりモデル化し、推定に用いたサンプルに対するモデルの平均対数尤度にマイナス1を掛けたものを、ストレス評価値として算出し、算出したストレス評価値を、第1ストレス値として、出力値算出部130eに出力する。「出力制御信号」は、会話時間管理部230dから出力される信号である。
また、ストレス評価値算出部235は、前回出力制御信号を受け付けた時刻から、今回出力制御信号を受け付けた時刻までに蓄積されたピッチ・パワーの組のサンプルを用いて、混合ガウス分布を最尤推定によりモデル化し、推定に用いたサンプルに対するモデルの平均対数尤度にマイナス1を掛けたものをストレス評価値として算出し、算出したストレス評価値を、第2ストレス値として、出力値算出部230eに出力する。
音声認識部236は、たとえば、ワードスポッティング型の音声認識を行うことで、音声情報に所定のキーワードが含まれているか否かを検出する処理部である。音声認識部236は、音声情報から所定のキーワードを検出する度に、所定のキーワードに対応する検出回数に1を加算する処理を行う。音声認識部236は、所定のキーワードと、検出回数とを対応付けた情報を、認識結果蓄積部237に蓄積する。所定のキーワードは、顧客が不満を感じた場合や、怒っている際によく発言するキーワードである。
たとえば、音声認識部236は、「第1検出回数」と、「第2検出回数」とを区別して、認識結果蓄積部237に蓄積する。第1検出回数は、会話の開始時刻から、出力制御信号を受信した時刻までの音声区間において検出した所定のキーワードの検出回数を示す。第2検出回数は、前回出力制御信号を受け付けた時刻から、今回出力制御信号を受け付けた時刻までの音声区間において検出した所定のキーワードの検出回数を示す。
また、音声認識部236は、音声認識を行うための音声区間検出処理を開始し、音声区間を検出した際の時間情報を、会話時間算出部238に出力する。
認識結果蓄積部237は、音声認識部236により検出された各キーワード(所定のキーワード)の検出回数の情報(第1検出回数、第2検出回数の情報)を保持する。図21は、本実施例2に係る検出回数情報のデータ構造の一例を示す図である。図21に示すように、検出回数情報237aは、テーブル237bとテーブル237cとを有する。
テーブル237bは、キーワードと第1検出回数とを対応付ける。第1検出回数は、会話の開始時刻から、出力制御信号を受信した時刻までの音声区間において検出した所定のキーワードの検出回数を示す。
テーブル237cは、時間と、キーワードと、第2検出回数とを対応付ける。時間は、各出力制御信号を受信した時間間隔を示す。第2検出回数は、前回出力制御信号を受け付けた時刻から、今回出力制御信号を受け付けた時刻までの音声区間において検出した所定のキーワードの検出回数を示す。
認識結果蓄積部237は、音声処理装置200が「モデルを学習する処理」を行う場合には、次の処理を行う。認識結果蓄積部237は、会話の開始時刻から、会話の終了時刻におけるテーブル237bの情報を、モデル学習部230cに出力する。
認識結果蓄積部237は、音声処理装置200が「会話状況を判定する処理」を行う場合には、次の処理を行う。認識結果蓄積部237は、会話の開始時刻から、出力制御信号を受信した時刻までのテーブル237bの情報を、出力値算出部230eに出力する。また、認識結果蓄積部237は、テーブル237cのレコードのうち、前回出力制御信号を受け付けた時刻から、今回出力制御信号を受け付けた時刻に対応する時刻に対応する時間のレコードを、出力値算出部230eに出力する。たとえば、前回出力制御信号を受信した時刻を「t1」、今回出力制御信号を受信した時刻を「t2」とすると、認識結果蓄積部237は、テーブル237cのレコードのうち、時間「t1〜t2」に対応するレコードを、出力値算出部230eに出力する。
会話時間算出部238は、会話の開始時刻からの会話の経過時間を計算する処理部である。たとえば、会話時間算出部238は、図示しないタイマから時間情報を取得し、会話の開始時刻からの経過時間を計測する。会話時間算出部238は、各フレームに含まれるサンプル数の累計を基にして、経過時間を推定してもよい。会話時間算出部238は、開始時刻と、開始時刻からの経過時間との情報を、会話時間管理部230dに出力する。
会話時間算出部238は、音声処理装置200が「モデルを学習する処理」を行う場合には、次の処理を行う。会話時間算出部238は、会話の開始時刻から、会話の終了時刻までの経過時間の情報を、モデル学習部230cに出力する。
会話時間算出部238は、音声処理装置200が「会話状況を判定する処理」を行う場合には、次の処理を行う。会話時間算出部238は、会話の開始時刻から、出力制御信号を受信した時刻までの経過時間の情報を、出力値算出部230eに出力する。また、会話時間算出部238は、前回出力制御信号を受け付けた時刻から、今回出力信号を受け付けた時刻までの時間間隔の情報を、出力値算出部230eに出力する。
図18の説明に戻る。モデル学習部230cは、学習用の音声情報から算出された特徴量を用いて、モデル情報220bを生成(学習)する処理部である。モデル学習部230cが、モデル情報220bを生成する処理は、実施例1で説明したモデル学習部130cの処理に対応する。
会話時間管理部230dは、会話時間算出部238から、会話の開始時刻と、会話の開始時刻からの経過時間とを取得し、予め指定された時間Tを経過したか否かを判定する。会話時間管理部230dは、時間Tを経過する度に、「出力制御信号」を、ストレス評価値算出部235、音声認識部236、認識結果蓄積部237、会話時間算出部238、出力値算出部230eに出力する。
会話時間管理部230dは、会話時間算出部238から、会話の終了時刻の情報を受け付けた場合には、会話の終了時刻の情報を、判定部230fに出力する。
出力値算出部230eは、特徴量算出部230bから取得する特徴量と、モデル情報220bとを基にして、出力値を算出する処理部である。出力値算出部230eは、算出した出力値を、出力値蓄積バッファ220cに蓄積する。
たとえば、出力値算出部230eは、会話時間管理部230dから出力制御信号を取得したタイミングで、特徴量算出部230bから特徴量を取得する。この特徴量には、第1特徴量と、第2特徴量とが含まれる。
第1特徴量は、会話の開始時刻から、今回出力制御信号を受信した時刻までの音声情報を基にして抽出される特徴量である。第1特徴量は、第1ストレス評価値、第1検出回数の情報、会話の開始時刻から、今回出力制御信号を受信した時刻までの経過時間の情報を含む。
出力値算出部230eは、会話時間管理部230dから出力制御信号を取得したタイミングで、特徴量算出部230bから第1特徴量を取得し、取得した第1特徴量をモデル情報220bの入力層20aに入力する。出力値算出部230eは、特徴量をモデル情報220bの入力層20aに入力した際に、出力層20cから出力される確率「Ot」と、確率「On」との値を取得し、式(1)〜式(3)を基にして、出力値Vを算出する。出力値算出部230eは、第1特徴量から算出した出力値Vの情報を、テーブル221bに登録する。
出力値算出部230eは、会話時間管理部230dから出力制御信号を取得する度に、上記の処理を繰り返し実行することで、各経過時間の第1特徴量に対応する出力値Vを順次算出し、算出した出力値Vの情報を、テーブル221bに格納して更新する。
一方、第2特徴量は、前回出力制御信号を受信した時刻から、今回出力制御信号を受信した時刻までの区間における音声情報を基にして抽出される特徴量である。第2特徴量は、第2ストレス評価値、第2検出回数の情報、前回出力制御信号を受信した時刻から、今回出力制御信号を受信した時刻までの経過時間の情報を含む。
出力値算出部230eは、会話時間管理部230dから出力制御信号を取得したタイミングで、特徴量算出部230bから第2特徴量を取得し、取得した第2特徴量をモデル情報220bの入力層20aに入力する。出力値算出部230eは、特徴量をモデル情報220bの入力層20aに入力した際に、出力層20cから出力される確率「Ot」と、確率「On」との値を取得し、式(1)〜式(3)を基にして、出力値Vを算出する。出力値算出部230eは、第2特徴量から算出した出力値Vの情報を、該当する時間に対応付けて、テーブル221aに登録する。
たとえば、出力値算出部230eは、時間「t1〜t2」の音声情報から抽出された第2特徴量から、出力値V2を算出した場合には、時間「t1〜t2」と、出力値V2とを対応付けて、テーブル221aに登録する。
出力値算出部230eは、会話時間管理部230dから出力制御信号を取得する度に、上記の処理を繰り返し実行することで、各時間間隔の第2特徴量に対応する出力値Vを順次算出し、算出した出力値Vの情報を、テーブル221aに格納する。
判定部230fは、出力値蓄積バッファ220cに格納された出力値の情報を基にして、会話が異常な会話状況であるのか、通常の会話状況であるのかを判定する処理部である。判定部130fは、上述した条件1〜3で用いる各値を算出し、会話状況が異常であるか否かを判定する。
判定部230fが、開始時刻から現在時刻Tcまでの各出力値の平均値を算出する処理について説明する。判定部230fは、図19のテーブル221aに格納された、開始時刻から現在時刻Tcまでの各出力値の平均値を算出する。
判定部230fが、現在時刻Tcから所定時間前までに含まれる各出力値の最小値を算出する処理について説明する。判定部230fは、図19のテーブル221aに格納された各出力値のうち、現在時刻Tcから所定時間前までに含まれる複数の出力値を抽出する。判定部230fは、抽出した複数の出力値のうち、最小の出力値を、最小値として算出する。
判定部230fが、現在時刻Tcの出力値を特定する処理について説明する。判定部230fは、図19のテーブル221bに格納された最新の出力値を、現在時刻Tcの出力値として特定する。
判定部230fは、条件1〜3で用いる各値を算出し、「条件2および条件1を満たす場合」、または、「条件2および条件3を満たす場合」に、会話が異常な会話状況であると判定する。判定部230fは、「条件2および条件1を満たさない場合」、かつ、「条件2および条件3を満たさない場合」に、会話が通常の会話状況であると判定する。判定部230fは、判定結果を表示装置(図示略)に出力して表示させてもよいし、通信部210を介して、外部装置に通知してもよい。
次に、本実施例2に係る音声処理装置200の処理手順の一例について説明する。図22および図23は、本実施例2に係る音声処理装置の処理手順を示すフローチャートである。図22に示すように、音声処理装置200の特徴量算出部230bは、フレーム処理を実行して、音声情報からフレームを抽出する(ステップS201)。特徴量算出部230bは、フレームのピッチを抽出し(ステップS202)、パワーを算出する(ステップS203)。
特徴量算出部230bは、ピッチおよびパワーの値を蓄積し(ステップS204)、ステップS207に移行する。一方、特徴量算出部230bは、音声認識を実行し(ステップS205)、検出回数情報を更新し(ステップS206)、ステップS207に移行する。
音声処理装置200の会話時間管理部230dは、出力値を算出する時間であるか否かを判定する(ステップS207)。会話時間管理部230dは、出力値を算出する時間でない場合には(ステップS207,No)、ステップS201に移行する。
音声処理装置200は、出力値を算出する時間である場合には(ステップS207,Yes)、ストレス評価値を算出し(ステップS208)、ステップS209に移行する。音声処理装置200の出力値算出部230eは、第1特徴量、第2特徴量に基づいて、モデルの出力値を算出し、出力値蓄積バッファ220cに蓄積し(ステップS209)、図23のステップS210に移行する。
図23の説明に移行する。判定部230fは、条件1〜3を満たすための値を算出する(ステップS210)。判定部230fは、会話が異常な会話状況である場合には(ステップS211,Yes)、ステップS214に移行する。
一方、判定部230fは、会話が異常な会話状況でない場合には(ステップS211,No)、会話が終了したか否かを判定する(ステップS212)。判定部230fは、会話が終了していない場合には(ステップS212,No)、図22のステップS201に移行する。
判定部230fは、会話が終了した場合には(ステップS212,Yes)、会話が通常の会話状況であると判定する(ステップS213)。判定部230fは、判定結果を出力する(ステップS214)。
次に、本実施例2に係る音声処理装置200の効果について説明する。音声処理装置200は、開始時刻から現在時刻Tcまでの各出力値の平均値と、現在時刻Tcから所定時間前までに含まれる各出力値の最小値と、現在時刻Tcの出力値とを基にして、会話状況を判定する。これにより、開始時刻から現在時刻Tcまでの音声情報の特徴量に対する出力値に加え、各時間間隔の区間内における音声情報の特徴量に対する出力値の情報も判定に用いることができるため、会話状況を精度よく判定することができる。
ところで、上述した実施例2に対する音声処理装置200は、リアルタイムに、会話状況を判定していたが、これに限定されるものではなく、会話が終了した際に、オフライン処理を実行し、会話状況を判定してもよい。以下の説明では、オフライン処理を実行する音声処理装置200を、単に「音声処理装置200」と表記する。
たとえば、会話が時刻Teに終了した際に、音声処理装置200は、オフライン処理を実行することで、次の3つの軌跡(第1の軌跡、第2の軌跡、第3の軌跡)を求める。
図24Aは、第1の軌跡を説明するための図である。図24Aの横軸は、会話時間に対応する軸であり、縦軸は出力値に対応する軸である。音声処理装置200は、実施例1の音声処理装置100と同様にして、開始時刻から設定時刻毎に、それまでの区間における音声情報の特徴量をモデル情報220bに入力して、出力値を算出する。図24Aに示す例では、終了時刻Teまでに、出力値12a〜12rが算出される。音声処理装置200は、出力値12a〜12rの最大値を特定する。たとえば、最大値は、12gとなる。第1の軌跡の最大値を「第1最大値」と表記する。
図24Bは、第2の軌跡を説明するための図である。図24Bの横軸は、会話時間に対応する軸であり、縦軸は出力値に対応する軸である。音声処理装置200は、設定時刻毎に区切った音声情報の特徴量(前後設定時刻間の音声情報の特徴量)をモデル情報220bに入力して、出力値を算出する。図24Bに示す例では、終了時刻Teまでに、出力値13a〜13rが算出される。音声処理装置200は、出力値13a〜13rの最小値を特定する。たとえば、最小値は、13mとなる。第2の軌跡の最小値を「第2最小値」と表記する。
図24Cは、第3の軌跡を説明するための図である。図24Cの横軸は、会話時間に対応する軸であり、縦軸は出力値に対応する軸である。音声処理装置200は、図24Bと同様にして、設定時刻毎に区切った音声情報の特徴量(前後設定時刻間の音声情報の特徴量)をモデル情報220bに入力して、出力値13a〜13rを算出する。そして、音声処理装置200は、設定時刻毎に、開始時刻から設定時刻までに算出された各出力値の平均値14a〜14rを算出する。平均値14a〜14rが第3の軌跡となる。たとえば、平均値14aは、出力値13aに対応する。平均値14bは、出力値13a,13bの平均値である。平均値14cは、出力値13a〜13cの平均値である。平均値14dは、出力値13a〜13dの平均値である。平均値14eは、出力値13a〜13eの平均値である。
同様にして、平均値14fは、出力値13a〜13fの平均値である。平均値14gは、出力値13a〜13gの平均値である。平均値14hは、出力値13a〜13hの平均値である。平均値14iは、出力値13a〜13iの平均値である。平均値14jは、出力値13a〜13jの平均値である。平均値14kは、出力値13a〜13kの平均値である。平均値14lは、出力値13a〜13lの平均値である。平均値14mは、出力値13a〜13mの平均値である。平均値14nは、出力値13a〜13nの平均値である。平均値14oは、出力値13a〜13oの平均値である。平均値14pは、出力値13a〜13pの平均値である。平均値14qは、出力値13a〜13qの平均値である。平均値14rは、出力値13a〜13rの平均値である。
音声処理装置200は、平均値14a〜14rの最大値を特定する。たとえば、最大値は、14dとなる。第3の軌跡の最大値を「第3最大値」と表記する。
音声処理装置200は、「条件5および条件4を満たす場合」、または、「条件5および条件6を満たす場合」に、会話が異常な会話状況であると判定する。条件4〜6に含まれるTh1〜Th3は予め設定される閾値である。各閾値の大小関係は、Th1>Th3>Th2である。
条件4:開始時刻から終了時刻Teまでの各出力値を取った軌跡の最大値(第1最大値)>Th1
条件5:開始時刻から終了時刻Teまでに含まれる各出力値の最小値(第2最小値)>Th2
条件6:開始時刻から終了時刻Teまで、時間間隔ごとにそれまでの出力値を平均化した軌跡の最大値(第3最大値)>Th3
本実施例2に係る音声処理装置200は、開始時刻から終了時刻Teまでの音声情報の特徴量に対する出力値に加え、各時間間隔の区間における音声情報の特徴量に対する出力値の統計量も判定に用いることができるため、上記の条件4〜6を用いて、会話状況が異常であるか否かを判定することで、会話状況を精度よく判定することができる。
次に、上記実施例に示した音声処理装置100,200と同様の機能を実現するコンピュータのハードウェア構成の一例について説明する。図25は、音声処理装置と同様の機能を実現するコンピュータのハードウェア構成の一例を示す図である。
図25に示すように、コンピュータ300は、各種演算処理を実行するCPU301と、ユーザからのデータの入力を受け付ける入力装置302と、ディスプレイ303とを有する。また、コンピュータ300は、記憶媒体からプログラム等を読み取る読み取り装置304と、有線または無線ネットワークを介して他のコンピュータとの間でデータの授受を行うインターフェース装置305とを有する。例えば、インターフェース装置305は、通信装置等に接続される。また、コンピュータ300は、各種情報を一時記憶するRAM306と、ハードディスク装置307とを有する。そして、各装置301〜307は、バス308に接続される。
ハードディスク装置307は、取得プログラム307a、特徴量算出プログラム307b、モデル学習プログラム307c、会話時間管理プログラム307d、出力値算出プログラム307e、判定プログラム307fを読み出してRAM306に展開する。
取得プログラム307aは、取得プロセス306aとして機能する。特徴量算出プログラム307bは、特徴量算出プロセス306bとして機能する。モデル学習プログラム307cは、モデル学習プロセス306cとして機能する。会話時間管理プログラム307dは、会話時間管理プロセス306dとして機能する。出力値算出プログラム307eは、出力値算出プロセス306eとして機能する。判定プログラム307fは、判定プロセス306fとして機能する。
取得プロセス306aの処理は、取得部130a、230aに対応する。特徴量算出プロセス306bの処理は、特徴量算出部130b、230bに対応する。モデル学習プロセス306cの処理は、モデル学習部130c、230cに対応する。会話時間管理プロセス306dの処理は、会話時間管理部130d、230dに対応する。出力値算出プロセス306eの処理は、出力値算出部130e、230eに対応する。判定プロセス306fの処理は、判定部130f、230fに対応する。
なお、各プログラム307a〜307fについては、必ずしも最初からハードディスク装置307に記憶させておかなくても良い。例えば、コンピュータ300に挿入されるフレキシブルディスク(FD)、CD−ROM、DVDディスク、光磁気ディスク、ICカードなどの「可搬用の物理媒体」に各プログラムを記憶させておく。そして、コンピュータ300が各プログラム307a〜307fを読み出して実行するようにしても良い。
以上の各実施例を含む実施形態に関し、さらに以下の付記を開示する。
(付記1)音声情報に含まれる判定対象とする会話の開始時刻から所定の時間間隔毎に設定された設定時刻に基づいて、前記開始時刻から各設定時刻までの複数の音声情報から複数の特徴量を算出し、
会話の開始時刻から終了時刻までの音声情報の特徴量を基にして生成されたモデルに、前記設定時刻毎に算出した複数の特徴量を入力することで、前記複数の特徴量に対応する前記モデルの複数の出力値を設定時刻毎に算出し、
前記複数の出力値を基にして、前記判定対象とする会話が異常な会話状況であるか否かを判定する
処理をコンピュータに実行させることを特徴とする音声処理プログラム。
(付記2)前記判定する処理は、前記複数の出力値の軌跡がとりうる範囲を、会話の状況が異常な場合にとる異常領域と、会話の状況が通常である場合にとる通常領域とに分割し、前記複数の出力値の軌跡と、前記異常領域および前記通常領域とを基にして、前記判定対象とする会話が異常な会話状況であるか否かを判定することを特徴とする付記1に記載の音声処理プログラム。
(付記3)前記判定する処理は、前記異常領域を第1領域と、前記第1領域よりも出力値の大きい領域に相当する第2領域とに分割し、前記複数の出力値の軌跡の一部が前記第2領域に含まれる場合、または、前記複数の出力値の全軌跡が前記第1領域に含まれる場合に、前記判定対象とする会話が異常な会話状況であると判定することを特徴とする付記2に記載の音声処理プログラム。
(付記4)前記判定する処理は、前記通常領域を第3領域と、前記第3領域よりも出力値の小さい領域に相当する第4領域とに分割し、前記複数の出力値の軌跡の一部が前記第4領域に含まれる場合に、前記判定対象とする会話が正常な会話状況であると判定することを特徴とする付記2または3に記載の音声処理プログラム。
(付記5)前記判定する処理は、前記出力値の軌跡が前記通常領域または前記異常領域を通過した順番を基にして、前記判定対象とする会話が異常な会話状況であるか否かを判定することを特徴とする付記2に記載の音声処理プログラム。
(付記6)前記開始時刻は、前記音声情報に含まれる前記判定対象とする会話の開始が検出された時刻から所定時間後であることを特徴とする付記1〜5のうちいずれか一つに記載の音声処理プログラム。
(付記7)前記特徴量を算出する処理は、前記音声情報を前記所定の時間間隔毎に分割し、分割した複数の分割音声情報から複数の特徴量を更に算出し、
前記出力値を算出する処理は、前記複数の分割音声情報から算出した複数の特徴量を前記モデルに入力することで、複数の出力値を更に算出し、
前記判定する処理は、前記開始時刻から現在時刻までの複数の分割音声情報の特徴量から得られる複数の出力値の現在時刻までの平均値と、前記現在時刻よりも所定時間前の時刻から前記現在時刻までの複数の分割音声情報の特徴量から得られる複数の出力値の最小値と、開始時刻から現在時刻までの音声情報の特徴量から得られる出力値とを基にして、前記判定対象とする会話が異常な会話状況であるか否かを判定することを特徴とする付記1に記載の音声処理プログラム。
(付記8)前記特徴量を算出する処理は、前記音声情報を前記所定の時間間隔毎に分割し、分割した複数の分割音声情報から複数の特徴量を算出し、
前記出力値を算出する処理は、前記複数の分割音声情報から算出した複数の特徴量を前記モデルに入力することで、複数の出力値を算出し、
前記判定する処理は、複数の分割音声情報の特徴量から得られる前記複数の出力値について開始時刻から設定時刻までの平均値を設定時刻ごとに算出して得られる軌跡の最大値と、複数の分割音声情報の特徴量から得られる前記複数の出力値の最小値と、前記開始時刻から各設定時刻までの音声情報の特徴量から得られる各出力値の最大値とを基にして、前記判定対象とする会話が異常な会話状況であるか否かを判定することを特徴とする付記1に記載の音声処理プログラム。
(付記9)コンピュータが実行する音声処理方法であって、
音声情報に含まれる判定対象とする会話の開始時刻から所定の時間間隔毎に設定された設定時刻に基づいて、前記開始時刻から各設定時刻までの複数の音声情報から複数の特徴量を算出し、
会話の開始時刻から終了時刻までの音声情報の特徴量を基にして生成されたモデルに、前記設定時刻毎に算出した複数の特徴量を入力することで、前記複数の特徴量に対応する前記モデルの複数の出力値を設定時刻毎に算出し、
前記複数の出力値を基にして、前記判定対象とする会話が異常な会話状況であるか否かを判定する
処理を実行することを特徴とする音声処理方法。
(付記10)前記判定する処理は、前記複数の出力値の軌跡がとりうる範囲を、会話の状況が異常な場合にとる異常領域と、会話の状況が通常である場合にとる通常領域とに分割し、前記複数の出力値の軌跡と、前記異常領域および前記通常領域とを基にして、前記判定対象とする会話が異常な会話状況であるか否かを判定することを特徴とする付記9に記載の音声処理方法。
(付記11)前記判定する処理は、前記異常領域を第1領域と、前記第1領域よりも出力値の大きい領域に相当する第2領域とに分割し、前記複数の出力値の軌跡の一部が前記第2領域に含まれる場合、または、前記複数の出力値の全軌跡が前記第1領域に含まれる場合に、前記判定対象とする会話が異常な会話状況であると判定することを特徴とする付記10に記載の音声処理方法。
(付記12)前記判定する処理は、前記通常領域を第3領域と、前記第3領域よりも出力値の小さい領域に相当する第4領域とに分割し、前記複数の出力値の軌跡の一部が前記第4領域に含まれる場合に、前記判定対象とする会話が正常な会話状況であると判定することを特徴とする付記10または11に記載の音声処理方法。
(付記13)前記判定する処理は、前記出力値の軌跡が前記通常領域または前記異常領域を通過した順番を基にして、前記判定対象とする会話が異常な会話状況であるか否かを判定することを特徴とする付記10に記載の音声処理方法。
(付記14)前記開始時刻は、前記音声情報に含まれる前記判定対象とする会話の開始が検出された時刻から所定時間後であることを特徴とする付記9〜13のうちいずれか一つに記載の音声処理方法。
(付記15)前記特徴量を算出する処理は、前記音声情報を前記所定の時間間隔毎に分割し、分割した複数の分割音声情報から複数の特徴量を更に算出し、
前記出力値を算出する処理は、前記複数の分割音声情報から算出した複数の特徴量を前記モデルに入力することで、複数の出力値を更に算出し、
前記判定する処理は、前記開始時刻から現在時刻までの複数の分割音声情報の特徴量から得られる複数の出力値の現在時刻までの平均値と、前記現在時刻よりも所定時間前の時刻から前記現在時刻までの複数の分割音声情報の特徴量から得られる複数の出力値の最小値と、開始時刻から現在時刻までの音声情報の特徴量から得られる出力値とを基にして、前記判定対象とする会話が異常な会話状況であるか否かを判定することを特徴とする付記9に記載の音声処理方法。
(付記16)前記特徴量を算出する処理は、前記音声情報を前記所定の時間間隔毎に分割し、分割した複数の分割音声情報から複数の特徴量を算出し、
前記出力値を算出する処理は、前記複数の分割音声情報から算出した複数の特徴量を前記モデルに入力することで、複数の出力値を算出し、
前記判定する処理は、複数の分割音声情報の特徴量から得られる前記複数の出力値について開始時刻から設定時刻までの平均値を設定時刻ごとに算出して得られる軌跡の最大値と、複数の分割音声情報の特徴量から得られる前記複数の出力値の最小値と、前記開始時刻から各設定時刻までの音声情報の特徴量から得られる各出力値の最大値とを基にして、前記判定対象とする会話が異常な会話状況であるか否かを判定することを特徴とする付記9に記載の音声処理方法。
(付記17)音声情報に含まれる判定対象とする会話の開始時刻から所定の時間間隔毎に設定された設定時刻に基づいて、前記開始時刻から各設定時刻までの複数の音声情報から複数の特徴量を算出する特徴量算出部と、
会話の開始時刻から終了時刻までの音声情報の特徴量を基にして生成されたモデルに、前記設定時刻毎に算出した複数の特徴量を入力することで、前記複数の特徴量に対応する前記モデルの複数の出力値を設定時刻毎に算出する出力値算出部と、
前記複数の出力値を基にして、前記判定対象とする会話が異常な会話状況であるか否かを判定する判定部と
を有することを特徴とする音声処理装置。
(付記18)前記判定部は、前記複数の出力値の軌跡がとりうる範囲を、会話の状況が異常な場合にとる異常領域と、会話の状況が通常である場合にとる通常領域とに分割し、前記複数の出力値の軌跡と、前記異常領域および前記通常領域とを基にして、前記判定対象とする会話が異常な会話状況であるか否かを判定することを特徴とする付記17に記載の音声処理装置。
(付記19)前記判定部は、前記異常領域を第1領域と、前記第1領域よりも出力値の大きい領域に相当する第2領域とに分割し、前記複数の出力値の軌跡の一部が前記第2領域に含まれる場合、または、前記複数の出力値の全軌跡が前記第1領域に含まれる場合に、前記判定対象とする会話が異常な会話状況であると判定することを特徴とする付記18に記載の音声処理装置。
(付記20)前記判定部は、前記通常領域を第3領域と、前記第3領域よりも出力値の小さい領域に相当する第4領域とに分割し、前記複数の出力値の軌跡の一部が前記第4領域に含まれる場合に、前記判定対象とする会話が正常な会話状況であると判定することを特徴とする付記18または19に記載の音声処理装置。