音声信号処理装置及びプログラム
【課題】 リアルタイムに音声信号の音声データについて話速変換処理を行う際に、安定的に話速変換処理後の音声データを出力することができる話速変換装置を提供する。
【解決手段】 本発明は、話速変換処理を行う音声信号処理装置に関する。そして、音声信号処理装置は、入力音声信号の音声データを蓄積する入力バッファ手段と、入力バッファ手段に蓄積されている音声データについて探索周期分の音声信号波形から基本周期を抽出し、基本周期の音声信号波形を利用して話速変換処理を行う話速変換手段と、話速変換手段が話速変換処理した後の音声データを蓄積する出力バッファ手段と、出力間隔ごとに出力音声データフレームを出力する音声データ出力手段と、入力バッファ手段に、探索周期よりも長い最低蓄積期間以上の音声データが蓄積されてから、話速変換手段による話速変換処理を開始させる変換処理制御手段とを有することを特徴とする。
【解決手段】 本発明は、話速変換処理を行う音声信号処理装置に関する。そして、音声信号処理装置は、入力音声信号の音声データを蓄積する入力バッファ手段と、入力バッファ手段に蓄積されている音声データについて探索周期分の音声信号波形から基本周期を抽出し、基本周期の音声信号波形を利用して話速変換処理を行う話速変換手段と、話速変換手段が話速変換処理した後の音声データを蓄積する出力バッファ手段と、出力間隔ごとに出力音声データフレームを出力する音声データ出力手段と、入力バッファ手段に、探索周期よりも長い最低蓄積期間以上の音声データが蓄積されてから、話速変換手段による話速変換処理を開始させる変換処理制御手段とを有することを特徴とする。
【発明の詳細な説明】
【技術分野】
【0001】
この発明は、音声信号処理装置及びプログラムに関し、例えば、話者の声質を保ちながら話す速度を変化させる話速変換装置に適用し得る。
【背景技術】
【0002】
従来、話者の声質を保ちながら話す速度を変化させる音声信号処理(話速変換処理)において、従来、音声に含まれる周期性を利用し、時間軸上で伸長・圧縮するPICOLA(Pointer Interval Control Overlap and Add)という手法がある(非特許文献1参照)。PICOLAとは、音声データより抽出したピッチ(基本周期の音声信号の波形)から、ピッチとその後に続く波形とを滑らかに繋ぐことのできる音声波形を生成し、さらに生成した音声波形を挿入した後に、所定のデータ長を出力することにより、もとの音声を圧縮または伸長する技術である。以下では、従来のPICOLAのアルゴリズムについて、話速を遅くする(音声を伸張する)場合の説明を行う。
【0003】
PICOLAでは、任意の長さに音声を伸張するために、音声中に繰り返し現れる周期性のある波形であるピッチを利用する。ピッチは音声データの所定のピッチを探索ための期間の音声データ(以後「ピッチ探索範囲TP」と呼ぶ)から自己相関関数などを用い抽出される。抽出されたピッチを用い、図12に示すように、まずピッチWの波形Aをフェードイン、続く波形Aと同じ長さの波形Bをフェードアウトした波形A’、B’を生成する。この波形A’とB’を足し合わせる(合成する)ことにより、波形A,Bと滑らかに繋がる伸長用の波形Cが生成される。この波形Cを波形Aと波形Bの間に挿入することにより音声波形の伸長が可能となる。挿入された波形Cの長さはピッチWの長さ(以下、「Tw」とも呼ぶ)と同じであるから、もとの音声信号の長さをLとすると伸長後の長さはL+Twとなる。所望の伸長率をRsとしたとき、もとの長さに対して伸長後の長さがR倍になれば良いからRs=(L+Tw)/Lとなる。これより伸長率Rsを満たすために必要な原信号の長さはL=Tw/(Rs−1)となる。例として伸長率Rsが1.25倍のとき、ピッチの長さWが100サンプルだったとすると、L=400サンプルとなる。原信号400サンプルに生成した100サンプルを加えて出力すれば、(出力サンプル数500)/(原信号サンプル数400)で伸長率1.25倍を実現出来る。
【0004】
PICOLAによる伸長処理のサイクルを図13に示す。まずピッチ探索範囲Tp分のデータを取得してからピッチW1を抽出し、ピッチから音声波形を生成し、所望の伸長率に必要な分の音声データを出力する。音声データを出力した最後のポイントP1が次の処理の開始地点となる。P1から数えてピッチ探索範囲Tp以上の音声データを取得したら再びピッチを抽出し、伸長処理を実行する。以上の処理を繰り返すことにより、話速を任意の早さに変換することができる。
【0005】
通常、予め設定したサンプル数nを1フレームとし、フレーム単位で処理及び出力を行う場合、話速変換をリアルタイムで実行するためには、1フレーム分の時間の経過ごとに1フレーム分のデータの処理が完了していなければならない。以下では、話側変換装置が、リアルタイムに音声データを変換処理し、出力するフレームを「出力フレーム」と呼ぶものとする。そして、フレーム単位でリアルタイムに処理を行う話側変換装置では、1出力フレーム分の時間経過ごとに、1出力フレーム分の処理済みの音声データをバッファ(以下、「出力バッファ」と呼ぶ)に保持していなければならない。しかし、話速変換装置では、出力フレームを出力すべきタイミングになっても、出力バッファに1出力フレーム分の処理済みの音声データが保持されていない場合には、出力フレームを出力することができず、出力フレームの被供給側での音声信号の途切れや、その後の処理に異常を引き起こす原因となる。
【0006】
話速変換(話速を遅く変換する場合)のアルゴリズムとしてPICOLAを用いる話側変換装置では、出力フレームを出力すべきタイミングとなっても、出力バッファに1出力フレーム分の処理済みの音声データが保持できない状況としては、大きく分けて、以下の2つの種類の条件が挙げられる。
【0007】
第1の条件としては、従来の話速変換装置において、処理前の音声データからピッチ抽出後に伸長処理を行う場合がある。具体的には、従来の話速変換装置において、処理前の音声データが、ピッチ探索範囲Tp分バッファされておらず、さらに、出力バッファの音声データ(伸長処理後の音声データ)が、1出力フレーム分以下しか残っていない状態で、次の出力フレームを出力すべきタイミングが訪れた場合である。
【0008】
第2の条件としては、従来の話速変換装置において、処理前の音声データからピッチ候補を抽出したが、当該ピッチ判定基準に基づいて伸長処理が行われない場合がある。入力音声信号には、常に音声のピッチが含まれているとは限らず、自然に話速変換するためには、無声子音や非音声区間を避けて母音や有声子音を伸長しなくてはならない。そのため、従来の話速変換装置において、ピッチ探索の結果、得られたピッチ候補が、伸長処理に用いるピッチとして適当なものであるか否かを判定する必要がある。従来の話速変換装置では、例えば、先頭から所定範囲の音声データが、ピッチ候補として抽出され、さらに、当該ピッチ候補が伸長処理に用いるピッチとして適当でないと判定された場合、当該ピッチ候補の音声データは伸長処理されずにそのまま出力(出力バッファで保持)される。フレーム単位で、音声データを出力する話速変換装置では、ピッチ候補となる音声データのデータ長は、出力フレームのデータ長よりも短くなる可能性がある。その場合、従来の話速変換装置において、出力バッファに伸長処理に利用されなかったピッチ候補の音声データのみが保持された状態で、次のフレームを出力すべきタイミングが訪れると、出力フレームを正常に出力できないことになる。
【0009】
特許文献1では、上述のような、従来の話速変換装置の課題に対する解決案が記載されている。特許文献1に記載された装置では、PICOLAによる伸長処理終了後、バッファにピッチ探索範囲Tp分のデータがなくても、前回の処理のピッチ情報を再利用し、同一フレーム内でもう一度伸長処理を実行する。特許文献1では、これにより、出力データのないフレームの発生を回避できる旨が記載されている。
【先行技術文献】
【特許文献】
【0010】
【特許文献1】特開2006−3517号公報
【非特許文献】
【0011】
【非特許文献1】森田直孝,板倉文忠、「ポインター移動制御による重複加算法(PICOLA)を用いた音声の時間軸での伸長圧縮とその評価」、日本音響学会講演論文集、p.149−150、昭和61年10月
【発明の概要】
【発明が解決しようとする課題】
【0012】
しかしながら、特許文献1の記載技術では、話速変換をあらゆる環境下で安定して動作させることができないという問題がある。
【0013】
具体的には、特許文献1の記載技術の欠点は、大きく分けて以下の3つ挙げられる。
【0014】
まず第1に、特許文献1の記載技術では、少なくとも一回の伸長処理を必要としているため、ピッチ候補抽出後に伸長処理をしない場合には全く対応することが出来ないという問題がある。
【0015】
第2に、特許文献1の記載技術では、同一フレーム内で再び伸長処理を行う際に、出力バッファに伸長処理に十分なデータが残っているとは限らないという問題がある。つまり、特許文献1の記載技術では、少なくとも1回目の伸長処理で出力したデータ以上のデータが出力バッファに残っていなければ、特許文献1の記載技術は適用できないことになる。
【0016】
第3に、特許文献1の記載技術では、同一フレーム内での2度目の伸長の際、そのデータとは直接関係ない部分のピッチ情報を使うため、ピッチでない部分を伸張し、音質が劣化してしまうという問題がある。
【0017】
上述のような問題点に鑑みて、リアルタイムに音声信号の音声データについて話速変換処理を行う際に、安定的に話速変換処理後の音声データを出力することができる音声信号処理装置及びプログラムが望まれている。
【課題を解決するための手段】
【0018】
第1のホン発明の音声信号処理装置は、(1)入力音声信号の音声データを蓄積する入力バッファ手段と、(2)上記入力バッファ手段に蓄積されている音声データに基づく音声信号波形について、探索周期分の音声信号波形から、基本周期を抽出し、抽出した基本周期の音声信号波形を利用して、入力バッファ手段に蓄積される音声データについて話速変換処理を行う話速変換手段と、(3)上記話速変換手段が話速変換処理した後の音声データを蓄積する出力バッファ手段と、(4)出力間隔ごとに、上記出力バッファ手段に蓄積している音声データのうち出力間隔分の音声データを含む出力音声データフレームを出力する音声データ出力手段と、(5)上記入力バッファ手段に、上記探索周期よりも長い最低蓄積期間以上の音声データが蓄積されてから、上記話速変換手段による話速変換処理を開始させる変換処理制御手段とを有することを特徴とする。
【0019】
第2の本発明の音声信号処理プログラムは、コンピュータを、(1)入力音声信号の音声データを蓄積する入力バッファ手段と、(2)上記入力バッファ手段に蓄積されている音声データに基づく音声信号波形について、探索周期分の音声信号波形から、基本周期を抽出し、抽出した基本周期の音声信号波形を利用して、入力バッファ手段に蓄積される音声データについて話速変換処理を行う話速変換手段と、(3)上記話速変換手段が話速変換処理した後の音声データを蓄積する出力バッファ手段と、(4)出力間隔ごとに、上記出力バッファ手段に蓄積している音声データのうち出力間隔分の音声データを含む出力音声データフレームを出力する音声データ出力手段と、(5)上記入力バッファ手段に、上記探索周期よりも長い最低蓄積期間以上の音声データが蓄積されてから、上記話速変換手段による話速変換処理を開始させる変換処理制御手段として機能させることを特徴とする。
【発明の効果】
【0020】
本発明によれば、リアルタイムに音声信号の音声データについて話速変換処理を行う際に、安定的に話速変換処理後の音声データを出力することができる音声信号処理装置を提供することができる。
【図面の簡単な説明】
【0021】
【図1】第1の実施形態に係る話速変換装置の機能的構成を示すブロック図である。
【図2】第1の実施形態に係る話速変換装置で、ピッチ抽出処理の処理例について説明した説明図である。
【図3】第1の実施形態に係る話速変換装置で、出力フレームを出力する処理について示したフローチャートである。
【図4】第1の実施形態に係る話速変換装置で、入力フレームの取得から出力バッファに音声データを供給するまでの動作について示したフローチャート(その1)である。
【図5】第1の実施形態に係る話速変換装置で、入力フレームの取得から出力バッファに音声データを供給するまでの動作について示したフローチャート(その2)である。
【図6】第1の実施形態に係る話速変換装置で、最低遅延量をピッチ探索範囲と等しくした場合の動作の第1の例について示したタイミングチャートである。
【図7】第1の実施形態に係る話速変換装置で、最低遅延量をピッチ探索範囲と等しくした場合の動作の第2の例について示したタイミングチャートである。
【図8】第1の実施形態に係る話速変換装置で、最低遅延量をピッチ探索範囲よりも長く設定した場合の動作の第1の例について示したタイミングチャートである。
【図9】第1の実施形態に係る話速変換装置で、最低遅延量をピッチ探索範囲よりも長く設定した場合の動作の第2の例について示したタイミングチャートである。
【図10】第2の実施形態に係る話速変換装置の機能的構成を示すブロック図である。
【図11】第2の実施形態に係る話速変換装置で、入力フレームの取得から出力バッファに音声データを供給するまでの動作について示したフローチャートである。
【図12】従来の話速変換装置で行われるPICOLAによる波形伸長について示した説明図である。
【図13】従来の話速変換装置で行われるPICOLAによる伸長処理のサイクルを説明するための図である。
【発明を実施するための形態】
【0022】
(A)第1の実施形態
以下、本発明による音声信号処理装置及びプログラムの第1の実施形態を、図面を参照しながら詳述する。なお、第1の実施形態の音声信号処理装置は、話速変換装置である。
【0023】
(A−1)第1の実施形態の構成
図1は、この実施形態の話速変換装置100の機能的構成を示すブロック図である。
【0024】
話速変換装置100は、データ入力部101、話速変換処理バッファ102、遅延制御部103、話速制御部104、ピッチ抽出部105、PICOLA処理部106、出力バッファ107、及びデータ出力部108を有している。
【0025】
話速変換装置100は、例えば、CPU、ROM、RAM、EEPROM、ハードディスクなどのプログラムの実行構成を有する情報処理装置(1台に限定されず、複数台を分散処理し得るようにしたものであっても良い。)に、実施形態の音声信号処理プログラム等をインストールすることにより構築してもよく、その場合でも機能的には上述の図1のように示すことができる。
データ入力部101は、入力された入力音声信号(音響信号)から、所定のサンプル間隔Tsごとにサンプリングされた音声データ(例えば、PCM(Pulse Code Modulation)形式で生成された音声データ)を生成し、サンプル数nを1フレームとするフレーム単位で、分割して話速変換処理バッファ102に供給する。以下では、データ入力部101により生成されるフレームを「入力フレーム」と呼ぶものとする。
【0026】
この実施形態では、データ入力部101は、上述の通り、入力音声信号を符号化して入力フレームを生成して話速変換処理バッファ102に供給するものとして説明するが、データ入力部101が、話速変換処理バッファ102に供給する音声データを保持する方法や供給方法は限定されないものである。例えば、データ入力部101は、入力フレーム単位ではなく、1サンプル単位で話速変換処理バッファ102に音声データを供給するようにしても良い。また、データ入力部101は、例えば、既に符号化された音声データを外部装置から保持する(1度に保持するデータ量は限定されないものである)ようにしても良い。
【0027】
話速変換処理バッファ102は、データ入力部101から供給される入力フレームを保持し、遅延制御部103、話速制御部104、ピッチ抽出部105等の制御に従って、保持した入力フレームの音声データを、後段の処理構成(PICOLA処理部106)に供給する等の処理を行うものである。
【0028】
遅延制御部103は、話速変換処理バッファ102で保持されている音声データのデータ量に応じて、その他の処理構成(話速変換処理バッファ102、ピッチ抽出部105等)の動作を制御するものである。遅延制御部103は、話速変換装置100の処理開始直後等に、話速変換処理バッファ102で、最低遅延量Td(最低蓄積期間)分以上の音声データが保持されているかどうかを確認する。そして、遅延制御部103は、話速変換処理バッファ102で、最低遅延量Td以上の期間分の音声データが保持されていると確認した場合に、PICOLA処理部106等による伸張処理を開始させるように、他の処理構成を制御する。
【0029】
最低遅延量Tdとしては、少なくともピッチ探索範囲Tp以上の期間とする必要があるが、この実施形態では、以下の(1)式のように算出されるものであるものとする。一方、詳細については口述するが、話速制御部104では、開始時に設定した伸長率Rsから伸長率を達成するために必要なデータ長(音声データに対応する期間)が算出される。
【0030】
最低遅延量Td=ピッチ探索範囲Tp
+1出力フレーム分の期間−1サンプル分の期間 …(1)
ピッチ抽出部105は、話速変換処理バッファ102に保持されている音声データに対して、ピッチの探索を行う。ピッチ抽出部105は、ピッチ探索範囲Tp分の音声データが話速変換処理バッファ102にある場合に、話速変換処理バッファ102に保持されている音声データに対して、ピッチ候補の探索(抽出)を行う。
【0031】
ピッチ抽出部105は、例えば、話速変換処理バッファ102で保持されている音声データのピッチ探索範囲Tpの中から最も周期性の強いものをピッチ候補とし、当該ピッチ候補が、PICOLA処理部106で話速変換処理に用いるものとして適当であるか否かも判定する。ここでは、説明を簡易にするため、ピッチ抽出部105が抽出するピッチ候補は、話速変換処理バッファ102で保持されている音声データの先頭(時系列上の先頭)から始まる音声データであるものとする。
【0032】
そして、ピッチ抽出部105は、抽出したピッチ候補の音声データ(話速変換処理バッファ102時系列上の先頭から所定範囲の音声データ)について、話速変換処理に用いるものとして適当であるか否かを判定し、適当と判定した場合には、話速変換処理バッファ102を制御して、抽出したピッチの音声データと、当該ピッチの音声データに続く話側変換処理(伸長処理)に必要な長さ(以下、「伸長処理用データ期間Tg」と呼ぶ)の音声データを、PICOLA処理部106に供給させる。
【0033】
なお、伸長処理用データ期間Tgの長さは、話速制御部104により、伸長率Rsに応じて決定されるものである。
【0034】
一方、抽出したピッチ候補の音声データについて、話速変換処理に用いるものとして適当でないと判定された場合には、ピッチ抽出部105は、話速変換処理バッファ102を制御して、当該ピッチ候補の音声データについて、出力バッファ107に供給させる。
【0035】
ピッチ抽出部105によるピッチ候補の抽出処理は、例えば、相違度や自己相関係数などを利用するようにしてもよい。以下に、ピッチ抽出部105が、上述の相違度を用いてピッチ候補を抽出する処理の例について説明する。
【0036】
ピッチ抽出部105は、例えば、図2のように話速変換処理バッファ102の時系列上の先頭となる音声データ(図2の「ピッチ候補区間」)について、1サンプルずつずらしながら隣り合うデータ区間(図2の「比較対象区間」)との相違度を算出し、相違度が最も小さいものをピッチ候補とするものとする。 ピッチ抽出部105では、例えば、以下の(2)式を用いて、仮のピッチ候補区間と比較対象区間との相違度を算出するようにしてもよい。以下の(2)式で、fは、図2に示す仮のピッチ候補区間を示しており、fiは、f(ピッチ候補区間)の先頭からi番目のサンプル値を表している。また、以下の(2)式で、gは、図2に示す比較対象区間を示しており、giは、g(比較対象区間)の先頭からi番目のサンプル値を表している。
【数1】
【0037】
ピッチ抽出部105が、ピッチ探索を行う回数(相違度を算出する回数)は限定されないものであるが、例えば、所定の最大回数を限度として相違度を計算し、最も相違度が少ないものをピッチ候補区間として抽出するようにしてもよい。そして、ピッチ抽出部105は、相違度が所定の閾値未満である場合に、当該ピッチ候補を伸長処理に用いるものとして適当であると判定するようにしてもよい。
【0038】
ピッチ探索範囲Tpとしては、例えば、人間のピッチを探索するのに十分な範囲を設定することが望ましく、例えば、サンプリング周波数8kHzのとき20サンプルから120サンプルとするようにしてもよい。
【0039】
PICOLA処理部106は、ピッチ抽出部105で抽出したピッチWの音声データ(音声波形)に基づいて、話速変換処理バッファ102に保持された音声データの伸長に用いる音声データを生成する。PICOLA処理部106は、例えば、従来技術と同様に、クロスフェードを用いて、伸長処理に用いる音声データを生成するようにしても良い。
【0040】
そして、PICOLA処理部106は、ピッチWの波形の長さ(時間軸上の波形の長さであり、生成した音声データの波形の長さと同様)に応じた伸長処理用データ期間Tgを、話速制御部104に問い合わせて取得する。
【0041】
そして、PICOLA処理部106は、伸長処理用データ期間Tgを取得すると、話速変換処理バッファ102で保持された音声データのうち、ピッチWに続く伸長処理用データ期間Tg分の音声データを取得する。そして、PICOLA処理部106は、取得したピッチWの音声データと、伸長処理用データ期間Tgの音声データとの間に、生成した音声データを挿入した音声データを、出力バッファ107に供給する。
【0042】
なお、PICOLA処理部106は、話速変換処理バッファ102に、伸長処理用データ期間Tg分の音声データが残っていない場合には、足りない分の長さ(以下、「未処理データ期間Tu」と呼ぶ)を、話速制御部104に報告する。
【0043】
話速制御部104は、基準となる伸長率Rsのパラメータを保持し、保持した伸長率Rsにもとづいて、PICOLA処理部106からの問い合わせに応じて、伸長率Rsを満たすための伸長処理用データ期間Tgの長さを算出して、返答する。話速制御部104が、伸長率Rsを保持する方法は限定されないものであるが、例えば、予め設定しておくようにしても良いし、ユーザの操作に応じて変更可能な構成としても良い。
【0044】
話速制御部104は、PICOLA処理部106から、ピッチWの長さTwが通知されると、伸長率Rsを満たすための、当該ピッチWの長さTwに対応する伸長処理用データ期間Tgを算出する。そして、話速制御部104は、算出した伸長処理用データ期間Tgを、PICOLA処理部106に返答する。
【0045】
話速制御部104では、例えば、以下の(3)式を用いて、伸長処理用データ期間Tgを算出するようにしてもよい。
【0046】
Tg=(Tw/(Rs−1))−Tw …(3)
なお、話速制御部104は、PICOLA処理部106から未処理データ期間Tuが報告された場合には、話速変換処理バッファ102を制御して、未処理データ期間Tu分の音声データについてデータ出力部108に供給させる処理を優先させる。すなわち、未処理データ期間Tuが発生した場合、話速制御部104は、次に話速変換処理バッファ102に未処理データ期間Tu分の音声データが溜まると、話速変換処理バッファ102を制御して、次の伸長処理よりも優先して、その音声データを出力バッファ107に供給させる。
【0047】
出力バッファ107は、出力フレームを送出すべきタイミングが到来するごとに、出力フレーム1つ分の音声データを、データ出力部108に供給する。出力フレームがnサンプル分の音声データで構成されている場合には、出力フレームを送出すべきタイミングは、サンプル間隔Ts×nの期間ごとに到来することになる。
【0048】
話速変換装置100の動作開始直後等、出力バッファ107に保持されている音声データが、1出力フレーム分に満たない場合には、出力バッファ107は、例えば、無音データや、予め用意しておいたノイズ等のダミー用の音声データを含む出力フレームを、データ出力部108に供給するようにしてもよい。
【0049】
データ出力部108は、出力バッファ107から供給された出力フレームの音声データを所定の方法により出力するものである。データ出力部108が音声データを出力する方法については限定されないものであるが、例えば、スピーカ等の音声出力装置を備えて表音出力したり、所定のデータ記憶媒体(例えば、ハードディスクドライブ等)に記憶させたり、出力フレームの音声データをそのまま、又は符号化して、所定の形式のパケットに挿入し、送信先の通信装置に送出するようにしてもよい。
【0050】
(A−2)第1の実施形態の動作
次に、以上のような構成を有する第1の実施形態の話速変換装置100の動作を説明する。
【0051】
まず、話速変換装置100において、データ出力部108による、出力データフレームの出力処理について図3のフローチャートを用いて説明する。
【0052】
話速変換装置100で話速変換処理(話速を遅くする処理)が開始されると、まず、出力バッファ107は、次の出力フレーム送出タイミングが到来するまで待機し(S101)、出力フレーム送出タイミングが到来すると、1つの出力フレーム分の音声データをデータ出力部108に供給する(S102)。上述の通り、出力バッファ107で、出力フレームを出力すべきタイミングは、サンプル間隔Ts×nの期間ごとに到来する。
【0053】
出力バッファ107では、話速変換装置100で話速変換処理が開始された直後は、出力フレームに用いる音声データを保持していないが、音声データが所定以上(例えば、1出力フレーム分以上)溜まるまでの間、例えば、出力フレームの出力を保留したり、ダミー用の音声データ(例えば、無音データや、予め用意しておいたノイズ等の音声データ)を含む出力フレームを、データ出力部108に供給するようにしてもよい。また、出力バッファ107は、音声データの供給が開始された後でも、出力すべき音声データが1出力フレーム分未満となった場合にも、ダミー用の音声データを含む出力フレーム(出力バッファ107に残っている音声データで足りない分をダミー用の音声データで保管した出力フレームとしてもよい)を、データ出力部108に供給するようにしてもよい。
【0054】
そして、話速変換装置100で、話速変換処理が継続している場合には、出力バッファ107は上述のステップS101に戻って、次の出力フレーム送出タイミングまで待機する。一方、話速変換装置100で、話速変換処理が継続している場合には、出力バッファ107は、処理を終了する。
【0055】
次に、話速変換装置100において、入力された音声信号(音声データ)を伸長処理(話速を遅くする処理)し、出力バッファ107に供給するまでの処理について、図4、図5を用いて説明する。
【0056】
話速変換装置100で話速変換処理(話速を遅くする処理)が開始されると、データ入力部101では、入力される音声信号から音声データ(例えば、PCM形式のデータ)が生成され、生成された音声データについて入力フレームごとに分割して取得される(S201)。
【0057】
そして、データ入力部101では、入力フレームが取得されると、その入力フレームが話速変換処理バッファ102に供給される(S202)。
【0058】
この実施形態では、説明を簡易にするため、入力フレーム及び出力フレームのサンプリング間隔及びサンプル数は同じであるものとして説明する。以下では、入力フレーム及び出力フレームのサンプリング間隔はTsであり、サンプル数はnであるものとして説明する。
【0059】
そして、遅延制御部103では、今回の話速変換処理が開始されてから、過去に一度でも話速変換処理バッファ102に最低遅延量Td以上のデータを保持したことがあるかどうかが確認される(S203)。遅延制御部103で、話速変換処理バッファ102に最低遅延量Td以上のデータを保持したことがないと確認された場合には、話速変換装置100は、上述のステップS201に戻って動作する。一方、遅延制御部103で、話速変換処理バッファ102に最低遅延量Td以上のデータを保持したことがあると確認された場合には、後述するステップS204の処理に進む。
【0060】
そして、話速制御部104は、ユーザの操作等により、現在話速変換処理に適用している話速に関する設定変更が行われたか否かを確認し、設定変更が行われたと確認された場合には、話速変換処理に適用する伸長率Rsを、変更後に対応する値に変更する処理を行う(S204、S205)。
【0061】
そして、話速制御部104では、そして、話速制御部104で、過去にPICOLA処理部106から未処理データ期間Tuが報告されており、伸長率Rsを満たすための未処理データ期間Tu分の音声データの出力バッファ107への供給が完了しているか否か(すなわち、伸長率Rsが満たされている状態であるか否か)について確認が行われる(S206)。
【0062】
そして、話速制御部104で、伸長率Rsが満たされている状態でないと確認された場合には、話速制御部104は、話速変換処理バッファ102を制御して、未処理データ期間Tu分の音声データを出力バッファ107に供給(未処理データ期間Tu分に満たない場合は現時点で供給可能な音声データを出力バッファ107に供給)させる(S207)。そして、話速変換装置100は後述するステップS214から動作する。
【0063】
一方、話速制御部104で、伸長率Rsが満たされている状態であると確認された場合には、ピッチ抽出部105により、ピッチ探索範囲Tp分の音声データ(ピッチ探索に必要な量の音声データ)が、話速変換処理バッファ102に保持されているか否かが確認される(S208)。
【0064】
そして、ピッチ抽出部105により、ピッチ探索範囲Tp分の音声データが、話速変換処理バッファ102に保持されていないと判断された場合には、話速変換装置100は、上述のステップS201の処理に戻り、次の入力フレームを取得する処理から動作する。
【0065】
一方、ピッチ抽出部105により、ピッチ探索範囲Tp分の音声データが、話速変換処理バッファ102に保持されていると判断された場合には、ピッチ抽出部105によりピッチ候補が抽出され(S209)、当該ピッチ候補が伸長処理に用いるものとして適当であるか否かが判定される(S210)。
【0066】
ステップS210で、当該ピッチ候補が伸長処理に用いるものとして適当ででないと判定された場合には、ピッチ抽出部105は、話速変換処理バッファ102を制御して、当該ピッチ候補の音声データを、直接出力バッファ107に供給させる(S211)。そして、話速変換装置100は、後述するステップS214の処理から動作する。
【0067】
一方、ステップS210で、当該ピッチ候補が伸長処理に用いるものとして適当であると判定された場合には、ピッチ抽出部105は、話速変換処理バッファ102を制御して、当該ピッチ候補の音声データを、ピッチWの音声データとして、PICOLA処理部106に供給させる。そして、話速変換装置100は、後述するステップS212の処理から動作する。
【0068】
ピッチWの音声データが供給されるとPICOLA処理部106は、そのピッチWの音声データ(音声波形)に基づいて、話速変換処理バッファ102に保持された音声データの伸長に用いる音声データ(ピッチWと同じ長さの音声データ)を生成する(S212)。
【0069】
そして、PICOLA処理部106は、ピッチWの波形の長さTwに応じた伸長処理用データ期間Tgを、話速制御部104に問い合わせて取得する。そして、PICOLA処理部106は、伸長処理用データ期間Tgを取得すると、話速変換処理バッファ102で保持された音声データのうち、ピッチWに続く伸長処理用データ期間Tg分の音声データを取得する。そして、PICOLA処理部106は、取得したピッチWの音声データと、伸長処理用データ期間Tgの音声データとの間に、生成した音声データを挿入した音声データを、出力バッファ107に供給する(S213)。なお、話速変換処理バッファ102に、伸長処理用データ期間Tg分の音声データが残っていない場合には、PICOLA処理部106は、足りない分の長さ(未処理データ期間Tu)を、話速制御部104に報告する。
【0070】
そして、上述のステップS211、又はS214の処理が終了すると、ピッチ抽出部105では、話速変換処理バッファ102にピッチ探索範囲Tp分の音声データが保持されているか否かが確認される(S214)。
【0071】
ステップS214で、ピッチ抽出部105により、話速変換処理バッファ102にピッチ探索範囲Tp分の音声データが保持されていると確認された場合には、話速変換装置100は、上述のステップS209の処理から動作して再度ピッチ候補の抽出処理を行う。
【0072】
一方、話速変換処理バッファ102にピッチ探索範囲Tp未満の分しか、話速変換処理バッファ102に音声データが保持されていないと確認された場合には、話速変換装置100では、話速変換処理が継続している限り、上述のステップS201に戻って動作する。
【0073】
次に、話速変換装置100が、上述の図3〜図5のフローチャートに従って動作した場合の、話速変換処理バッファ102及び出力バッファ107に保持される音声データの遷移について、図6〜図9のタイミングチャートを用いて説明する。
【0074】
ここでは、出力フレーム及び入力フレームを構成するサンプル数n=80、伸長率Rs=1.25、ピッチ探索範囲Tp=240サンプル分の期間(Ts×120の期間)であるものとして説明する。
【0075】
図6〜図9のタイミングチャートでは、タイミングT0の時点から話速変換装置100が話速変換処理を開始している。そして、図6〜図9のタイミングチャートでは、タイミングT1、T2、T3、T4、T5…、のそれぞれのタイミングが、出力フレームを出力バッファ107から出力すべきタイミングを示している。例えば、タイミングT1の時点は、タイミングT0から80サンプル分の時間(Ts×80の時間)が経過した時点を示しており、タイミングT2の時点は、タイミングT0から160サンプル分の時間(Ts×160の時間)が経過した時点を示していることになる。
【0076】
ここでは、説明を容易にするために、まず、最低遅延量Td=ピッチ探索範囲Tpとした場合の話速変換処理バッファ102及び出力バッファ107に保持される音声データの遷移について、図6、図7を用いて説明する。
【0077】
図6では、最低遅延量Td=ピッチ探索範囲Tpとし、PICOLA処理部106による伸長処理が行われる場合の話速変換処理バッファ102及び出力バッファ107に保持される音声データの遷移について示している。
【0078】
図6では、タイミングT3の時点で、最低遅延量Td分の音声データ(240サンプル)が溜まることになるため、ピッチ抽出部105によりTw1の長さのピッチW1が抽出されたものとする。そして、ピッチW1は、ピッチ抽出部105により伸長処理に適用するものとして適当と判定され、さらに、PICOLA処理部106によりピッチW1を用いた音声波形の音声データが生成されたものとする。なお、ここでは、Tw1=45サンプル分の期間であるものとする。そうすると、話速制御部104では、伸長処理用データ期間Tg1=(Tw1/(Rs−1))−Tw1=(45/(1.25−1))−45=135サンプル分の期間となる。
【0079】
したがって、図6に示すように、PICOLA処理部106は、タイミングT3の時点で、ピッチW1(Tw1)の音声データ、ピッチW1に基づいて生成した音声データ、伸長処理用データ期間Tgの音声データ(180サンプル)を保持して、データ出力部108に供給することになる。すなわち、この時点で、データ出力部108には、45+45+135=225サンプル分の音声データが保持されることになる。そして、タイミングT3の時点で、話速変換処理バッファ102には240−225=15サンプル分の音声データしか保持されていない状態になるため、少なくともタイミングT6の時点までは、話速変換処理バッファ102にピッチ探索範囲Tp分の音声データ(240サンプル)が溜まらないため、伸長処理は行われない。したがって、タイミングT3〜T6の期間、データ出力部108には、新たな音声データが供給されない状態となる。
【0080】
そうすると、出力バッファ107では、タイミングT3の時点で、出力フレームF1(80サンプル分の音声データ)を出力し、さらに、タイミングT4の時点で、出力フレームF2(80サンプル分の音声データ)を出力することになる。すなわち、タイミングT4の時点で、データ出力部108には、225−80−80=65フレーム分の音声データしか残っていないため、タイミングT5の時点になっても正常な出力フレームを生成して出力することができないことになる。
【0081】
以上のように、最低遅延量Td=ピッチ探索範囲Tpとした場合には、1回目の伸長処理の後、2回目のピッチ探索に必要な最低遅延量Td分のデータが溜まる前に出力バッファ107に1出力フレーム分のデータがなくなる状況が発生してしまう場合がある。
【0082】
図7では、最低遅延量Td=ピッチ探索範囲Tpとし、PICOLA処理部106による伸長処理が行われなかった場合(抽出したピッチ候補が伸長処理に用いることに不適当だった場合)の話速変換処理バッファ102及び出力バッファ107に保持される音声データの遷移について示している。
【0083】
図7では、タイミングT3の時点で、最低遅延量Td分の音声データ(240サンプル)が溜まることになるため、ピッチ抽出部105によりTw1の長さのピッチW1(ピッチ候補)が抽出されたものとする。そして、ピッチW1は、ピッチ抽出部105により伸長処理に適用するものとして不適当と判定され、話速変換処理バッファ102から出力バッファ107に出力されることになる。なお、ここでは、Tw1=45サンプル分の期間であるものとする。したがって、図7では、タイミングT3の時点で、出力バッファ107には45サンプル分の音声データが保持されることになるが、1出力フレーム分の音声データ(80サンプル)には満たないため、正常な音声データを挿入した出力フレームを出力することができない状態が継続することになる。
【0084】
次に、上述の実施形態と同様に、ピッチ探索範囲Tp=240、最低遅延量Td=240+80−1=319サンプル(上記の(1)式を用いて算出した長さ)とした場合の話速変換処理バッファ102及び出力バッファ107に保持される音声データの遷移について、図8、図9を用いて説明する。
【0085】
図8では、ピッチ探索範囲Tp=240サンプル、最低遅延量Td=319サンプルとし、PICOLA処理部106による伸長処理が行われる場合の話速変換処理バッファ102及び出力バッファ107に保持される音声データの遷移について示している。すなわち、図8のタイミングチャートは、最低遅延量Td以外については、上述の図6と同様の条件となった場合について示している。
【0086】
図8では、タイミングT4の時点で、最低遅延量Td分以上の音声データ(320サンプル)が溜まることになるため、ピッチ抽出部105によりTw1の長さのピッチW1が抽出されたものとする。そして、ピッチW1は、ピッチ抽出部105により伸長処理に適用するものとして適当と判定され、さらに、PICOLA処理部106によりピッチW1を用いた音声波形の音声データが生成されたものとする。なお、ここでは、Tw1=45サンプル分の期間であるものとする。そうすると、話速制御部104では、図6の場合と同様に、伸長処理用データ期間Tg1=135サンプル分の期間が算出される。
【0087】
また、図8に示すように、PICOLA処理部106は、タイミングT4の時点で、ピッチW1(Tw1)の音声データ、ピッチW1に基づいて生成した音声データ、伸長処理用データ期間Tgの音声データ(135サンプル)を保持して、データ出力部108に供給することになる。すなわち、この時点で、データ出力部108には、225サンプル分の音声データが保持されることになる。そして、タイミングT4の時点で、話速変換処理バッファ102には320−225=95サンプル分の音声データが保持されることになる。そして、話速変換処理バッファ102では、タイミングT6の時点で、話速変換処理バッファ102にピッチ探索範囲Tp分以上の音声データが溜まり、データ出力部108に新たな音声データが供給されることになる。
【0088】
一方、出力バッファ107では、タイミングT4の時点で、出力フレームF1(80サンプル分の音声データ)を出力し、さらに、タイミングT5の時点で、出力フレームF2(80サンプル分の音声データ)を出力することになる。そして、図8の例では、タイミングT6の時点では、出力バッファ107に新たな音声データが供給されることになる。
【0089】
したがって、図8の例では、最低遅延量Tdについて上記の(1)のように設定することにより、図6の場合の例と異なり、出力バッファ107で出力フレームを出力すべきタイミングが到来しても、出力バッファ107に1出力フレーム分以上のデータを保持することが出来る。
【0090】
図9では、ピッチ探索範囲Tp=240サンプル、最低遅延量Td=319サンプルとし、PICOLA処理部106による伸長処理が行われない場合の話速変換処理バッファ102及び出力バッファ107に保持される音声データの遷移について示している。すなわち、図9のタイミングチャートは、最低遅延量Td以外については、上述の図7と同様の条件となった場合について示している。
【0091】
図9では、タイミングT4の時点で、話速変換処理バッファ102に、最低遅延量Td分以上の音声データ(320サンプル)が溜まることになるため、ピッチ抽出部105によりTw1の長さのピッチW1(ピッチ候補)が抽出されたものとする。そして、ピッチW1は、ピッチ抽出部105により伸長処理に適用するものとして不適当と判定され、話速変換処理バッファ102から出力バッファ107に出力されることになる。なお、ここでは、Tw1=45サンプル分の期間であるものとする。
【0092】
そして、この時点では、話速変換処理バッファ102には、320−45=275サンプルの音声データが残っており、ピッチ探索範囲Tp(240サンプル分)より多いため、ピッチ抽出部105は、タイミングT4の時点で、連続してピッチ候補の探索を行うことができる。そして、ピッチ抽出部105では、2回目のピッチ候補探索で、Tw2の長さのピッチW2(ピッチ候補)が抽出されたものとする。そして、ピッチW2は、ピッチ抽出部105により伸長処理に適用するものとして不適当と判定され、話速変換処理バッファ102から出力バッファ107に出力されたものとする。なお、ここでは、Tw2=45サンプル分の期間であるものとする。
【0093】
そうすると、データ出力部108では、タイミングT4の時点で、45+45=90サンプル分の音声データを保持することができ、図7の例と異なり、出力フレームを出力することができる。
【0094】
したがって、図9の例では、図7の場合の例と異なり、ピッチ候補がそのまま出力バッファ107に供給されても、話速変換処理バッファ102にピッチ探索範囲Tp以上の音声データが残っているため、ピッチ抽出部105では、同一フレーム内(同一タイミング)で複数回ピッチ探索を行うことができる。すなわち、図9の例では、最低遅延量Tdについて上記の(1)式のように設定することにより、図7の場合の例と異なり、出力バッファ107で出力フレームを出力すべきタイミングが到来しても、出力バッファ107に1出力フレーム分以上のデータを保持できる可能性が高くなることになる。
【0095】
(A−3)第1の実施形態の効果
第1の実施形態によれば、以下のような効果を奏することができる。
【0096】
(A−3−1)話速変換装置100では、PICOLA処理部106による伸長処理を開始する前に、ピッチ探索範囲Tp以上の音声データを、初期に話速変換処理バッファ102で保持することで、出力バッファ107に、1出力フレーム分以上の音声データが保持されやすい状態とすることができる。
【0097】
(A−3−2)初期に話速変換処理バッファ102で保持するデータ量が多い方が、出力バッファ107で保持するデータ量を枯渇しにくくさせることはできるが、話速変換処理による遅延量(データ入力部101に音声データが入力されてから、データ出力部108で出力されるまでの時間)が大きくなってしまうと、処理品質(リアルタイム性)が劣化してしまう。そこで、この実施形態の話速変換装置100では、出力バッファ107に1出力フレーム分以上の音声データを保持するために必要な最低限の最低遅延量Tdとして、「ピッチ探索範囲Tp+1フレーム−1サンプル」を設定している。
【0098】
次に、最低遅延量Tdとして、「ピッチ探索範囲Tp+1フレーム−1サンプル」が望ましい理由について説明する。
【0099】
出力バッファ107に1出力フレーム分のデータがなくなるという問題が発生する例として、上述の図6の条件(以下、「第1の条件」と呼ぶ)と、上述の図7の条件(以下、「第2の条件」と呼ぶ)について説明した。このうち、第2の条件は、第1の例の伸長率が1.0倍のときと同じであると見なせる。つまり第2の条件で発生する問題を回避できることが示せれば、同時に第1の条件で発生する問題も回避できる。何故なら第1の条件は伸長率Rs>1.0で必ず伸長処理を行うので、第2の条件よりも出力バッファ107のデータは増えるからである。
【0100】
第2の条件でも、ピッチ候補W分の期間(以下、「TW」と呼ぶ)が、1出力フレーム分の期間(以下、「TF」と呼ぶ)と同じかTFの倍数である場合は、上述の問題は発生しない。出力バッファ107供給される期間は常にTF分の期間の倍数なので、入力されたデータをそのまま供給することができるからである。上述の問題が発生するのは、ピッチ候補Wの期間TWが、それ以外の値の場合である。なお、ここでは、各「期間(データ長)」について、音声データを構成するサンプル数(サンプリング間隔は全て同一であるものとする)を単位として表わすものとする。
【0101】
以下に、上述の第2の例(図7に示す例)において、上述の問題を回避できる最低遅延量Tdとして望ましい値がどのように求められるのかを示す。なお、以下の例では、TWの最大値はTp/2とするが、これに限定せずTd分まで抽出するようにしても良い。また、以下の例ではTp>=TFとする。また、以下の例では、TF=80(サンプル)、Tp=240(サンプル)であるものとする。
【0102】
まず、TWが1*TF未満の場合(1<=TW<=79の場合)について説明する。
【0103】
この場合、図7に示す1回目のピッチ探索(ピッチ抽出)では、出力バッファ107にTF分のデータがたまらないため、同一フレーム処理内でもう一度ピッチ抽出を行う必要がある。話速変換処理バッファ102で保持されている音声データの期間をP、初期値をXとすると、一回目のピッチ抽出後の期間は(X−1)<=P<=(X−79)である。このときPは、Tp分以上のデータであればよいから、必要なXの最大値はX−79<=24、X=319となる。
【0104】
次に、TWが1*TFより大きく、2*TF未満のとき(81<=TW<=159の場合)について説明する。
【0105】
この場合、1回目のピッチ抽出の結果、話速変換処理バッファ102で保持される期間は(X−81)<=P<=(X−159)となっている。また出力バッファ107には1*TF以上2*TF分未満存在することになるので、出力バッファ107からの出力フレームの出力は可能となる。しかし、出力バッファ107では、次に出力フレームを出力すべきタイミングとなったときに、TF分のデータは残らないことになるため、次の出力フレームの出力タイミングでは、必ずピッチ抽出を行う必要がある。したがって、この場合、次の出力フレームを出力すべきタイミングで、DF分のデータ入力後に話速変換処理バッファ102にTp分以上のデータが存在すればよいので、必要なXの最大値はX−159+80=240、X=319となる。このXの値が最低遅延量Tdとなり、これは2*F<W<3*F、3*F<W<4*Fの場合も同じである。
【0106】
以上から、上述の問題が発生しにくくなる最小のTdは、以下の(4)式により導きだすことができる。なお、以下の(4)式では、TW≠n*TF(n=0、1、2、…)、Tp>TFであるものとする。なお、以下の(4)式では、「int(TW/TF)は「TW/TF」の整数部分を示している。また、以下の(4)式では、「max{TW−int(W/TF)*TF}」は、nを「n=0、1、2、…」と変化させた場合の「TW−int(W/TF)*TF」の最大値を示しており、計算すると以下の(5)式に示す結果となる。したがって、以下の(6)式に示すように、Tdとしては、上述の「ピッチ探索範囲Tp+1フレーム−1サンプル」が望ましいという結果が得られる。
【0107】
Td=Tp+max{TW−int(TW/TF)*TF} …(4)
max{TW−int(TW/TF)*TF}=TF−1 …(5)
Td=Tp+TF−1 …(6)
以上のように、話速変換装置100では、出力バッファ107に1出力フレーム分以上の音声データを保持することにより、安定した精度で話速変換処理をリアルタイムに実行することが可能となる。
【0108】
その結果、話速変換装置100を利用することにより、テレビやラジオ、電話などリアルタイムに音声を処理する機器に話速変換を行うことが可能となる。また、話速変換装置100を利用することにより、ユーザはこれらの機器の使用中いつでも話速変換を実行することができ、また話速変換の実行中であっても任意の話速に変更することができる。
【0109】
(B)第2の実施形態
以下、本発明による音声信号処理装置及びプログラムの第2の実施形態を、図面を参照しながら詳述する。なお、第1の実施形態の音声信号処理装置は、話速変換装置である。
【0110】
(B−1)第2の実施形態の構成
図10は、第2の実施形態の話速変換装置100Aの機能的構成を示すブロック図である。なお、図10では、上述の図1と同一又は対応する部分には、同一又は対応する符号を付している。以下、第2の実施形態について、第1の実施形態との差異を説明する。
【0111】
話速変換装置100Aでは、音声区間検出部109及び遅延回復部110が追加されている点で、第1の実施形態と異なっている。
【0112】
第1の実施形態の話速変換装置100では、話速変換処理を継続すると、音声信号(音声データ)は次々と伸長処理されるため、遅延が際限なく増加し、それにともない出力バッファ107で保持される音声データも増大してしまう。その結果、例えば、当該話速変換装置100を電話装置等の電話通信に適用し、リアルタイムに話速変換処理を行う場合には、話者間のコミュニケーションに不具合が生じてしまうことになる。
【0113】
そこで、第2の実施形態の話速変換装置100Aでは、音声区間検出部109及び遅延回復部110を追加して、遅延回復機能に対応させ、上述のような問題点に対応している。
【0114】
なお、ここでいう遅延とは、例えば、話速変換装置において、伸長処理により、話速変換処理バッファ102で最新に入力された音声データに対応する時刻(サンプルの時系列上の時刻)と、出力バッファ107で出力する音声データに対応する時刻との差分である。
【0115】
そして、遅延回復機能とは、例えば、話速変換装置において、伸長処理により一定時間以上の遅延が発生していた場合、最新に入力される音声信号に含まれる非音声区間(無音区間)を話速変換処理バッファ102から削除することで、遅延時間を短縮する機能である。
【0116】
音声区間検出部109は、データ入力部201が取得した1フレーム分の音声データ(音声信号)に対し、当該入力フレームの音声データが示す音声信号が音声区間(有音区間)であるのか、非音声区間(無音区間)であるのかを判定する。音声区間検出部109において有音区間を検出する処理については、既存の処理構成(例えば、音響特徴量として、入力信号のパワー、零交差、相関関数等を用いる方法)を適用することができる。なお、音声区間検出部109については、データ入力部101の中に組み込み、データ入力部101で入力フレームを生成する際に音声区間の検出処理を行うようにしてもよい。
【0117】
そして、音声区間検出部109は、取得した入力フレームが非音声区間のものであった場合には、当該入力フレームを、遅延回復部110に引き渡す。
【0118】
遅延回復部110は、音声区間検出部109から非音声区間の入力フレームが供給されると、話速変換処理バッファ203を制御して、溜まっている音声データを全て出力バッファ208へ出力させる。そして、遅延回復部110は、出力バッファ107に溜まっている音声データの量が所定以上の場合(ここでは、例として最低遅延量Td以上とする)、最新に取得した入力フレームを削除(破棄)して、遅延回復を図る。一方、出力バッファ107に溜まっている音声データの量が所定未満の場合(ここでは、例として最低遅延量Td未満とする)、遅延回復部110は、最新に取得した入力フレームを、出力バッファ107に供給する。
【0119】
(B−2)第2の実施形態の動作
次に、以上のような構成を有する第2の実施形態の話速変換装置100Aの動作を説明する。
【0120】
第2の実施形態の話速変換装置100Aは、上述の遅延回復機能に係る音声区間検出部109及び遅延回復部110の動作が追加されるだけで、その他は第1の実施形態と同様である。具体的には、第2の実施形態では、第1の実施形態の動作のステップS201とステップS202との間で、上述の遅延回復機能に係る音声区間検出部109及び遅延回復部110の動作が挿入される。
【0121】
図11では、第2の実施形態の話速変換装置100Aで、上述のステップS201とステップS202との間に挿入される、遅延回復機能に係る音声区間検出部109及び遅延回復部110の動作について示している。図11では図示を省略しているが、その他の動作については、第1の実施形態と同様である。
【0122】
第2の実施形態の話速変換装置100Aでは、上述のステップS201において、データ入力部101で入力フレームが取得されると、音声区間検出部109により、当該入力フレームについて音声区間であるか否かが判定される(S301)。
【0123】
そして、ステップS301において入力フレームについて音声区間と判定された場合には、話速変換装置100Aでは、上述のステップS202により当該入力フレームが話速変換処理バッファ102に入力され、以後の処理は第1の実施形態と同様の処理となる。
【0124】
一方、ステップS301において入力フレームについて音声区間と判定された場合には、音声区間検出部109により、当該入力フレームは、遅延回復部110に供給される。そして、遅延回復部110は、話速変換処理バッファ203を制御して、溜まっている音声データを全て出力バッファ208へ出力させる(S302)。
【0125】
そして、遅延回復部110は、出力バッファ107に溜まっている音声データの量が最低遅延量Td以上であるか否かを判定する(S303)。
【0126】
上述のステップS303で、出力バッファ107に溜まっている音声データの量が最低遅延量Td以上であると判定された場合には、遅延回復部110は、最新に取得した入力フレームを削除(破棄)して、遅延回復を図る(S304)。そして、話速変換装置100Aは上述のステップS201に戻って動作する。すなわち、遅延回復部110は、話速変換処理バッファ102及び出力バッファ107に溜まっている音声データの合計量が、最低遅延量Td以上となっている状態の場合には、遅延量が所定以上になっているものと判断し、遅延回復処理(非音声区間の入力フレームを破棄)を行う。
【0127】
一方、上述のステップS303で、出力バッファ107に溜まっている音声データの量が最低遅延量Td未満であると判定された場合には、遅延回復部110は、最新に取得した入力フレームを、出力バッファ107に供給する(S305)。そして、話速変換装置100Aは上述のステップS201に戻って動作する。
【0128】
(B−3)第2の実施形態の効果
第2の実施形態によれば、第1の実施形態に加えて以下のような効果を奏することができる。
【0129】
話速変換装置100Aでは、出力バッファ107に最低遅延量Tdのデータを保持しつつ、非音声区間の音声データを削除(破棄)している。これにより、話速変換装置100Aでは、1出力フレーム分の音声データが、出力バッファ107にない状況を発生させずに、遅延を短縮(遅延回復)させることができる。これにより、話速変換装置100Aでは、出力バッファ107に必要とされるメモリ量を抑制するとともに、遅延量を抑制して、安定した話速変換処理を行うことができる。
【0130】
(C)他の実施形態
本発明は、上記の各実施形態に限定されるものではなく、以下に例示するような変形実施形態も挙げることができる。
【0131】
(C−1)上記の各実施形態の話速変換装置では、話速を遅くする処理を行う場合についてのみ説明したが、上記の各実施形態の話速変換装置で、話速を早くする処理(例えば、既存の話速変換処理を適用するようにしても良い)についても処理可能な構成としても良い。
【0132】
(C−2)上記の各実施形態の話速変換装置では、遅延制御部は、話速変換装置が処理を開始した直後にのみ、話速変換処理バッファに最低遅延量Tdの音声データが溜まるまで、PICOLA処理部による話速変換処理を保留する処理をおこなっているが、その他のタイミングでも同様の処理を行うようにしても良い。
【0133】
例えば、話速変換装置で、遅延量が一定以上となった場合に、話速変換処理バッファ102及び出力バッファ107で保持している音声データをリフレッシュ(全てのデータを消去)した後、話速変換処理バッファに最低遅延量Tdの音声データが溜まるまで、PICOLA処理部による話速変換処理を保留するようにしても良い。
【0134】
(C−3)上記の各実施形態で、遅延制御部は、伸長処理により遅延が際限なく増えることを防ぐため、話速変換装置で遅延量が一定量を超えた場合、伸長処理を中止するように他の処理構成を制御する機能(遅延制限機能)に対応させるようにしてもよい。
【符号の説明】
【0135】
100…話速変換装置、101…データ入力部、102…話速変換処理バッファ、103…遅延制御部、104…話速制御部、105…ピッチ抽出部、106…PICOLA処理部、107…出力バッファ、108…データ出力部。
【技術分野】
【0001】
この発明は、音声信号処理装置及びプログラムに関し、例えば、話者の声質を保ちながら話す速度を変化させる話速変換装置に適用し得る。
【背景技術】
【0002】
従来、話者の声質を保ちながら話す速度を変化させる音声信号処理(話速変換処理)において、従来、音声に含まれる周期性を利用し、時間軸上で伸長・圧縮するPICOLA(Pointer Interval Control Overlap and Add)という手法がある(非特許文献1参照)。PICOLAとは、音声データより抽出したピッチ(基本周期の音声信号の波形)から、ピッチとその後に続く波形とを滑らかに繋ぐことのできる音声波形を生成し、さらに生成した音声波形を挿入した後に、所定のデータ長を出力することにより、もとの音声を圧縮または伸長する技術である。以下では、従来のPICOLAのアルゴリズムについて、話速を遅くする(音声を伸張する)場合の説明を行う。
【0003】
PICOLAでは、任意の長さに音声を伸張するために、音声中に繰り返し現れる周期性のある波形であるピッチを利用する。ピッチは音声データの所定のピッチを探索ための期間の音声データ(以後「ピッチ探索範囲TP」と呼ぶ)から自己相関関数などを用い抽出される。抽出されたピッチを用い、図12に示すように、まずピッチWの波形Aをフェードイン、続く波形Aと同じ長さの波形Bをフェードアウトした波形A’、B’を生成する。この波形A’とB’を足し合わせる(合成する)ことにより、波形A,Bと滑らかに繋がる伸長用の波形Cが生成される。この波形Cを波形Aと波形Bの間に挿入することにより音声波形の伸長が可能となる。挿入された波形Cの長さはピッチWの長さ(以下、「Tw」とも呼ぶ)と同じであるから、もとの音声信号の長さをLとすると伸長後の長さはL+Twとなる。所望の伸長率をRsとしたとき、もとの長さに対して伸長後の長さがR倍になれば良いからRs=(L+Tw)/Lとなる。これより伸長率Rsを満たすために必要な原信号の長さはL=Tw/(Rs−1)となる。例として伸長率Rsが1.25倍のとき、ピッチの長さWが100サンプルだったとすると、L=400サンプルとなる。原信号400サンプルに生成した100サンプルを加えて出力すれば、(出力サンプル数500)/(原信号サンプル数400)で伸長率1.25倍を実現出来る。
【0004】
PICOLAによる伸長処理のサイクルを図13に示す。まずピッチ探索範囲Tp分のデータを取得してからピッチW1を抽出し、ピッチから音声波形を生成し、所望の伸長率に必要な分の音声データを出力する。音声データを出力した最後のポイントP1が次の処理の開始地点となる。P1から数えてピッチ探索範囲Tp以上の音声データを取得したら再びピッチを抽出し、伸長処理を実行する。以上の処理を繰り返すことにより、話速を任意の早さに変換することができる。
【0005】
通常、予め設定したサンプル数nを1フレームとし、フレーム単位で処理及び出力を行う場合、話速変換をリアルタイムで実行するためには、1フレーム分の時間の経過ごとに1フレーム分のデータの処理が完了していなければならない。以下では、話側変換装置が、リアルタイムに音声データを変換処理し、出力するフレームを「出力フレーム」と呼ぶものとする。そして、フレーム単位でリアルタイムに処理を行う話側変換装置では、1出力フレーム分の時間経過ごとに、1出力フレーム分の処理済みの音声データをバッファ(以下、「出力バッファ」と呼ぶ)に保持していなければならない。しかし、話速変換装置では、出力フレームを出力すべきタイミングになっても、出力バッファに1出力フレーム分の処理済みの音声データが保持されていない場合には、出力フレームを出力することができず、出力フレームの被供給側での音声信号の途切れや、その後の処理に異常を引き起こす原因となる。
【0006】
話速変換(話速を遅く変換する場合)のアルゴリズムとしてPICOLAを用いる話側変換装置では、出力フレームを出力すべきタイミングとなっても、出力バッファに1出力フレーム分の処理済みの音声データが保持できない状況としては、大きく分けて、以下の2つの種類の条件が挙げられる。
【0007】
第1の条件としては、従来の話速変換装置において、処理前の音声データからピッチ抽出後に伸長処理を行う場合がある。具体的には、従来の話速変換装置において、処理前の音声データが、ピッチ探索範囲Tp分バッファされておらず、さらに、出力バッファの音声データ(伸長処理後の音声データ)が、1出力フレーム分以下しか残っていない状態で、次の出力フレームを出力すべきタイミングが訪れた場合である。
【0008】
第2の条件としては、従来の話速変換装置において、処理前の音声データからピッチ候補を抽出したが、当該ピッチ判定基準に基づいて伸長処理が行われない場合がある。入力音声信号には、常に音声のピッチが含まれているとは限らず、自然に話速変換するためには、無声子音や非音声区間を避けて母音や有声子音を伸長しなくてはならない。そのため、従来の話速変換装置において、ピッチ探索の結果、得られたピッチ候補が、伸長処理に用いるピッチとして適当なものであるか否かを判定する必要がある。従来の話速変換装置では、例えば、先頭から所定範囲の音声データが、ピッチ候補として抽出され、さらに、当該ピッチ候補が伸長処理に用いるピッチとして適当でないと判定された場合、当該ピッチ候補の音声データは伸長処理されずにそのまま出力(出力バッファで保持)される。フレーム単位で、音声データを出力する話速変換装置では、ピッチ候補となる音声データのデータ長は、出力フレームのデータ長よりも短くなる可能性がある。その場合、従来の話速変換装置において、出力バッファに伸長処理に利用されなかったピッチ候補の音声データのみが保持された状態で、次のフレームを出力すべきタイミングが訪れると、出力フレームを正常に出力できないことになる。
【0009】
特許文献1では、上述のような、従来の話速変換装置の課題に対する解決案が記載されている。特許文献1に記載された装置では、PICOLAによる伸長処理終了後、バッファにピッチ探索範囲Tp分のデータがなくても、前回の処理のピッチ情報を再利用し、同一フレーム内でもう一度伸長処理を実行する。特許文献1では、これにより、出力データのないフレームの発生を回避できる旨が記載されている。
【先行技術文献】
【特許文献】
【0010】
【特許文献1】特開2006−3517号公報
【非特許文献】
【0011】
【非特許文献1】森田直孝,板倉文忠、「ポインター移動制御による重複加算法(PICOLA)を用いた音声の時間軸での伸長圧縮とその評価」、日本音響学会講演論文集、p.149−150、昭和61年10月
【発明の概要】
【発明が解決しようとする課題】
【0012】
しかしながら、特許文献1の記載技術では、話速変換をあらゆる環境下で安定して動作させることができないという問題がある。
【0013】
具体的には、特許文献1の記載技術の欠点は、大きく分けて以下の3つ挙げられる。
【0014】
まず第1に、特許文献1の記載技術では、少なくとも一回の伸長処理を必要としているため、ピッチ候補抽出後に伸長処理をしない場合には全く対応することが出来ないという問題がある。
【0015】
第2に、特許文献1の記載技術では、同一フレーム内で再び伸長処理を行う際に、出力バッファに伸長処理に十分なデータが残っているとは限らないという問題がある。つまり、特許文献1の記載技術では、少なくとも1回目の伸長処理で出力したデータ以上のデータが出力バッファに残っていなければ、特許文献1の記載技術は適用できないことになる。
【0016】
第3に、特許文献1の記載技術では、同一フレーム内での2度目の伸長の際、そのデータとは直接関係ない部分のピッチ情報を使うため、ピッチでない部分を伸張し、音質が劣化してしまうという問題がある。
【0017】
上述のような問題点に鑑みて、リアルタイムに音声信号の音声データについて話速変換処理を行う際に、安定的に話速変換処理後の音声データを出力することができる音声信号処理装置及びプログラムが望まれている。
【課題を解決するための手段】
【0018】
第1のホン発明の音声信号処理装置は、(1)入力音声信号の音声データを蓄積する入力バッファ手段と、(2)上記入力バッファ手段に蓄積されている音声データに基づく音声信号波形について、探索周期分の音声信号波形から、基本周期を抽出し、抽出した基本周期の音声信号波形を利用して、入力バッファ手段に蓄積される音声データについて話速変換処理を行う話速変換手段と、(3)上記話速変換手段が話速変換処理した後の音声データを蓄積する出力バッファ手段と、(4)出力間隔ごとに、上記出力バッファ手段に蓄積している音声データのうち出力間隔分の音声データを含む出力音声データフレームを出力する音声データ出力手段と、(5)上記入力バッファ手段に、上記探索周期よりも長い最低蓄積期間以上の音声データが蓄積されてから、上記話速変換手段による話速変換処理を開始させる変換処理制御手段とを有することを特徴とする。
【0019】
第2の本発明の音声信号処理プログラムは、コンピュータを、(1)入力音声信号の音声データを蓄積する入力バッファ手段と、(2)上記入力バッファ手段に蓄積されている音声データに基づく音声信号波形について、探索周期分の音声信号波形から、基本周期を抽出し、抽出した基本周期の音声信号波形を利用して、入力バッファ手段に蓄積される音声データについて話速変換処理を行う話速変換手段と、(3)上記話速変換手段が話速変換処理した後の音声データを蓄積する出力バッファ手段と、(4)出力間隔ごとに、上記出力バッファ手段に蓄積している音声データのうち出力間隔分の音声データを含む出力音声データフレームを出力する音声データ出力手段と、(5)上記入力バッファ手段に、上記探索周期よりも長い最低蓄積期間以上の音声データが蓄積されてから、上記話速変換手段による話速変換処理を開始させる変換処理制御手段として機能させることを特徴とする。
【発明の効果】
【0020】
本発明によれば、リアルタイムに音声信号の音声データについて話速変換処理を行う際に、安定的に話速変換処理後の音声データを出力することができる音声信号処理装置を提供することができる。
【図面の簡単な説明】
【0021】
【図1】第1の実施形態に係る話速変換装置の機能的構成を示すブロック図である。
【図2】第1の実施形態に係る話速変換装置で、ピッチ抽出処理の処理例について説明した説明図である。
【図3】第1の実施形態に係る話速変換装置で、出力フレームを出力する処理について示したフローチャートである。
【図4】第1の実施形態に係る話速変換装置で、入力フレームの取得から出力バッファに音声データを供給するまでの動作について示したフローチャート(その1)である。
【図5】第1の実施形態に係る話速変換装置で、入力フレームの取得から出力バッファに音声データを供給するまでの動作について示したフローチャート(その2)である。
【図6】第1の実施形態に係る話速変換装置で、最低遅延量をピッチ探索範囲と等しくした場合の動作の第1の例について示したタイミングチャートである。
【図7】第1の実施形態に係る話速変換装置で、最低遅延量をピッチ探索範囲と等しくした場合の動作の第2の例について示したタイミングチャートである。
【図8】第1の実施形態に係る話速変換装置で、最低遅延量をピッチ探索範囲よりも長く設定した場合の動作の第1の例について示したタイミングチャートである。
【図9】第1の実施形態に係る話速変換装置で、最低遅延量をピッチ探索範囲よりも長く設定した場合の動作の第2の例について示したタイミングチャートである。
【図10】第2の実施形態に係る話速変換装置の機能的構成を示すブロック図である。
【図11】第2の実施形態に係る話速変換装置で、入力フレームの取得から出力バッファに音声データを供給するまでの動作について示したフローチャートである。
【図12】従来の話速変換装置で行われるPICOLAによる波形伸長について示した説明図である。
【図13】従来の話速変換装置で行われるPICOLAによる伸長処理のサイクルを説明するための図である。
【発明を実施するための形態】
【0022】
(A)第1の実施形態
以下、本発明による音声信号処理装置及びプログラムの第1の実施形態を、図面を参照しながら詳述する。なお、第1の実施形態の音声信号処理装置は、話速変換装置である。
【0023】
(A−1)第1の実施形態の構成
図1は、この実施形態の話速変換装置100の機能的構成を示すブロック図である。
【0024】
話速変換装置100は、データ入力部101、話速変換処理バッファ102、遅延制御部103、話速制御部104、ピッチ抽出部105、PICOLA処理部106、出力バッファ107、及びデータ出力部108を有している。
【0025】
話速変換装置100は、例えば、CPU、ROM、RAM、EEPROM、ハードディスクなどのプログラムの実行構成を有する情報処理装置(1台に限定されず、複数台を分散処理し得るようにしたものであっても良い。)に、実施形態の音声信号処理プログラム等をインストールすることにより構築してもよく、その場合でも機能的には上述の図1のように示すことができる。
データ入力部101は、入力された入力音声信号(音響信号)から、所定のサンプル間隔Tsごとにサンプリングされた音声データ(例えば、PCM(Pulse Code Modulation)形式で生成された音声データ)を生成し、サンプル数nを1フレームとするフレーム単位で、分割して話速変換処理バッファ102に供給する。以下では、データ入力部101により生成されるフレームを「入力フレーム」と呼ぶものとする。
【0026】
この実施形態では、データ入力部101は、上述の通り、入力音声信号を符号化して入力フレームを生成して話速変換処理バッファ102に供給するものとして説明するが、データ入力部101が、話速変換処理バッファ102に供給する音声データを保持する方法や供給方法は限定されないものである。例えば、データ入力部101は、入力フレーム単位ではなく、1サンプル単位で話速変換処理バッファ102に音声データを供給するようにしても良い。また、データ入力部101は、例えば、既に符号化された音声データを外部装置から保持する(1度に保持するデータ量は限定されないものである)ようにしても良い。
【0027】
話速変換処理バッファ102は、データ入力部101から供給される入力フレームを保持し、遅延制御部103、話速制御部104、ピッチ抽出部105等の制御に従って、保持した入力フレームの音声データを、後段の処理構成(PICOLA処理部106)に供給する等の処理を行うものである。
【0028】
遅延制御部103は、話速変換処理バッファ102で保持されている音声データのデータ量に応じて、その他の処理構成(話速変換処理バッファ102、ピッチ抽出部105等)の動作を制御するものである。遅延制御部103は、話速変換装置100の処理開始直後等に、話速変換処理バッファ102で、最低遅延量Td(最低蓄積期間)分以上の音声データが保持されているかどうかを確認する。そして、遅延制御部103は、話速変換処理バッファ102で、最低遅延量Td以上の期間分の音声データが保持されていると確認した場合に、PICOLA処理部106等による伸張処理を開始させるように、他の処理構成を制御する。
【0029】
最低遅延量Tdとしては、少なくともピッチ探索範囲Tp以上の期間とする必要があるが、この実施形態では、以下の(1)式のように算出されるものであるものとする。一方、詳細については口述するが、話速制御部104では、開始時に設定した伸長率Rsから伸長率を達成するために必要なデータ長(音声データに対応する期間)が算出される。
【0030】
最低遅延量Td=ピッチ探索範囲Tp
+1出力フレーム分の期間−1サンプル分の期間 …(1)
ピッチ抽出部105は、話速変換処理バッファ102に保持されている音声データに対して、ピッチの探索を行う。ピッチ抽出部105は、ピッチ探索範囲Tp分の音声データが話速変換処理バッファ102にある場合に、話速変換処理バッファ102に保持されている音声データに対して、ピッチ候補の探索(抽出)を行う。
【0031】
ピッチ抽出部105は、例えば、話速変換処理バッファ102で保持されている音声データのピッチ探索範囲Tpの中から最も周期性の強いものをピッチ候補とし、当該ピッチ候補が、PICOLA処理部106で話速変換処理に用いるものとして適当であるか否かも判定する。ここでは、説明を簡易にするため、ピッチ抽出部105が抽出するピッチ候補は、話速変換処理バッファ102で保持されている音声データの先頭(時系列上の先頭)から始まる音声データであるものとする。
【0032】
そして、ピッチ抽出部105は、抽出したピッチ候補の音声データ(話速変換処理バッファ102時系列上の先頭から所定範囲の音声データ)について、話速変換処理に用いるものとして適当であるか否かを判定し、適当と判定した場合には、話速変換処理バッファ102を制御して、抽出したピッチの音声データと、当該ピッチの音声データに続く話側変換処理(伸長処理)に必要な長さ(以下、「伸長処理用データ期間Tg」と呼ぶ)の音声データを、PICOLA処理部106に供給させる。
【0033】
なお、伸長処理用データ期間Tgの長さは、話速制御部104により、伸長率Rsに応じて決定されるものである。
【0034】
一方、抽出したピッチ候補の音声データについて、話速変換処理に用いるものとして適当でないと判定された場合には、ピッチ抽出部105は、話速変換処理バッファ102を制御して、当該ピッチ候補の音声データについて、出力バッファ107に供給させる。
【0035】
ピッチ抽出部105によるピッチ候補の抽出処理は、例えば、相違度や自己相関係数などを利用するようにしてもよい。以下に、ピッチ抽出部105が、上述の相違度を用いてピッチ候補を抽出する処理の例について説明する。
【0036】
ピッチ抽出部105は、例えば、図2のように話速変換処理バッファ102の時系列上の先頭となる音声データ(図2の「ピッチ候補区間」)について、1サンプルずつずらしながら隣り合うデータ区間(図2の「比較対象区間」)との相違度を算出し、相違度が最も小さいものをピッチ候補とするものとする。 ピッチ抽出部105では、例えば、以下の(2)式を用いて、仮のピッチ候補区間と比較対象区間との相違度を算出するようにしてもよい。以下の(2)式で、fは、図2に示す仮のピッチ候補区間を示しており、fiは、f(ピッチ候補区間)の先頭からi番目のサンプル値を表している。また、以下の(2)式で、gは、図2に示す比較対象区間を示しており、giは、g(比較対象区間)の先頭からi番目のサンプル値を表している。
【数1】
【0037】
ピッチ抽出部105が、ピッチ探索を行う回数(相違度を算出する回数)は限定されないものであるが、例えば、所定の最大回数を限度として相違度を計算し、最も相違度が少ないものをピッチ候補区間として抽出するようにしてもよい。そして、ピッチ抽出部105は、相違度が所定の閾値未満である場合に、当該ピッチ候補を伸長処理に用いるものとして適当であると判定するようにしてもよい。
【0038】
ピッチ探索範囲Tpとしては、例えば、人間のピッチを探索するのに十分な範囲を設定することが望ましく、例えば、サンプリング周波数8kHzのとき20サンプルから120サンプルとするようにしてもよい。
【0039】
PICOLA処理部106は、ピッチ抽出部105で抽出したピッチWの音声データ(音声波形)に基づいて、話速変換処理バッファ102に保持された音声データの伸長に用いる音声データを生成する。PICOLA処理部106は、例えば、従来技術と同様に、クロスフェードを用いて、伸長処理に用いる音声データを生成するようにしても良い。
【0040】
そして、PICOLA処理部106は、ピッチWの波形の長さ(時間軸上の波形の長さであり、生成した音声データの波形の長さと同様)に応じた伸長処理用データ期間Tgを、話速制御部104に問い合わせて取得する。
【0041】
そして、PICOLA処理部106は、伸長処理用データ期間Tgを取得すると、話速変換処理バッファ102で保持された音声データのうち、ピッチWに続く伸長処理用データ期間Tg分の音声データを取得する。そして、PICOLA処理部106は、取得したピッチWの音声データと、伸長処理用データ期間Tgの音声データとの間に、生成した音声データを挿入した音声データを、出力バッファ107に供給する。
【0042】
なお、PICOLA処理部106は、話速変換処理バッファ102に、伸長処理用データ期間Tg分の音声データが残っていない場合には、足りない分の長さ(以下、「未処理データ期間Tu」と呼ぶ)を、話速制御部104に報告する。
【0043】
話速制御部104は、基準となる伸長率Rsのパラメータを保持し、保持した伸長率Rsにもとづいて、PICOLA処理部106からの問い合わせに応じて、伸長率Rsを満たすための伸長処理用データ期間Tgの長さを算出して、返答する。話速制御部104が、伸長率Rsを保持する方法は限定されないものであるが、例えば、予め設定しておくようにしても良いし、ユーザの操作に応じて変更可能な構成としても良い。
【0044】
話速制御部104は、PICOLA処理部106から、ピッチWの長さTwが通知されると、伸長率Rsを満たすための、当該ピッチWの長さTwに対応する伸長処理用データ期間Tgを算出する。そして、話速制御部104は、算出した伸長処理用データ期間Tgを、PICOLA処理部106に返答する。
【0045】
話速制御部104では、例えば、以下の(3)式を用いて、伸長処理用データ期間Tgを算出するようにしてもよい。
【0046】
Tg=(Tw/(Rs−1))−Tw …(3)
なお、話速制御部104は、PICOLA処理部106から未処理データ期間Tuが報告された場合には、話速変換処理バッファ102を制御して、未処理データ期間Tu分の音声データについてデータ出力部108に供給させる処理を優先させる。すなわち、未処理データ期間Tuが発生した場合、話速制御部104は、次に話速変換処理バッファ102に未処理データ期間Tu分の音声データが溜まると、話速変換処理バッファ102を制御して、次の伸長処理よりも優先して、その音声データを出力バッファ107に供給させる。
【0047】
出力バッファ107は、出力フレームを送出すべきタイミングが到来するごとに、出力フレーム1つ分の音声データを、データ出力部108に供給する。出力フレームがnサンプル分の音声データで構成されている場合には、出力フレームを送出すべきタイミングは、サンプル間隔Ts×nの期間ごとに到来することになる。
【0048】
話速変換装置100の動作開始直後等、出力バッファ107に保持されている音声データが、1出力フレーム分に満たない場合には、出力バッファ107は、例えば、無音データや、予め用意しておいたノイズ等のダミー用の音声データを含む出力フレームを、データ出力部108に供給するようにしてもよい。
【0049】
データ出力部108は、出力バッファ107から供給された出力フレームの音声データを所定の方法により出力するものである。データ出力部108が音声データを出力する方法については限定されないものであるが、例えば、スピーカ等の音声出力装置を備えて表音出力したり、所定のデータ記憶媒体(例えば、ハードディスクドライブ等)に記憶させたり、出力フレームの音声データをそのまま、又は符号化して、所定の形式のパケットに挿入し、送信先の通信装置に送出するようにしてもよい。
【0050】
(A−2)第1の実施形態の動作
次に、以上のような構成を有する第1の実施形態の話速変換装置100の動作を説明する。
【0051】
まず、話速変換装置100において、データ出力部108による、出力データフレームの出力処理について図3のフローチャートを用いて説明する。
【0052】
話速変換装置100で話速変換処理(話速を遅くする処理)が開始されると、まず、出力バッファ107は、次の出力フレーム送出タイミングが到来するまで待機し(S101)、出力フレーム送出タイミングが到来すると、1つの出力フレーム分の音声データをデータ出力部108に供給する(S102)。上述の通り、出力バッファ107で、出力フレームを出力すべきタイミングは、サンプル間隔Ts×nの期間ごとに到来する。
【0053】
出力バッファ107では、話速変換装置100で話速変換処理が開始された直後は、出力フレームに用いる音声データを保持していないが、音声データが所定以上(例えば、1出力フレーム分以上)溜まるまでの間、例えば、出力フレームの出力を保留したり、ダミー用の音声データ(例えば、無音データや、予め用意しておいたノイズ等の音声データ)を含む出力フレームを、データ出力部108に供給するようにしてもよい。また、出力バッファ107は、音声データの供給が開始された後でも、出力すべき音声データが1出力フレーム分未満となった場合にも、ダミー用の音声データを含む出力フレーム(出力バッファ107に残っている音声データで足りない分をダミー用の音声データで保管した出力フレームとしてもよい)を、データ出力部108に供給するようにしてもよい。
【0054】
そして、話速変換装置100で、話速変換処理が継続している場合には、出力バッファ107は上述のステップS101に戻って、次の出力フレーム送出タイミングまで待機する。一方、話速変換装置100で、話速変換処理が継続している場合には、出力バッファ107は、処理を終了する。
【0055】
次に、話速変換装置100において、入力された音声信号(音声データ)を伸長処理(話速を遅くする処理)し、出力バッファ107に供給するまでの処理について、図4、図5を用いて説明する。
【0056】
話速変換装置100で話速変換処理(話速を遅くする処理)が開始されると、データ入力部101では、入力される音声信号から音声データ(例えば、PCM形式のデータ)が生成され、生成された音声データについて入力フレームごとに分割して取得される(S201)。
【0057】
そして、データ入力部101では、入力フレームが取得されると、その入力フレームが話速変換処理バッファ102に供給される(S202)。
【0058】
この実施形態では、説明を簡易にするため、入力フレーム及び出力フレームのサンプリング間隔及びサンプル数は同じであるものとして説明する。以下では、入力フレーム及び出力フレームのサンプリング間隔はTsであり、サンプル数はnであるものとして説明する。
【0059】
そして、遅延制御部103では、今回の話速変換処理が開始されてから、過去に一度でも話速変換処理バッファ102に最低遅延量Td以上のデータを保持したことがあるかどうかが確認される(S203)。遅延制御部103で、話速変換処理バッファ102に最低遅延量Td以上のデータを保持したことがないと確認された場合には、話速変換装置100は、上述のステップS201に戻って動作する。一方、遅延制御部103で、話速変換処理バッファ102に最低遅延量Td以上のデータを保持したことがあると確認された場合には、後述するステップS204の処理に進む。
【0060】
そして、話速制御部104は、ユーザの操作等により、現在話速変換処理に適用している話速に関する設定変更が行われたか否かを確認し、設定変更が行われたと確認された場合には、話速変換処理に適用する伸長率Rsを、変更後に対応する値に変更する処理を行う(S204、S205)。
【0061】
そして、話速制御部104では、そして、話速制御部104で、過去にPICOLA処理部106から未処理データ期間Tuが報告されており、伸長率Rsを満たすための未処理データ期間Tu分の音声データの出力バッファ107への供給が完了しているか否か(すなわち、伸長率Rsが満たされている状態であるか否か)について確認が行われる(S206)。
【0062】
そして、話速制御部104で、伸長率Rsが満たされている状態でないと確認された場合には、話速制御部104は、話速変換処理バッファ102を制御して、未処理データ期間Tu分の音声データを出力バッファ107に供給(未処理データ期間Tu分に満たない場合は現時点で供給可能な音声データを出力バッファ107に供給)させる(S207)。そして、話速変換装置100は後述するステップS214から動作する。
【0063】
一方、話速制御部104で、伸長率Rsが満たされている状態であると確認された場合には、ピッチ抽出部105により、ピッチ探索範囲Tp分の音声データ(ピッチ探索に必要な量の音声データ)が、話速変換処理バッファ102に保持されているか否かが確認される(S208)。
【0064】
そして、ピッチ抽出部105により、ピッチ探索範囲Tp分の音声データが、話速変換処理バッファ102に保持されていないと判断された場合には、話速変換装置100は、上述のステップS201の処理に戻り、次の入力フレームを取得する処理から動作する。
【0065】
一方、ピッチ抽出部105により、ピッチ探索範囲Tp分の音声データが、話速変換処理バッファ102に保持されていると判断された場合には、ピッチ抽出部105によりピッチ候補が抽出され(S209)、当該ピッチ候補が伸長処理に用いるものとして適当であるか否かが判定される(S210)。
【0066】
ステップS210で、当該ピッチ候補が伸長処理に用いるものとして適当ででないと判定された場合には、ピッチ抽出部105は、話速変換処理バッファ102を制御して、当該ピッチ候補の音声データを、直接出力バッファ107に供給させる(S211)。そして、話速変換装置100は、後述するステップS214の処理から動作する。
【0067】
一方、ステップS210で、当該ピッチ候補が伸長処理に用いるものとして適当であると判定された場合には、ピッチ抽出部105は、話速変換処理バッファ102を制御して、当該ピッチ候補の音声データを、ピッチWの音声データとして、PICOLA処理部106に供給させる。そして、話速変換装置100は、後述するステップS212の処理から動作する。
【0068】
ピッチWの音声データが供給されるとPICOLA処理部106は、そのピッチWの音声データ(音声波形)に基づいて、話速変換処理バッファ102に保持された音声データの伸長に用いる音声データ(ピッチWと同じ長さの音声データ)を生成する(S212)。
【0069】
そして、PICOLA処理部106は、ピッチWの波形の長さTwに応じた伸長処理用データ期間Tgを、話速制御部104に問い合わせて取得する。そして、PICOLA処理部106は、伸長処理用データ期間Tgを取得すると、話速変換処理バッファ102で保持された音声データのうち、ピッチWに続く伸長処理用データ期間Tg分の音声データを取得する。そして、PICOLA処理部106は、取得したピッチWの音声データと、伸長処理用データ期間Tgの音声データとの間に、生成した音声データを挿入した音声データを、出力バッファ107に供給する(S213)。なお、話速変換処理バッファ102に、伸長処理用データ期間Tg分の音声データが残っていない場合には、PICOLA処理部106は、足りない分の長さ(未処理データ期間Tu)を、話速制御部104に報告する。
【0070】
そして、上述のステップS211、又はS214の処理が終了すると、ピッチ抽出部105では、話速変換処理バッファ102にピッチ探索範囲Tp分の音声データが保持されているか否かが確認される(S214)。
【0071】
ステップS214で、ピッチ抽出部105により、話速変換処理バッファ102にピッチ探索範囲Tp分の音声データが保持されていると確認された場合には、話速変換装置100は、上述のステップS209の処理から動作して再度ピッチ候補の抽出処理を行う。
【0072】
一方、話速変換処理バッファ102にピッチ探索範囲Tp未満の分しか、話速変換処理バッファ102に音声データが保持されていないと確認された場合には、話速変換装置100では、話速変換処理が継続している限り、上述のステップS201に戻って動作する。
【0073】
次に、話速変換装置100が、上述の図3〜図5のフローチャートに従って動作した場合の、話速変換処理バッファ102及び出力バッファ107に保持される音声データの遷移について、図6〜図9のタイミングチャートを用いて説明する。
【0074】
ここでは、出力フレーム及び入力フレームを構成するサンプル数n=80、伸長率Rs=1.25、ピッチ探索範囲Tp=240サンプル分の期間(Ts×120の期間)であるものとして説明する。
【0075】
図6〜図9のタイミングチャートでは、タイミングT0の時点から話速変換装置100が話速変換処理を開始している。そして、図6〜図9のタイミングチャートでは、タイミングT1、T2、T3、T4、T5…、のそれぞれのタイミングが、出力フレームを出力バッファ107から出力すべきタイミングを示している。例えば、タイミングT1の時点は、タイミングT0から80サンプル分の時間(Ts×80の時間)が経過した時点を示しており、タイミングT2の時点は、タイミングT0から160サンプル分の時間(Ts×160の時間)が経過した時点を示していることになる。
【0076】
ここでは、説明を容易にするために、まず、最低遅延量Td=ピッチ探索範囲Tpとした場合の話速変換処理バッファ102及び出力バッファ107に保持される音声データの遷移について、図6、図7を用いて説明する。
【0077】
図6では、最低遅延量Td=ピッチ探索範囲Tpとし、PICOLA処理部106による伸長処理が行われる場合の話速変換処理バッファ102及び出力バッファ107に保持される音声データの遷移について示している。
【0078】
図6では、タイミングT3の時点で、最低遅延量Td分の音声データ(240サンプル)が溜まることになるため、ピッチ抽出部105によりTw1の長さのピッチW1が抽出されたものとする。そして、ピッチW1は、ピッチ抽出部105により伸長処理に適用するものとして適当と判定され、さらに、PICOLA処理部106によりピッチW1を用いた音声波形の音声データが生成されたものとする。なお、ここでは、Tw1=45サンプル分の期間であるものとする。そうすると、話速制御部104では、伸長処理用データ期間Tg1=(Tw1/(Rs−1))−Tw1=(45/(1.25−1))−45=135サンプル分の期間となる。
【0079】
したがって、図6に示すように、PICOLA処理部106は、タイミングT3の時点で、ピッチW1(Tw1)の音声データ、ピッチW1に基づいて生成した音声データ、伸長処理用データ期間Tgの音声データ(180サンプル)を保持して、データ出力部108に供給することになる。すなわち、この時点で、データ出力部108には、45+45+135=225サンプル分の音声データが保持されることになる。そして、タイミングT3の時点で、話速変換処理バッファ102には240−225=15サンプル分の音声データしか保持されていない状態になるため、少なくともタイミングT6の時点までは、話速変換処理バッファ102にピッチ探索範囲Tp分の音声データ(240サンプル)が溜まらないため、伸長処理は行われない。したがって、タイミングT3〜T6の期間、データ出力部108には、新たな音声データが供給されない状態となる。
【0080】
そうすると、出力バッファ107では、タイミングT3の時点で、出力フレームF1(80サンプル分の音声データ)を出力し、さらに、タイミングT4の時点で、出力フレームF2(80サンプル分の音声データ)を出力することになる。すなわち、タイミングT4の時点で、データ出力部108には、225−80−80=65フレーム分の音声データしか残っていないため、タイミングT5の時点になっても正常な出力フレームを生成して出力することができないことになる。
【0081】
以上のように、最低遅延量Td=ピッチ探索範囲Tpとした場合には、1回目の伸長処理の後、2回目のピッチ探索に必要な最低遅延量Td分のデータが溜まる前に出力バッファ107に1出力フレーム分のデータがなくなる状況が発生してしまう場合がある。
【0082】
図7では、最低遅延量Td=ピッチ探索範囲Tpとし、PICOLA処理部106による伸長処理が行われなかった場合(抽出したピッチ候補が伸長処理に用いることに不適当だった場合)の話速変換処理バッファ102及び出力バッファ107に保持される音声データの遷移について示している。
【0083】
図7では、タイミングT3の時点で、最低遅延量Td分の音声データ(240サンプル)が溜まることになるため、ピッチ抽出部105によりTw1の長さのピッチW1(ピッチ候補)が抽出されたものとする。そして、ピッチW1は、ピッチ抽出部105により伸長処理に適用するものとして不適当と判定され、話速変換処理バッファ102から出力バッファ107に出力されることになる。なお、ここでは、Tw1=45サンプル分の期間であるものとする。したがって、図7では、タイミングT3の時点で、出力バッファ107には45サンプル分の音声データが保持されることになるが、1出力フレーム分の音声データ(80サンプル)には満たないため、正常な音声データを挿入した出力フレームを出力することができない状態が継続することになる。
【0084】
次に、上述の実施形態と同様に、ピッチ探索範囲Tp=240、最低遅延量Td=240+80−1=319サンプル(上記の(1)式を用いて算出した長さ)とした場合の話速変換処理バッファ102及び出力バッファ107に保持される音声データの遷移について、図8、図9を用いて説明する。
【0085】
図8では、ピッチ探索範囲Tp=240サンプル、最低遅延量Td=319サンプルとし、PICOLA処理部106による伸長処理が行われる場合の話速変換処理バッファ102及び出力バッファ107に保持される音声データの遷移について示している。すなわち、図8のタイミングチャートは、最低遅延量Td以外については、上述の図6と同様の条件となった場合について示している。
【0086】
図8では、タイミングT4の時点で、最低遅延量Td分以上の音声データ(320サンプル)が溜まることになるため、ピッチ抽出部105によりTw1の長さのピッチW1が抽出されたものとする。そして、ピッチW1は、ピッチ抽出部105により伸長処理に適用するものとして適当と判定され、さらに、PICOLA処理部106によりピッチW1を用いた音声波形の音声データが生成されたものとする。なお、ここでは、Tw1=45サンプル分の期間であるものとする。そうすると、話速制御部104では、図6の場合と同様に、伸長処理用データ期間Tg1=135サンプル分の期間が算出される。
【0087】
また、図8に示すように、PICOLA処理部106は、タイミングT4の時点で、ピッチW1(Tw1)の音声データ、ピッチW1に基づいて生成した音声データ、伸長処理用データ期間Tgの音声データ(135サンプル)を保持して、データ出力部108に供給することになる。すなわち、この時点で、データ出力部108には、225サンプル分の音声データが保持されることになる。そして、タイミングT4の時点で、話速変換処理バッファ102には320−225=95サンプル分の音声データが保持されることになる。そして、話速変換処理バッファ102では、タイミングT6の時点で、話速変換処理バッファ102にピッチ探索範囲Tp分以上の音声データが溜まり、データ出力部108に新たな音声データが供給されることになる。
【0088】
一方、出力バッファ107では、タイミングT4の時点で、出力フレームF1(80サンプル分の音声データ)を出力し、さらに、タイミングT5の時点で、出力フレームF2(80サンプル分の音声データ)を出力することになる。そして、図8の例では、タイミングT6の時点では、出力バッファ107に新たな音声データが供給されることになる。
【0089】
したがって、図8の例では、最低遅延量Tdについて上記の(1)のように設定することにより、図6の場合の例と異なり、出力バッファ107で出力フレームを出力すべきタイミングが到来しても、出力バッファ107に1出力フレーム分以上のデータを保持することが出来る。
【0090】
図9では、ピッチ探索範囲Tp=240サンプル、最低遅延量Td=319サンプルとし、PICOLA処理部106による伸長処理が行われない場合の話速変換処理バッファ102及び出力バッファ107に保持される音声データの遷移について示している。すなわち、図9のタイミングチャートは、最低遅延量Td以外については、上述の図7と同様の条件となった場合について示している。
【0091】
図9では、タイミングT4の時点で、話速変換処理バッファ102に、最低遅延量Td分以上の音声データ(320サンプル)が溜まることになるため、ピッチ抽出部105によりTw1の長さのピッチW1(ピッチ候補)が抽出されたものとする。そして、ピッチW1は、ピッチ抽出部105により伸長処理に適用するものとして不適当と判定され、話速変換処理バッファ102から出力バッファ107に出力されることになる。なお、ここでは、Tw1=45サンプル分の期間であるものとする。
【0092】
そして、この時点では、話速変換処理バッファ102には、320−45=275サンプルの音声データが残っており、ピッチ探索範囲Tp(240サンプル分)より多いため、ピッチ抽出部105は、タイミングT4の時点で、連続してピッチ候補の探索を行うことができる。そして、ピッチ抽出部105では、2回目のピッチ候補探索で、Tw2の長さのピッチW2(ピッチ候補)が抽出されたものとする。そして、ピッチW2は、ピッチ抽出部105により伸長処理に適用するものとして不適当と判定され、話速変換処理バッファ102から出力バッファ107に出力されたものとする。なお、ここでは、Tw2=45サンプル分の期間であるものとする。
【0093】
そうすると、データ出力部108では、タイミングT4の時点で、45+45=90サンプル分の音声データを保持することができ、図7の例と異なり、出力フレームを出力することができる。
【0094】
したがって、図9の例では、図7の場合の例と異なり、ピッチ候補がそのまま出力バッファ107に供給されても、話速変換処理バッファ102にピッチ探索範囲Tp以上の音声データが残っているため、ピッチ抽出部105では、同一フレーム内(同一タイミング)で複数回ピッチ探索を行うことができる。すなわち、図9の例では、最低遅延量Tdについて上記の(1)式のように設定することにより、図7の場合の例と異なり、出力バッファ107で出力フレームを出力すべきタイミングが到来しても、出力バッファ107に1出力フレーム分以上のデータを保持できる可能性が高くなることになる。
【0095】
(A−3)第1の実施形態の効果
第1の実施形態によれば、以下のような効果を奏することができる。
【0096】
(A−3−1)話速変換装置100では、PICOLA処理部106による伸長処理を開始する前に、ピッチ探索範囲Tp以上の音声データを、初期に話速変換処理バッファ102で保持することで、出力バッファ107に、1出力フレーム分以上の音声データが保持されやすい状態とすることができる。
【0097】
(A−3−2)初期に話速変換処理バッファ102で保持するデータ量が多い方が、出力バッファ107で保持するデータ量を枯渇しにくくさせることはできるが、話速変換処理による遅延量(データ入力部101に音声データが入力されてから、データ出力部108で出力されるまでの時間)が大きくなってしまうと、処理品質(リアルタイム性)が劣化してしまう。そこで、この実施形態の話速変換装置100では、出力バッファ107に1出力フレーム分以上の音声データを保持するために必要な最低限の最低遅延量Tdとして、「ピッチ探索範囲Tp+1フレーム−1サンプル」を設定している。
【0098】
次に、最低遅延量Tdとして、「ピッチ探索範囲Tp+1フレーム−1サンプル」が望ましい理由について説明する。
【0099】
出力バッファ107に1出力フレーム分のデータがなくなるという問題が発生する例として、上述の図6の条件(以下、「第1の条件」と呼ぶ)と、上述の図7の条件(以下、「第2の条件」と呼ぶ)について説明した。このうち、第2の条件は、第1の例の伸長率が1.0倍のときと同じであると見なせる。つまり第2の条件で発生する問題を回避できることが示せれば、同時に第1の条件で発生する問題も回避できる。何故なら第1の条件は伸長率Rs>1.0で必ず伸長処理を行うので、第2の条件よりも出力バッファ107のデータは増えるからである。
【0100】
第2の条件でも、ピッチ候補W分の期間(以下、「TW」と呼ぶ)が、1出力フレーム分の期間(以下、「TF」と呼ぶ)と同じかTFの倍数である場合は、上述の問題は発生しない。出力バッファ107供給される期間は常にTF分の期間の倍数なので、入力されたデータをそのまま供給することができるからである。上述の問題が発生するのは、ピッチ候補Wの期間TWが、それ以外の値の場合である。なお、ここでは、各「期間(データ長)」について、音声データを構成するサンプル数(サンプリング間隔は全て同一であるものとする)を単位として表わすものとする。
【0101】
以下に、上述の第2の例(図7に示す例)において、上述の問題を回避できる最低遅延量Tdとして望ましい値がどのように求められるのかを示す。なお、以下の例では、TWの最大値はTp/2とするが、これに限定せずTd分まで抽出するようにしても良い。また、以下の例ではTp>=TFとする。また、以下の例では、TF=80(サンプル)、Tp=240(サンプル)であるものとする。
【0102】
まず、TWが1*TF未満の場合(1<=TW<=79の場合)について説明する。
【0103】
この場合、図7に示す1回目のピッチ探索(ピッチ抽出)では、出力バッファ107にTF分のデータがたまらないため、同一フレーム処理内でもう一度ピッチ抽出を行う必要がある。話速変換処理バッファ102で保持されている音声データの期間をP、初期値をXとすると、一回目のピッチ抽出後の期間は(X−1)<=P<=(X−79)である。このときPは、Tp分以上のデータであればよいから、必要なXの最大値はX−79<=24、X=319となる。
【0104】
次に、TWが1*TFより大きく、2*TF未満のとき(81<=TW<=159の場合)について説明する。
【0105】
この場合、1回目のピッチ抽出の結果、話速変換処理バッファ102で保持される期間は(X−81)<=P<=(X−159)となっている。また出力バッファ107には1*TF以上2*TF分未満存在することになるので、出力バッファ107からの出力フレームの出力は可能となる。しかし、出力バッファ107では、次に出力フレームを出力すべきタイミングとなったときに、TF分のデータは残らないことになるため、次の出力フレームの出力タイミングでは、必ずピッチ抽出を行う必要がある。したがって、この場合、次の出力フレームを出力すべきタイミングで、DF分のデータ入力後に話速変換処理バッファ102にTp分以上のデータが存在すればよいので、必要なXの最大値はX−159+80=240、X=319となる。このXの値が最低遅延量Tdとなり、これは2*F<W<3*F、3*F<W<4*Fの場合も同じである。
【0106】
以上から、上述の問題が発生しにくくなる最小のTdは、以下の(4)式により導きだすことができる。なお、以下の(4)式では、TW≠n*TF(n=0、1、2、…)、Tp>TFであるものとする。なお、以下の(4)式では、「int(TW/TF)は「TW/TF」の整数部分を示している。また、以下の(4)式では、「max{TW−int(W/TF)*TF}」は、nを「n=0、1、2、…」と変化させた場合の「TW−int(W/TF)*TF」の最大値を示しており、計算すると以下の(5)式に示す結果となる。したがって、以下の(6)式に示すように、Tdとしては、上述の「ピッチ探索範囲Tp+1フレーム−1サンプル」が望ましいという結果が得られる。
【0107】
Td=Tp+max{TW−int(TW/TF)*TF} …(4)
max{TW−int(TW/TF)*TF}=TF−1 …(5)
Td=Tp+TF−1 …(6)
以上のように、話速変換装置100では、出力バッファ107に1出力フレーム分以上の音声データを保持することにより、安定した精度で話速変換処理をリアルタイムに実行することが可能となる。
【0108】
その結果、話速変換装置100を利用することにより、テレビやラジオ、電話などリアルタイムに音声を処理する機器に話速変換を行うことが可能となる。また、話速変換装置100を利用することにより、ユーザはこれらの機器の使用中いつでも話速変換を実行することができ、また話速変換の実行中であっても任意の話速に変更することができる。
【0109】
(B)第2の実施形態
以下、本発明による音声信号処理装置及びプログラムの第2の実施形態を、図面を参照しながら詳述する。なお、第1の実施形態の音声信号処理装置は、話速変換装置である。
【0110】
(B−1)第2の実施形態の構成
図10は、第2の実施形態の話速変換装置100Aの機能的構成を示すブロック図である。なお、図10では、上述の図1と同一又は対応する部分には、同一又は対応する符号を付している。以下、第2の実施形態について、第1の実施形態との差異を説明する。
【0111】
話速変換装置100Aでは、音声区間検出部109及び遅延回復部110が追加されている点で、第1の実施形態と異なっている。
【0112】
第1の実施形態の話速変換装置100では、話速変換処理を継続すると、音声信号(音声データ)は次々と伸長処理されるため、遅延が際限なく増加し、それにともない出力バッファ107で保持される音声データも増大してしまう。その結果、例えば、当該話速変換装置100を電話装置等の電話通信に適用し、リアルタイムに話速変換処理を行う場合には、話者間のコミュニケーションに不具合が生じてしまうことになる。
【0113】
そこで、第2の実施形態の話速変換装置100Aでは、音声区間検出部109及び遅延回復部110を追加して、遅延回復機能に対応させ、上述のような問題点に対応している。
【0114】
なお、ここでいう遅延とは、例えば、話速変換装置において、伸長処理により、話速変換処理バッファ102で最新に入力された音声データに対応する時刻(サンプルの時系列上の時刻)と、出力バッファ107で出力する音声データに対応する時刻との差分である。
【0115】
そして、遅延回復機能とは、例えば、話速変換装置において、伸長処理により一定時間以上の遅延が発生していた場合、最新に入力される音声信号に含まれる非音声区間(無音区間)を話速変換処理バッファ102から削除することで、遅延時間を短縮する機能である。
【0116】
音声区間検出部109は、データ入力部201が取得した1フレーム分の音声データ(音声信号)に対し、当該入力フレームの音声データが示す音声信号が音声区間(有音区間)であるのか、非音声区間(無音区間)であるのかを判定する。音声区間検出部109において有音区間を検出する処理については、既存の処理構成(例えば、音響特徴量として、入力信号のパワー、零交差、相関関数等を用いる方法)を適用することができる。なお、音声区間検出部109については、データ入力部101の中に組み込み、データ入力部101で入力フレームを生成する際に音声区間の検出処理を行うようにしてもよい。
【0117】
そして、音声区間検出部109は、取得した入力フレームが非音声区間のものであった場合には、当該入力フレームを、遅延回復部110に引き渡す。
【0118】
遅延回復部110は、音声区間検出部109から非音声区間の入力フレームが供給されると、話速変換処理バッファ203を制御して、溜まっている音声データを全て出力バッファ208へ出力させる。そして、遅延回復部110は、出力バッファ107に溜まっている音声データの量が所定以上の場合(ここでは、例として最低遅延量Td以上とする)、最新に取得した入力フレームを削除(破棄)して、遅延回復を図る。一方、出力バッファ107に溜まっている音声データの量が所定未満の場合(ここでは、例として最低遅延量Td未満とする)、遅延回復部110は、最新に取得した入力フレームを、出力バッファ107に供給する。
【0119】
(B−2)第2の実施形態の動作
次に、以上のような構成を有する第2の実施形態の話速変換装置100Aの動作を説明する。
【0120】
第2の実施形態の話速変換装置100Aは、上述の遅延回復機能に係る音声区間検出部109及び遅延回復部110の動作が追加されるだけで、その他は第1の実施形態と同様である。具体的には、第2の実施形態では、第1の実施形態の動作のステップS201とステップS202との間で、上述の遅延回復機能に係る音声区間検出部109及び遅延回復部110の動作が挿入される。
【0121】
図11では、第2の実施形態の話速変換装置100Aで、上述のステップS201とステップS202との間に挿入される、遅延回復機能に係る音声区間検出部109及び遅延回復部110の動作について示している。図11では図示を省略しているが、その他の動作については、第1の実施形態と同様である。
【0122】
第2の実施形態の話速変換装置100Aでは、上述のステップS201において、データ入力部101で入力フレームが取得されると、音声区間検出部109により、当該入力フレームについて音声区間であるか否かが判定される(S301)。
【0123】
そして、ステップS301において入力フレームについて音声区間と判定された場合には、話速変換装置100Aでは、上述のステップS202により当該入力フレームが話速変換処理バッファ102に入力され、以後の処理は第1の実施形態と同様の処理となる。
【0124】
一方、ステップS301において入力フレームについて音声区間と判定された場合には、音声区間検出部109により、当該入力フレームは、遅延回復部110に供給される。そして、遅延回復部110は、話速変換処理バッファ203を制御して、溜まっている音声データを全て出力バッファ208へ出力させる(S302)。
【0125】
そして、遅延回復部110は、出力バッファ107に溜まっている音声データの量が最低遅延量Td以上であるか否かを判定する(S303)。
【0126】
上述のステップS303で、出力バッファ107に溜まっている音声データの量が最低遅延量Td以上であると判定された場合には、遅延回復部110は、最新に取得した入力フレームを削除(破棄)して、遅延回復を図る(S304)。そして、話速変換装置100Aは上述のステップS201に戻って動作する。すなわち、遅延回復部110は、話速変換処理バッファ102及び出力バッファ107に溜まっている音声データの合計量が、最低遅延量Td以上となっている状態の場合には、遅延量が所定以上になっているものと判断し、遅延回復処理(非音声区間の入力フレームを破棄)を行う。
【0127】
一方、上述のステップS303で、出力バッファ107に溜まっている音声データの量が最低遅延量Td未満であると判定された場合には、遅延回復部110は、最新に取得した入力フレームを、出力バッファ107に供給する(S305)。そして、話速変換装置100Aは上述のステップS201に戻って動作する。
【0128】
(B−3)第2の実施形態の効果
第2の実施形態によれば、第1の実施形態に加えて以下のような効果を奏することができる。
【0129】
話速変換装置100Aでは、出力バッファ107に最低遅延量Tdのデータを保持しつつ、非音声区間の音声データを削除(破棄)している。これにより、話速変換装置100Aでは、1出力フレーム分の音声データが、出力バッファ107にない状況を発生させずに、遅延を短縮(遅延回復)させることができる。これにより、話速変換装置100Aでは、出力バッファ107に必要とされるメモリ量を抑制するとともに、遅延量を抑制して、安定した話速変換処理を行うことができる。
【0130】
(C)他の実施形態
本発明は、上記の各実施形態に限定されるものではなく、以下に例示するような変形実施形態も挙げることができる。
【0131】
(C−1)上記の各実施形態の話速変換装置では、話速を遅くする処理を行う場合についてのみ説明したが、上記の各実施形態の話速変換装置で、話速を早くする処理(例えば、既存の話速変換処理を適用するようにしても良い)についても処理可能な構成としても良い。
【0132】
(C−2)上記の各実施形態の話速変換装置では、遅延制御部は、話速変換装置が処理を開始した直後にのみ、話速変換処理バッファに最低遅延量Tdの音声データが溜まるまで、PICOLA処理部による話速変換処理を保留する処理をおこなっているが、その他のタイミングでも同様の処理を行うようにしても良い。
【0133】
例えば、話速変換装置で、遅延量が一定以上となった場合に、話速変換処理バッファ102及び出力バッファ107で保持している音声データをリフレッシュ(全てのデータを消去)した後、話速変換処理バッファに最低遅延量Tdの音声データが溜まるまで、PICOLA処理部による話速変換処理を保留するようにしても良い。
【0134】
(C−3)上記の各実施形態で、遅延制御部は、伸長処理により遅延が際限なく増えることを防ぐため、話速変換装置で遅延量が一定量を超えた場合、伸長処理を中止するように他の処理構成を制御する機能(遅延制限機能)に対応させるようにしてもよい。
【符号の説明】
【0135】
100…話速変換装置、101…データ入力部、102…話速変換処理バッファ、103…遅延制御部、104…話速制御部、105…ピッチ抽出部、106…PICOLA処理部、107…出力バッファ、108…データ出力部。
【特許請求の範囲】
【請求項1】
入力音声信号の音声データを蓄積する入力バッファ手段と、
上記入力バッファ手段に蓄積されている音声データに基づく音声信号波形について、探索周期分の音声信号波形から、基本周期を抽出し、抽出した基本周期の音声信号波形を利用して、入力バッファ手段に蓄積される音声データについて話速変換処理を行う話速変換手段と、
上記話速変換手段が話速変換処理した後の音声データを蓄積する出力バッファ手段と、
出力間隔ごとに、上記出力バッファ手段に蓄積している音声データのうち出力間隔分の音声データを含む出力音声データフレームを出力する音声データ出力手段と、
上記入力バッファ手段に、上記探索周期よりも長い最低蓄積期間以上の音声データが蓄積されてから、上記話速変換手段による話速変換処理を開始させる変換処理制御手段と
を有することを特徴とする音声信号処理装置。
【請求項2】
上記最低蓄積期間は、上記探索周期と上記出力間隔とを加算し、さらに、出力バッファ手段の音声データの1サンプリング周期を減じた期間とすることを特徴とする請求項1に記載の音声処理装置。
【請求項3】
当該音声信号処理装置で、話速変換処理に伴う遅延量が所定以上となっている状態で、上記入力バッファ手段に入力される音声データが、非音声区間の音声データであった場合、当該音声データを破棄して遅延回復を図る遅延回復手段をさらに備えることを特徴とする請求項1又は2に記載の音声信号処理装置。
【請求項4】
上記遅延回復手段は、上記入力バッファ手段及び上記出力バッファ手段に蓄積されている音声データ量が所定以上となった場合に、遅延量が所定以上となったと判断することを特徴とする請求項3に記載の音声信号処理装置。
【請求項5】
コンピュータを、
入力音声信号の音声データを蓄積する入力バッファ手段と、
上記入力バッファ手段に蓄積されている音声データに基づく音声信号波形について、探索周期分の音声信号波形から、基本周期を抽出し、抽出した基本周期の音声信号波形を利用して、入力バッファ手段に蓄積される音声データについて話速変換処理を行う話速変換手段と、
上記話速変換手段が話速変換処理した後の音声データを蓄積する出力バッファ手段と、
出力間隔ごとに、上記出力バッファ手段に蓄積している音声データのうち出力間隔分の音声データを含む出力音声データフレームを出力する音声データ出力手段と、
上記入力バッファ手段に、上記探索周期よりも長い最低蓄積期間以上の音声データが蓄積されてから、上記話速変換手段による話速変換処理を開始させる変換処理制御手段と
して機能させることを特徴とする音声信号処理プログラム。
【請求項1】
入力音声信号の音声データを蓄積する入力バッファ手段と、
上記入力バッファ手段に蓄積されている音声データに基づく音声信号波形について、探索周期分の音声信号波形から、基本周期を抽出し、抽出した基本周期の音声信号波形を利用して、入力バッファ手段に蓄積される音声データについて話速変換処理を行う話速変換手段と、
上記話速変換手段が話速変換処理した後の音声データを蓄積する出力バッファ手段と、
出力間隔ごとに、上記出力バッファ手段に蓄積している音声データのうち出力間隔分の音声データを含む出力音声データフレームを出力する音声データ出力手段と、
上記入力バッファ手段に、上記探索周期よりも長い最低蓄積期間以上の音声データが蓄積されてから、上記話速変換手段による話速変換処理を開始させる変換処理制御手段と
を有することを特徴とする音声信号処理装置。
【請求項2】
上記最低蓄積期間は、上記探索周期と上記出力間隔とを加算し、さらに、出力バッファ手段の音声データの1サンプリング周期を減じた期間とすることを特徴とする請求項1に記載の音声処理装置。
【請求項3】
当該音声信号処理装置で、話速変換処理に伴う遅延量が所定以上となっている状態で、上記入力バッファ手段に入力される音声データが、非音声区間の音声データであった場合、当該音声データを破棄して遅延回復を図る遅延回復手段をさらに備えることを特徴とする請求項1又は2に記載の音声信号処理装置。
【請求項4】
上記遅延回復手段は、上記入力バッファ手段及び上記出力バッファ手段に蓄積されている音声データ量が所定以上となった場合に、遅延量が所定以上となったと判断することを特徴とする請求項3に記載の音声信号処理装置。
【請求項5】
コンピュータを、
入力音声信号の音声データを蓄積する入力バッファ手段と、
上記入力バッファ手段に蓄積されている音声データに基づく音声信号波形について、探索周期分の音声信号波形から、基本周期を抽出し、抽出した基本周期の音声信号波形を利用して、入力バッファ手段に蓄積される音声データについて話速変換処理を行う話速変換手段と、
上記話速変換手段が話速変換処理した後の音声データを蓄積する出力バッファ手段と、
出力間隔ごとに、上記出力バッファ手段に蓄積している音声データのうち出力間隔分の音声データを含む出力音声データフレームを出力する音声データ出力手段と、
上記入力バッファ手段に、上記探索周期よりも長い最低蓄積期間以上の音声データが蓄積されてから、上記話速変換手段による話速変換処理を開始させる変換処理制御手段と
して機能させることを特徴とする音声信号処理プログラム。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【公開番号】特開2013−109078(P2013−109078A)
【公開日】平成25年6月6日(2013.6.6)
【国際特許分類】
【出願番号】特願2011−252652(P2011−252652)
【出願日】平成23年11月18日(2011.11.18)
【出願人】(000000295)沖電気工業株式会社 (6,645)
【公開日】平成25年6月6日(2013.6.6)
【国際特許分類】
【出願日】平成23年11月18日(2011.11.18)
【出願人】(000000295)沖電気工業株式会社 (6,645)
[ Back to top ]