本発明の第1の態様に係る音声伝送装置は、ネットワークを介して音声パケットをリアルタイムで伝送する音声伝送装置であって、受信した前記音声パケットのフレームを蓄積するバッファ部と、前記バッファ部に蓄積したフレームの蓄積量が下限閾値よりも小さいときの前記バッファ部から出力するフレームのステータスを拡大と判定し、前記バッファ部から出力すべき位置にフレームが存在していないと判断したときのステータスを欠落と判定する判定部と、前記判定部の判定結果が拡大のときは前記バッファ部内にダミーフレームを挿入して前記バッファ部の蓄積量を増加させる処理部と、前記判定部の判定結果である前記ステータスを順次格納するフレームステータス格納部と、前記判定部で判定された現在のフレームのステータスと前記フレームステータス格納部に格納された一つ前のフレームのステータスの組み合わせのうち、特定の組み合わせの場合にのみ過去のフレームのデータ演算により現在のフレームの音声特徴情報を算出して現在のフレームを補間する補間フレームを生成するフレーム補間制御部と、を備える構成を採る。
この構成によれば、補間をする場合でも補間処理の演算を省略できる場合があるので音声パケットのネットワーク遅延とそのゆらぎに起因する音声劣化を防止するための拡大、縮小処理に伴う補間処理の演算の処理負荷を軽減することができる。
本発明の第2の態様に係る音声伝送装置は、第1の態様に係る音声伝送装置の構成に加えて、前記フレーム補間制御部は、前記判定部で判定された現在のフレームのステータスと前記フレームステータス格納部に格納された一つ前のフレームのステータスの組み合わせに基づいて現在のフレームの補間処理が必要かどうかを判断する構成を採る。
この構成によれば、第1の態様に係る音声伝送装置の作用効果に加え、補間処理も選択的に行うことができるので補間処理自体の負荷を軽減することができる。
本発明の第3の態様に係る音声伝送装置は、第1の態様に係る音声伝送装置の構成に加えて、前記フレーム補間制御部は、算出した前記音声特徴情報を保存する音声特徴情報格納部を備える構成を採る。
この構成によれば、第1の態様に係る音声伝送装置の作用効果に加え、前記音声特徴情報を保存する音声特徴情報格納部を備えるため、後のフレームにおいて音声特徴情報を読み出すことにより演算処理を省略することができる。
本発明の第4の態様に係る音声伝送装置は、第2の態様に係る音声伝送装置の構成に加えて、前記フレーム補間制御部は、前記特定の組み合わせ以外の場合であって現在のフレームの補間処理と判断される場合に、保存されている音声特徴情報に基づき、現在のフレームの補間フレームを生成する構成を採る。
この構成によれば、第2の態様に係る音声伝送装置の作用効果に加え、現フレームにおいて音声特徴情報の算出が不要となり演算処理を省略することができる。
本発明の第5の態様に係る音声伝送装置は、第1の態様から第4の態様のいずれかに係る音声伝送装置の構成に加えて、前記フレーム補間制御部は、現在のフレームのステータスが拡大と欠落のいずれかであり、かつ、1つ前のフレームのステータスが拡大と欠落のいずれでもないときに、過去のフレームのデータ演算により音声特徴情報を算出して現在のフレームの補間フレームを生成し、音声特徴情報を音声特徴情報格納部に保存する構成を採る。
この構成によれば、第1の態様から第4の態様のいずれかに係る音声伝送装置の作用効果に加え、前のフレームに正常もしくは縮小が続いたときは以前に音声特徴情報を保存した時点から時間が経過していることも多く状況が変化している可能性も高い状況で、最新の音声特徴情報を使用できる。
本発明の第6の態様に係る音声伝送装置は、第1の態様から第5の態様のいずれかに係る音声伝送装置の構成に加えて、前記フレーム補間制御部は、一つ前のフレームのステータスが拡大と欠落のいずれかであるとき、前記音声特徴情報格納部に保存した前記音声特徴情報を前記音声情報格納部から読み出し、前記音声特徴情報に基づき、現在のフレームの補間フレームを生成する構成を採る。
この構成によれば、第1の態様から第5の態様のいずれかに係る音声伝送装置の作用効果に加え、後のフレームにおいて音声特徴情報を読み出すことができるため演算処理を省略することができる。
本発明の第7の態様に係る音声伝送装置は、第1の態様に係る音声伝送装置の構成に加えて、前記判定部は、前記バッファ部のフレームの蓄積量が上限閾値よりも大きい場合、前記バッファ部から出力するフレームのステータスを縮小と判定し、前記処理部は、前記判定部の判定結果が縮小のときは前記バッファ部内のフレームを破棄して前記バッファ部の蓄積量を減少させる構成を採る。
この構成によれば、第1の態様に係る音声伝送装置の作用効果に加え、縮小のときも補間を行え、かつ、後のフレームにおいて音声特徴情報を読み出すことができるため演算処理を省略することができる。
本発明の第8の態様に係る音声伝送方法は、ネットワークを介して音声パケットをリアルタイムに伝送する音声伝送装置における音声伝送方法であって、受信した前記音声パケットのフレームをバッファ部に蓄積する蓄積ステップと、前記バッファ部に蓄積したフレームの蓄積量が下限閾値よりも小さいときの前記バッファ部から出力するフレームのステータスを拡大と判定し、前記バッファ部から出力すべき位置にフレームが存在していないと判断したときのステータスを欠落と判定する判定ステップと、前記判定ステップの判定結果が拡大のときは前記バッファ部内にダミーフレームを挿入して前記バッファ部の蓄積量を増加させる調整ステップと、前記判定ステップの判定結果である前記ステータスを順次格納するステータス格納ステップと、現在のフレームのステータスと一つ前のフレームのステータスの組み合わせのうち、特定の組み合わせの場合にのみ過去のフレームのデータ演算により現在のフレームの音声特徴情報を算出して現在のフレームを補間する補間フレームを生成する算出補間ステップと、を有するようにした。
この方法によれば、補間をする場合でも補間処理の演算を省略できる場合があるので音声パケットのネットワーク遅延とそのゆらぎに起因する音声劣化を防止するための拡大、縮小処理に伴う補間処理の演算の処理負荷を軽減することができる。
本発明の第9の態様に係る音声伝送方法は、第8の態様に係る音声伝送方法に加え、前記算出した音声特徴情報を保存する保存ステップと、前記特定の組み合わせ以外の場合であって前記判定ステップで判定された現在のフレームのステータスと一つ前のフレームのステータスの組み合わせに基づいて現在のフレームの補間処理が必要と判断された場合に、前記保存するステップで保存した前記音声特徴情報を読み出し、前記音声特徴情報に基づき、現在のフレームの補間フレームを生成する読出補間ステップと、をさらに有するようにした。
この方法によれば、第8の態様に係る音声伝送方法の作用効果に加え、現フレームにおいて音声特徴情報を算出が不要となり演算処理を省略することができる。
本発明の第10の態様に係る音声伝送プログラムは、ネットワークを介して音声パケットをリアルタイムに伝送させるための音声伝送プログラムであって、受信した前記音声パケットのフレームをバッファ部に蓄積する蓄積ステップと、前記バッファ部に蓄積したフレームの蓄積量が下限閾値よりも小さいときの前記バッファ部から出力するフレームのステータスを拡大と判定し、前記バッファ部から出力すべき位置にフレームが存在していないと判断したときのステータスを欠落と判定する判定ステップと、前記判定ステップの判定結果が拡大のときは前記バッファ部内にダミーフレームを挿入して前記バッファ部の蓄積量を増加させる調整ステップと、前記判定ステップの判定結果である前記ステータスを順次格納するステータス格納ステップと、現在のフレームのステータスと一つ前のフレームのステータスの組み合わせのうち、特定の組み合わせの場合にのみ過去のフレームのデータ演算により現在のフレームの音声特徴情報を算出して現在のフレームを補間する補間フレームを生成する算出補間ステップと、をコンピュータに実行させるようにした。
このプログラムによれば、補間をする場合でも補間処理の演算を省略できる場合があるので音声パケットのネットワーク遅延とそのゆらぎに起因する音声劣化を防止するための拡大、縮小処理に伴う補間処理の演算の処理負荷を軽減することができる。
以下、本発明の実施の形態について、図面を用いて詳細に説明する。なお、同一の構成要素には同一の符号を付し、その説明を適宜省略する。
図1は、本発明の一実施の形態に係る音声伝送装置を適用したパケット通信システムの構成例を示すシステム構成図である。ここでは、パケット通信システムとして、IP電話システムを例にとって説明する。
図1(A)は、IP電話機を用いたIP電話システムのシステム構成図である。図1(A)に示すIP電話システムは、複数(ここでは単純化のため2台のみ示す)のIP電話機100a、100b(以下、任意のIP電話機を符号「100」で示す)をIP網200に接続して構成されている。IP電話機100は、音声通話にVoIP(Voice over Internet Protocol)技術を用いた電話サービスを利用するための電話機である。後述するジッタバッファ制御は、このIP電話機100で実行される。IP網200は、パケット通信網の一つであり、インターネットプロトコルに従ってIPパケットを送受信する通信網である。
図1(B)は、一般電話機(アナログ電話機とも呼ばれる)を用いたIP電話システムのシステム構成図である。図1(B)に示すIP電話システムは、複数(ここでは単純化のため2台のみ示す)の一般電話機300a、300b(以下、任意の一般電話機を符号「300」で示す)を、VoIPターミナルアダプタ(VoIP−TA)400a、400bを介して、IP網200に接続して構成されている。VoIPターミナルアダプタ400は、一般電話機300によってIP電話を利用するための電話回線接続機器である。
図2は、図1(A)のIP電話機100の構成を示すブロック図である。
IP電話機100は、IP電話機と人間との間の音声インターフェースとして、マイク等で構成される音声入力部110とスピーカー等で構成される音声出力部160とを備える。また、IP電話機の通信インターフェースとして、IP網200との間でパケットの送受信を行うパケット送受信部130を備えている。図1のネットワーク構成であれば、パケット送受信部130はインターネットプロトコルにしたがって動作することになる。なお、図示しないゲートウェイGWがプロトコル変換サービスを提供してローカルなプロトコルを使用する特殊な形態も可能である。
かかるIP電話機において、音声入力部110に入力された音声は、符号化(圧縮)されて例えば10ms単位の音声データ(以下、「フレーム」という)に変換され、パケット形成部120に渡される。パケット形成部120では所定フォーマットのパケットが形成される。例えば、RTP(Real-time Transport Protocol)のようなプロトコルを利用してデータパケットをネットワーク上で送信する場合は、RTPパケットのヘッダにタイムスタンプやシーケンス番号が記述される。
1パケットには、1つ又は複数のフレームが詰め込まれる。音声データはフレームとして送信されることになる。パケット形成部120がパケットを生成してパケット送受信部130に渡し、パケット送受信部130はこれをIP網200へ送信する。また、パケット送受信部130はIP網200からパケットを受信する。受信パケットはパケット解析部140においてヘッダが解析されると共にフレームが取り出される。
フレームはジッタバッファ部150に書き込まれる。ジッタバッファ部150の構成、動作については後述する。音声出力部160はジッタバッファ部150からフレームを読み出して音声復号化処理を行い、音声データを再生して内部のスピーカー等から音声として出力する。
呼制御部170は、通話相手を特定し通話チャネル間を確立させる制御を行う。
図3は、図1(B)のVoIPターミナルアダプタ400の構成を示すブロック図である。
音声入力部410は一般電話機300からアナログ音声信号を受取り、これを符号化(圧縮)して例えば10ms単位のフレームに変換して、パケット形成部120に渡す。また音声出力部420はジッタバッファ部150からフレームを読み出して音声復号化処理を行う。すなわち、アナログの音声信号を復元して一般電話機300へ送出する。
その他の構成要素は図2のIP電話機の構成要素と同一の記号を付してあり、同一の機能を有するためその説明を省略する。
図4は、図2および図3のジッタバッファ部150の構成を示すブロック図である。
ジッタバッファ部150は、大別して、バッファ部510、バッファ出力部520、バッファ制御部530、およびフレーム補間部540を有する。
バッファ部510は、例えばリングバッファにより構成され、パケット解析部140から受け取ったフレームを一時保持し、順次バッファ出力部520へ出力する。バッファ部510は、バッファ拡大縮小処理部534の指示により、バッファ部510の内部にあるフレームに対してダミーフレームを挿入して拡大処理を行ったり、フレームを破棄して縮小処理を行ったりすることでネットワーク遅延およびその揺らぎの影響を少なくすることができる。
バッファ出力部520はバッファ部510から読み出したフレームをフレーム補間部540へ引き渡す。
バッファ制御部530は、バッファ部510に蓄積したフレームの蓄積量に基づいてフレームを拡大すべきか、縮小すべきか、維持すべきかを判断し、さらに欠落フレームが存在するかどうかも判定し、拡大処理および縮小処理を実行する。バッファ制御部530は、バッファ拡大縮小判定部532、バッファ拡大縮小処理部534、および欠落フレーム判定部536で構成されている。
より具体的には、バッファ制御部530は、内部に有するリードポインタ(図示せず)に基づいて、フレーム補間部540にバッファ部510内部のフレームを引き渡す。フレームを引き渡すためのリードポインタは、次にバッファ部510から読み出すべきフレームのアドレスを指し示すものである。このリードポインタは処理単位毎に(例えば10ms)にポインタのアドレスが更新される。バッファ制御部530は、そのリードポインタをリングバッファ内部のフレームの遅延および蓄積量を判断する基準として使用し、拡大と縮小の判断及び処理を行う。
次にバッファ部510へのフレームの格納方法を説明する。バッファ制御部530は、上記リードポインタが指し示すアドレスに格納されているフレームのタイムスタンプを基準としてネットワークから順次受信したフレームに記載されたタイムスタンプを参照し、当該タイムスタンプに対応して割り振られたバッファ部510のアドレス(位置)に受信したフレームを格納する。すなわちバッファ制御部530は、受信したフレームのタイムスタンプと、基準となるリードポインタが指し示すフレームのタイムスタンプとの差をみて、それに応じたバッファ部510上の適切な位置にフレームを格納する。
バッファ拡大縮小判定部532は、バッファ部510上のフレームの蓄積量を、ライトポインタが指し示す位置(受信されるフレームに記載されたタイムスタンプに対応して割り振られたアドレスの位置であってそこにフレームが書き込まれる)とリードポインタが指し示す位置の差によって判断する。
そしてバッファ拡大縮小判定部532は、上記のフレームの蓄積量が下限閾値より小さいときフレーム情報を拡大と判定し、上限閾値より大きいときはフレーム情報を縮小と判定する。
バッファ拡大縮小処理部534は、バッファ拡大縮小判定部532が拡大と判定した場合には、バッファ部510の内部にダミーフレームを挿入させて(拡大させて)バッファ部510の蓄積量を増加させて拡大処理を行う。またバッファ拡大縮小処理部534は、バッファ拡大縮小判定部532が縮小と判定した場合には、バッファ部510の内部のフレームを破棄させて(縮小させて)バッファ部510の蓄積量を減少させて縮小処理を行う。
欠落フレーム判定部536は、現時点でのバッファ部510のリードポインタが指し示すバッファ部510のアドレス(位置)を参照する。その時にその位置にデータが存在していない場合(ダミーフレームである場合)、フレーム情報は欠落であると判定する。この場合はネットワーク上において欠落したフレームがあると考えられる。
より具体的に説明すると、バッファ部510には各フレームの格納場所毎にフラグが設けられており、フレームが書き込まれたときにそのフラグが1となり、そのフレームが読まれたとき(バッファ出力部520へ出力されたとき)にそのフラグが0になるものとする。そしてバッファ部510が読まれる直前にリードポインタが指し示すアドレスにおいてフラグが0である格納場所はデータが存在しておらず欠落フレームであると判定できる。
そして欠落したフレームに代替えすべきフレームを補間させるためにフレーム補間部540に対して欠落のフレームステータスを送付する。
尚、フレーム補間部540がバッファ制御部530からフレーム情報(拡大、縮小、欠落)を受け取った時点で、自動的にバッファ制御部530はリードポインタを更新し、更新後リードポインタ上にフレームが存在していればバッファ出力部520からフレーム補間部540へそのフレームを転送する。
フレーム補間部540は、フレーム補間の実行とそれに必要な制御および情報の格納を行う。フレーム補間部540は、補間部542、音声特徴情報格納部544、フレームステータス格納部546、およびフレーム補間制御部548で構成されている。フレーム補間制御部548は、フレームデータ記憶部550および音声特徴情報算出部552を備えている。
フレーム補間部540では受け取ったフレームステータスが欠落であった場合、バッファ出力部520からのデータ取得は行わない。正常、縮小、拡大の場合は、バッファ出力部520のデータの取得を行う。
フレーム補間制御部548は、フレームステータスからなるフレーム情報をバッファ制御部530から受取る。フレーム補間制御部548は、現在のフレーム(以下、現フレームという)および一つ前のフレーム(以下、前フレームという)のフレームステータスにより後述する図5の基準に従って、フレームの補間を行うかどうかを決定する。補間の実行を決定した場合は音声特徴情報を算出又は音声特徴情報格納部544から読み出して補間処理を行い、補間部542へフレームの補間を指示する。また、フレーム補間制御部548は、これらのフレームステータスにより後述する図5の基準に従って、現在のフレームの音声特徴情報を算出して音声特徴情報格納部544に格納するかどうかを決定する。算出した場合は算出した音声特徴情報を音声特徴情報格納部544へ送出して格納させる。音声特徴情報の内容は例えば後述する音声信号のピッチ周期等である。
フレーム補間制御部548は音声特徴情報に基づいて、後述する方法により補間フレームの作成を行い、補間部542へ補間フレームを引き渡して補間を指示する。
フレーム補間制御部548はフレーム情報として欠落フレーム判定部536から欠落のフレームステータスを、バッファ拡大縮小判定部532から拡大または縮小のフレームステータスを受取り、フレームごとにフレームステータスをフレームステータス格納部546に格納する。
フレーム補間制御部548は、フレームデータ記憶部550と、音声特徴情報算出部552とを備える。フレームデータ記憶部550は、現フレームおよび過去のフレームのデータを記憶する。音声特徴情報算出部552は後述する条件を満たすときにフレームデータ記憶部550から現フレームおよび過去のフレームのデータを読み出して後述する方法により音声特徴情報を算出し、音声特徴情報格納部544に格納する。
補間部542は、フレーム補間制御部548の指示に基づき補間フレームをフレーム補間制御部548から受取り、フレームのデータとして補間フレームをバッファ出力部520か受け取ったデータに対して挿入や置き換え等によりフレームの補間を実行する。
図5は、フレームステータスと補間の有無および音声特徴情報の保存と読み出しの関係を示す図である。図5を参照すると、現フレームおよび前フレームのフレームステータスがいかなる組み合わせであるときに補間を行うか否かが表示されている。また補間を行う場合には、現フレームおよび前フレームのフレームステータスがいかなる組み合わせであるときに音声特徴情報を保存するのか読み出すのかが表示されている。図5において、「保存」と表示がある場合は、フレーム補間制御部548は、新たに音声特徴情報を算出してその音声特徴情報を音声特徴情報格納部544に保存し、算出した音声特徴情報を使用して補間フレームを作成する。また「読出」と表示がある場合は、フレーム補間制御部548は、音声特徴情報格納部544から読み出した音声特徴情報を使用して補間フレームを作成する。
フレーム補間制御部548が、フレームステータス格納部546から現フレームと前フレームのステータスを読み出した結果、現フレームが正常または縮小であって、かつ、前フレームが正常または縮小であれば(欄611,612,621,622の場合)、補間は行わず、音声特徴情報の保存も読み出しも行わない。正常または縮小のフレームステータスが連続しているのでフレームのデータの歪みは少ないと考えられるからである。
現フレームが拡大もしくは欠落であり、かつ、前フレームが正常もしくは縮小である場合(欄631,632,641,642)は補間を行い、音声特徴情報の算出および音声特徴情報格納部544へ音声特徴情報の保存を行う。現フレームが拡大もしくは欠落であるのでデータの歪みの影響が直接表れるので補間の必要性が高く、また前のフレームに正常もしくは縮小が続いたときは以前に音声特徴情報を保存した時点から時間が経過していることも多く状況が変化している可能性も高いので、最新の音声特徴情報を使用する必要性が高いからである。
前フレームが拡大もしくは欠落である場合(欄613,614,623,624,633,634,643,644)は、現フレームの状態如何に関わらず、補間を行い、音声特徴情報格納部544から音声特徴情報の読み出しを行う。前フレームが拡大もしくは欠落である場合は現フレームにもその影響がおよぶため現フレームが拡大もしくは欠落であると否とに関わらず補間の必要性はある。その一方で拡大もしくは欠落が多数連続することは少ないため以前に音声特徴情報を保存した時点から時間が経過していることが少なく状況が変化している可能性も低いので、最新の音声特徴情報を使用する必要性が比較的低いからである。
尚、現フレームが拡大もしくは欠落であり、または、前フレームが拡大もしくは欠落である場合(欄631,632,641,642,613,614,623,624,633,634,643,644)は補間を行うこととしている。
この図を参照すると、音声特徴情報算出部552が音声特徴情報を算出して音声特徴情報格納部544に格納するのは、現フレームが拡大もしくは欠落であり、かつ、前フレームが正常もしくは縮小である場合に限られる。そして前フレームが拡大もしくは欠落である場合は音声特徴情報格納部544から音声特徴情報を読み出して使用するため新たに算出する必要がない。したがって、音声特徴情報を算出する回数すなわち音声信号の複雑な演算処理量が大幅に減少するため、補間処理の処理負荷を削減することが可能となる。
次に、上記構成を有する音声伝送装置の動作について、図面を用いて説明する。以下の動作は、IP電話機100について説明する。VoIPターミナルアダプタ400の場合も全く同様に理解することができるのでその説明を省略する。ここでは、まず図4に示すジッタバッファ部150の動作を中心に説明する。
まず、バッファ制御部530の動作について図6を参照して説明する。図6はバッファ制御部530の動作を表すフローチャートである。
この図6においてはS1000からS1250のオーバーフローの判定および縮小処理と、S1300からS1450までのアンダーフロー判定および拡大処理を主要な処理としている。
最初にバッファ拡大縮小判定部532は、フレームの蓄積量をバッファ部510の入力するデータのアドレスを指し示すライトポインタと出力するデータのアドレスを指し示すリードポインタの位置の差からバッファ部510のフレームの蓄積量を検出する(S1000)。そしてあらかじめ定められた上限閾値よりも蓄積量が大きいかどうかを判断する(S1100)。
もし蓄積量が上限閾値より大きければ(S1100:YES)まもなくオーバーフローが起きる可能性が高いとして、フレームステータスが縮小であると判定する(S1200)。フレーム縮小を行うためバッファ拡大縮小処理部534に対して縮小の判定結果を伝え、バッファ拡大縮小処理部534はバッファ部510に一部のフレームを破棄させ縮小処理を実行させる(S1250)。
もし蓄積量が上限閾値より大きくなければ(S1100:NO)、次に蓄積量が下限閾値より小さいかどうかを判断する(S1300)。もし蓄積量が下限閾値より小さければ(S1300:YES)まもなくアンダーフローが起きる可能性が高いとしてフレームステータスが拡大であると判定する(S1400)。そしてフレーム拡大を行うためバッファ拡大縮小処理部534に対して拡大の判定結果を伝え、バッファ拡大縮小処理部534はバッファ部510にダミーフレームを挿入させることによりフレームの拡大処理を実行させる(S1450)。もし蓄積量が上限閾値より大きくも下限閾値より小さくもなければ(S1300:NO)、フレームステータスは正常と判定する(S1500)。
次に縮小か、拡大か、正常かを判定した後に、フレーム欠落であるかどうかを判定し(S1600)、もしフレームが欠落である場合(S1600:YES)はフレームステータスが欠落であると判定し(S1700)、そのフレームステータスをフレーム補間部540へ通知する(S1800)。フレーム欠落でないと判断したときは(S1600:NO)フレームステータスはそのままにして、いままでの決定したバッファ部のフレームステータスをフレーム補間部540へ通知する(S1800)。
つぎに図7のフローチャートを参照して、フレーム補間部540の動作を説明する。
まず、フレーム補間制御部548は、欠落フレーム判定部536やバッファ拡大縮小判定部532から現フレームと前フレームのフレームステータスを取得し(S2000)、フレームステータス格納部546へフレームステータスを格納する。
次にフレーム補間制御部548は、そのフレームステータスを参照して、前フレームのフレームステータスが欠落であるかどうかを判断する(S2100)。もし前フレームのフレームステータスが欠落である場合(S2100:YES)、フレーム補間制御部548は音声特徴情報格納部544から音声特徴情報を読み出し(S2200)、補間処理を行う(S2300)。すなわち補間フレームの作成を行い補間部542に対し補間フレームを渡す。もし前フレームのフレームステータスが欠落でない場合は(S2100:NO)、前フレームが拡大かどうかを判断する(S2400)。もし前フレームのフレームステータスが拡大である場合は(S2400:YES)、音声特徴情報の読み出し以降の処理(S2200、S2300)を行う。
もし前フレームのフレームステータスは拡大でないと判断した場合は(S2400:NO)、現フレームのフレームステータスが拡大であるかどうかを判断する(S2500)。現フレームのフレームステータスが拡大である場合は(S2500:YES)、音声特徴情報算出部552は音声特徴情報を算出して(S2600)、それをもとにフレーム補間制御部548は、補間部542とともに補間処理を行い(S2700)、算出した音声特徴情報を音声特徴情報格納部544へ格納し保存する(S2800)。
もし現フレームのフレームステータスが拡大でない場合は(S2500:NO)、現フレームが欠落であるかどうかを判断する(S2900)。もし現フレームのフレームステータスが欠落である場合は(S2900:YES)、音声特徴情報算出部552は音声特徴情報を算出して(S2600)、フレーム補間制御部548は、補間部542とともに補間処理を行い(S2700)、算出した音声特徴情報を音声特徴情報格納部544へ格納し保存する(S2800)。
もし現フレームのフレームステータスが欠落でない場合(S2900:NO)は、現フレームのフレームステータスは正常または縮小であり、かつ、前フレームのフレームステータスも正常または縮小であるので、補間処理や音声特徴情報の読み出しや保存は行わない。
次に図8〜図13を参照して、現フレーム及び前フレームのフレームステータスにより現フレームを中心としたバッファ部510のフレーム構成が拡大や縮小等の処理の前と後とでどのように変化するかを説明する。
図8は現フレームのフレームステータスが縮小で前フレームのフレームステータスが縮小の場合のフレーム構成の変化を示している。
バッファ部(処理前)510(A)は現フレームの縮小処理を行う前の状態であり、リングバッファであるバッファ部(処理前)510(A)はアドレス0−14にフレーム0−14が格納されている。アドレス2のフレーム2は前フレームであり、バッファ出力部520への出力も完了しているが、前回の処理の結果この位置に配置されたものがそのまま残っている状態を示している。アドレス3のフレーム3が現フレームであり、アドレス3のデータは今回バッファ部510(A)から出力されようとしている。ところが、図8では未出力フレーム3−14がバッファ部510(A)内にあるから蓄積量は12であり、例えば上限閾値を11とした場合上限閾値を超えているのでバッファ拡大縮小処理部534は縮小処理を行うことになる。このためバッファ拡大縮小処理部534は現フレームのアドレス3にあるフレーム3を破棄することになる。破棄が終わるとアドレス4−14のフレーム4−14が全てひとつずつ相対位置を繰り下げて移動する。その結果バッファ部(処理後)510(B)のような配置となりフレーム3は存在していない。
図8に示すフレームステータスはフレームステータス格納部546が各アドレスのフレームステータスを保持している様子を示し、フレーム4に対応するフレームステータスのデータは縮小となっている。前フレームも縮小であったのでフレーム2に対応するフレームステータスも縮小となっている。尚、図8は現フレームが縮小処理を行う前の状態と縮小処理を行った後の状態とを比較表示するものであり、前フレームの縮小の結果破棄されたフレームはこの図には表示されていない。以下の図も同様である。
そしてアドレス3に位置するフレーム4が現フレームとなり出力してバッファ出力部520に入る。そして図8のフレーム補間部出力に示すようにフレーム補間部540の出力としてフレーム4が出力される。その後、次フレームであるアドレス4のデータが現フレームとなって、必要に応じて処理され、フレーム5,フレーム6,フレーム7・・・がこの順で出力されていく。フレームステータスは正常と縮小のみなので補間をされたフレームはない。
図9は現フレームのフレームステータスが縮小で前フレームのフレームステータスが拡大の場合のフレーム構成の変化を示している。
バッファ部(処理前)510(C)は現フレームの縮小処理を行う前の状態であり、リングバッファであるバッファ部(処理前)510(C)はアドレス0−14にフレーム0−14が格納されている。アドレス2のフレーム2は前フレームであり、バッファ出力部520への出力も完了しているが、前回の処理の結果この位置に配置されたものがそのまま残っている状態を示している。アドレス3のフレーム3が現フレームであり、アドレス3のデータがバッファ部510(C)から出力されようとしている。ところが、図9では未出力フレーム3−14がバッファ部510(C)内にあるから蓄積量は12であり、上限閾値の11を超えているのでバッファ拡大縮小処理部534は縮小処理を行うことになる。
このためバッファ拡大縮小処理部534は現フレームのアドレス3にあるフレーム3を破棄することになる。破棄が終わるとアドレス4−14のフレーム4−14が全てひとつずつ位置を繰り下げて移動する。その結果バッファ部(処理後)510(D)のような配置となりフレーム3は存在していない。
図9に示すフレームステータスはフレームステータス格納部546が各アドレスのフレームステータスを保持している様子を示し、フレーム4に対応するフレームステータスのデータは縮小となっている。前フレームは拡大であったのでフレーム2に対応するフレームステータスは拡大となっている。
そしてアドレス3に位置するフレーム4が現フレームとなり出力してバッファ出力部520に入る。そして図9のフレーム補間部出力に示すようにフレーム補間部540の出力としてフレーム4が出力される。その後、次フレームであるアドレス4のデータが現フレームとなって、必要に応じて処理され、フレーム5,フレーム6,フレーム7・・・の順で出力されていく。フレーム2のフレームステータスは拡大であり、フレーム4はフレームステータスは縮小である。フレーム補間部540は、図9のフレーム補間部出力に示すようにフレーム2は出力される時は前フレームが正常で現フレームが拡大なので補間を行い、フレーム4は現時点の前フレームのフレームステータスが拡大で現フレームのフレームステータスが縮小なので補間を行う。
図10は現フレームのフレームステータスが縮小で前フレームのフレームステータスが欠落の場合のフレーム構成の変化を示している。
バッファ部(処理前)510(E)は現フレームの縮小処理を行う前の状態であり、リングバッファであるバッファ部(処理前)510(E)はアドレス0−14にフレーム0−14が格納されている。アドレス2にはフレームが欠落しており、アドレス3のフレーム3が現フレームとなっており、アドレス3のデータがバッファ部510(E)から出力されようとしている。ところが、図10では未出力フレーム3−14がバッファ部510(E)内にあるから蓄積量は12であり、上限閾値の11を超えているのでバッファ拡大縮小処理部534は縮小処理を行うことになる。このためバッファ拡大縮小処理部534は現フレームのアドレス3にあるフレーム3を破棄することになる。破棄が終わるとアドレス4−14のフレーム4−14が全てひとつずつ相対位置を繰り下げて移動する。その結果バッファ部(処理後)510(F)のような配置となりフレーム3は存在していない。
図10に示すフレームステータスはフレームステータス格納部546が各アドレスのフレームステータスを保持している様子を示し、フレーム4に対応するフレームステータスのデータは縮小となっている。前フレームが欠落であったのでフレーム2に対応するフレームステータスは欠落となっている。
そしてアドレス3に位置するフレーム4が現フレームとなり出力してバッファ出力部520に入る。そして図10のフレーム補間部出力に示すようにフレーム補間部540の出力としてフレーム4が出力される。その後、次フレームであるアドレス4のデータが現フレームとなって、必要に応じて処理され、フレーム5,フレーム6,フレーム7・・・の順で出力されていく。フレーム2のフレームステータスは欠落であり、フレーム4のフレームステータスは縮小である。フレーム補間部540は、図10のフレーム補間部出力に示すようにフレーム2はその出力の時は前フレームのフレームステータスが正常で現フレームのフレームステータスが欠落なので補間を行い、フレーム4は現時点の前フレームのフレームステータスが欠落で現フレームのフレームステータスが縮小なので補間を行う。
図11は現フレームのフレームステータスが縮小で前フレームのフレームステータスが正常の場合のフレーム構成の変化を示している。
バッファ部(処理前)510(G)は現フレームの縮小処理を行う前の状態であり、リングバッファであるバッファ部(処理前)510(G)はアドレス0−14にフレーム0−14が格納されている。アドレス2のフレーム2は前フレームであり、バッファ出力部520への出力も完了しているが、前回の処理の結果この位置に配置されたものがそのまま残っている状態を示している。アドレス3のフレーム3が現フレームとなっており、アドレス3のデータがバッファ部510(G)から出力されようとしている。ところが、図11では未出力フレーム3−14がバッファ部510(G)内にあるから蓄積量は12であり、上限閾値の11を超えているのでバッファ拡大縮小処理部534は縮小処理を行うことになる。このためバッファ拡大縮小処理部534は現フレームのアドレス3にあるフレーム3を破棄することになる。破棄が終わるとアドレス4−14のフレーム4−14が全てひとつずつ相対位置を繰り下げて移動する。その結果バッファ部(処理後)510(H)のような配置となりフレーム3は存在していない。
図11に示すフレームステータスはフレームステータス格納部546が各アドレスのフレームステータスを保持している様子を示し、フレーム4に対応するフレームステータスのデータは縮小となっている。前フレームが正常であったのでフレーム2に対応するフレームステータスは正常となっている。
そしてバッファ部510(H)のアドレス3に位置するフレーム4が現フレームとなり出力してバッファ出力部520に入る。そして図11のフレーム補間部出力に示すようにフレーム補間部540の出力としてフレーム4が出力される。その後、次フレームであるアドレス4のデータが現フレームとなって、必要に応じて処理され、フレーム5,フレーム6,フレーム7・・・の順で出力されていく。フレーム2のフレームステータスは正常であり、フレーム4のフレームステータスは縮小である。フレーム補間部540は、図11のフレーム補間部出力に示すようにフレーム2はその出力の時は前フレームのフレームステータスが正常で現フレームのフレームステータスが正常なので補間を行わず、フレーム4は前フレームのフレームステータスが正常で現フレームのフレームステータスが縮小なので補間を行わない。
図12は現フレームのフレームステータスが拡大で前フレームのフレームステータスが正常の場合のフレーム構成の変化を示している。
バッファ部(処理前)510(I)は現フレームの拡大処理を行う前の状態であり、リングバッファであるバッファ部(処理前)510(I)はアドレス0−3にフレーム0−3が格納されている。アドレス1のフレーム1は前フレームであり、バッファ出力部520への出力も完了しているが、前回の処理の結果この位置に配置されたものがそのまま残っている状態を示している。アドレス2のフレーム2が現フレームとなっており、アドレス2のデータがバッファ部510(I)から出力されようとしている。ところが、図12では未出力フレームはフレーム2とフレーム3であり総フレーム数が2であるから例えば下限閾値を3とした場合下限閾値に満たないのでバッファ拡大縮小処理部534は拡大処理を行うことになる。このためバッファ拡大縮小処理部534は現フレームのアドレス2の位置にダミーフレームを挿入する。挿入するとアドレス2−3のフレーム2−3が全てひとつずつ相対位置を繰り上げて移動の結果バッファ部(処理後)510(J)のような配置(アドレス2−3の位置)となる。
図12に示すフレームステータスはフレームステータス格納部546が各アドレスのフレームステータスを保持している様子を示し、アドレス2に対応するダミーフレームのフレームステータスのデータは拡大となり、アドレス3に対応するフレーム2のフレームステータスは正常となっている。前フレームのフレームステータスは正常である。
そしてアドレス2に位置するダミーフレームが出力してバッファ出力部520に入る。また図12のフレーム補間部出力に示すようにフレーム補間部540の出力として挿入されたダミーフレームが出力される。その後、バッファ部510(J)の現フレームとなるアドレス3のフレーム2はフレームステータスが正常であり、フレーム補間部540から出力される。フレーム補間部540は、図12のフレーム補間部出力に示すようにフレーム1は出力される時は前フレームのフレームステータスが正常で現フレームのフレームステータスが正常なので補間を行わず、アドレス2のダミーフレームは前フレームのフレームステータスが正常で現フレームのフレームステータスが拡大なので補間を行う。バッファ部510(J)のアドレス3のフレーム2(処理後)は出力される時における前フレームのフレームステータスが拡大で現フレームのフレームステータスが正常なので補間を行う。
図13は現フレームのフレームステータスが欠落で前フレームのフレームステータスが正常の場合のフレーム構成の変化を示している。
バッファ部(処理前)510(K)は現フレームの処理を行う前の状態であり、リングバッファであるバッファ部(処理前)510(K)はアドレス0−4にフレーム0−4が格納されている。アドレス1のフレーム1は前フレームであり、バッファ出力部520への出力も完了しているが、前回の処理の結果この位置に配置されたものがそのまま残っている状態を示している。アドレス2にはフレームが到着しなかったため存在していない状態を示している。ところが、図13ではデータの未出力フレーム数が欠落部分を含めると3であるから下限閾値の3以上であるのでバッファ拡大縮小処理部534は拡大処理を行わない。ここでの処理の結果としてはフレームの移動はなく、バッファ部(処理後)510(L)の配置(アドレス3−4の位置)はバッファ部(処理前)510(K)の配置と変わらない。
図13に示すフレームステータスはフレームステータス格納部546が各アドレスのフレームステータスを保持している様子を示し、アドレス2に対応する欠落フレームのフレームステータスのデータは欠落となり、アドレス3に対応するフレーム3のフレームステータスは正常となっている。前フレームのフレームステータスは正常である。
そしてアドレス2に位置する欠落部分はフレーム補間部540に対して出力されない。しかしフレーム補間制御部548において補間フレームが生成され図13のフレーム補間部出力に示すようにフレーム補間部540の出力として補間フレームが出力される。その後、次フレームであるアドレス3のフレーム3が現フレームとなって、必要に応じて処理される。フレーム補間部540は、図13のフレーム補間部出力に示すようにフレーム1は出力される時は前フレームのフレームステータスが正常で現フレームのフレームステータスが正常なので補間を行わず、アドレス2の欠落フレームは前フレームのフレームステータスが正常で現フレームのフレームステータスが欠落なので補間を行う。アドレス3のフレーム3は出力される時は前フレームのフレームステータスが欠落で現フレームのフレームステータスが正常なので補間を行う。
次にフレーム補間処理の動作の一例について図14と図15のフローチャートを参照して説明する。補間処理の方法は様々なバリエーションが考えられ、本発明の補間処理は以下の方法に限定されるものではない。図14は現フレームが拡大もしくは欠落で前フレームが正常もしくは縮小の場合の補間処理を示すフローチャートである。図14は処理がS3000〜S3090のピッチ探索とS3100〜S3140までの補間フレーム生成との二つに大別される。
まず、動作の概要を以下に説明する。音声特徴情報算出部552はフレームデータ記憶部550に格納された過去の音声データ列から所定の範囲の相関演算によってピッチ周期(音声基本周波数の周期)を算出して音声特徴情報格納部544に格納する。次にフレーム補間制御部548はこのピッチ周期の単位で、過去の直近データから複製を繰り返して補間フレームを生成する。
次に変数、定数等の定義を説明する。
[変数、定数の定義]
F:1フレームの音声データ数
T:ピッチ
Tmax:探索ピッチ上限
Tmin:探索ピッチ下限
n:ピッチ探索ステップ幅
(上記ピッチの単位はサンプル、ピッチ周期=ピッチ×サンプリング時間)
まず音声特徴情報算出部552はフレームデータ記憶部550から過去のフレームの時系列データを読み出してきてこれを音声データFd(t)とする(S3000)。次にT=Tmin、相関最大値=0とする(S3010)。
次に音声特徴情報算出部552はピッチTが探索ピッチ上限Tmaxより大きいかどうかを判断する(S3020)。もしTmaxより大きくなければ(S3020:NO)、音声特徴情報算出部552は読み出した過去の音声データを探索ピッチ下限Tminサンプル分遅延させてシフト音声データを生成する。すなわちシフト音声データ(t)=音声データ(t+T)とする(S3030)。
次に音声特徴情報算出部552はシフト音声データ(t)と音声データ(t)と乗算を実行して自己相関関数(以下、相関(T)という)を計算する(S3040)。そして音声特徴情報算出部552は相関(T)が相関最大値より大きいかどうかを判断する(S3050)。もし相関最大値より大きければ(S3050:YES)、相関(T)を相関最大値とする(S3060)。そしてそのときのTをピッチ(基本周波数の周期)とする(S3070)。そしてさらにnサンプル遅延させてT=T+nとして(S3080)、相関の演算を繰り返す(S3020へ飛ぶ)。
そしてもし相関(T)が相関最大値より大きくなければ(S3050:NO)、S3080へ飛び、nサンプル遅延させてT=T+nとして(S3080)、相関の演算を繰り返す。このようにして音声特徴情報算出部552はTmaxサンプル分遅延まで相関の演算を繰り返して、TがTmaxを超えたなら(S3020:YES)、演算した相関(T)の最大値を与えるTをピッチTとして決定し、ピッチTを音声特徴情報格納部544に格納する(S3090)。そしてピッチ探索を終了する。
この音声特徴情報算出部552は、ピッチ周期(音声基本周波数の周期)Tを音声特徴情報として音声特徴情報格納部544へ格納する。
次にフレーム補間制御部548は補間フレーム生成の処理を開始する。まず前フレームのサンプルデータ数をFとする(S3100)。そしてF−Tの値をFとすると(S3110)、もしFが負でなければ(S3120:NO)、フレーム補間制御部548は補間フレームとしてフレームデータ記憶部550に格納されている前フレーム内の直近のT個の音声データを複製して補間部542へ出力する(S3130)。
そしてS3110に戻り、フレーム補間制御部548はさらにT個データを複製し補間フレームとして出力を繰り返す。そして、補間フレームの未出力分がT個に満たなくなったら、すなわちFが負になったとき(S3120:YES)、補間フレームの未出力相当数分の音声データを前フレーム内の直近の未出力相当数分の音声データから複製して補間フレームとして補間部542へ出力する(S3140)。そして補間部542はこれらの補間フレームをフレーム列の適切な位置に挿入または置き換えて音声出力部160に送出する。
次に前フレームが拡大もしくは欠落の場合の補間処理について図15を参照して説明する。図15は前フレームが拡大もしくは欠落の場合の補間処理を示すフローチャートである。
この処理は、フレーム補間制御部548が音声特徴情報格納部544から取得したピッチ周期(音声基本周波数の周期)の単位で、過去の直近データから複製を繰り返し補間フレームを生成するものである。
まずフレーム補間制御部548は音声特徴情報格納部544からピッチ(音声基本周波数)周期を取得する(S4000)。そして前フレームのサンプルデータ数をFとする(S4100)。そしてF−Tの値をFとすると(S4200)、もしFが負でなければ(S4300:NO)、フレーム補間制御部548は補間フレームとしてフレームデータ記憶部550に格納されている前フレーム内の直近のT個の音声データを複製して補間部542へ出力する(S4400)。
そしてS4200に戻り、フレーム補間制御部548はさらにT個データを複製し補間フレームとして出力を繰り返す。そして、補間フレームの未出力分がT個に満たなくなったら、すなわちFが負になったとき(S4300:YES)、補間フレームの未出力相当数分の音声データを前フレーム内の直近の未出力相当数分の音声データから複製して補間フレームとして補間部542へ出力する(S4500)。そして補間部542はこれらの補間フレームをフレーム列の適切な位置に挿入または置き換えて音声出力部160に送出する。
補間方式については本実施の形態では、ピッチ抽出補間方式を例にとり説明したが、これに限られるわけではなく、重み付けパラメータを用いた線形予測方式やその他の方式であっても本発明は適用できる。
このように、本実施の形態によれば、音声特徴情報算出部552が音声特徴情報を算出して音声特徴情報格納部544に格納するのは、現フレームが拡大もしくは欠落であり、かつ、前フレームが正常もしくは縮小である場合に限られる。そして前フレームが拡大もしくは欠落である場合は音声特徴情報格納部544から音声特徴情報を読み出して使用するため新たに算出する必要がない。したがって、音声特徴情報を算出する回数すなわち音声信号の複雑な演算処理量が大幅に減少するため、補間処理の処理負荷を削減することができる。
なお、本実施の形態で実現される機能および動作はコンピュータのプログラムにより実現するようにしてもよく、その場合は、そのプログラムを格納する図示しないメモリや制御を行うCPU等を、IP電話機100やターミナルアダプタ400に備えるものとする。また、プログラムを格納する媒体は外部記憶媒体でもよく、例えば、EPROMやフラッシュEEPROM、CD−ROMなどであってもよい。