JP6038635B2 - 信号処理装置および信号処理方法 - Google Patents

信号処理装置および信号処理方法 Download PDF

Info

Publication number
JP6038635B2
JP6038635B2 JP2012279306A JP2012279306A JP6038635B2 JP 6038635 B2 JP6038635 B2 JP 6038635B2 JP 2012279306 A JP2012279306 A JP 2012279306A JP 2012279306 A JP2012279306 A JP 2012279306A JP 6038635 B2 JP6038635 B2 JP 6038635B2
Authority
JP
Japan
Prior art keywords
queue
sound data
time stamp
data
task
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2012279306A
Other languages
English (en)
Other versions
JP2014123875A (ja
Inventor
隆 須藤
隆 須藤
修 三分一
修 三分一
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Toshiba Corp
Toshiba Information Systems Japan Corp
Original Assignee
Toshiba Corp
Toshiba Information Systems Japan Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Toshiba Corp, Toshiba Information Systems Japan Corp filed Critical Toshiba Corp
Priority to JP2012279306A priority Critical patent/JP6038635B2/ja
Priority to US14/092,354 priority patent/US9179217B2/en
Publication of JP2014123875A publication Critical patent/JP2014123875A/ja
Application granted granted Critical
Publication of JP6038635B2 publication Critical patent/JP6038635B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04RLOUDSPEAKERS, MICROPHONES, GRAMOPHONE PICK-UPS OR LIKE ACOUSTIC ELECTROMECHANICAL TRANSDUCERS; DEAF-AID SETS; PUBLIC ADDRESS SYSTEMS
    • H04R3/00Circuits for transducers, loudspeakers or microphones
    • H04R3/002Damping circuit arrangements for transducers, e.g. motional feedback circuits
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04RLOUDSPEAKERS, MICROPHONES, GRAMOPHONE PICK-UPS OR LIKE ACOUSTIC ELECTROMECHANICAL TRANSDUCERS; DEAF-AID SETS; PUBLIC ADDRESS SYSTEMS
    • H04R2499/00Aspects covered by H04R or H04S not otherwise provided for in their subgroups
    • H04R2499/10General applications
    • H04R2499/11Transducers incorporated or for use in hand-held devices, e.g. mobile phones, PDA's, camera's

Landscapes

  • Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Acoustics & Sound (AREA)
  • Signal Processing (AREA)
  • Circuit For Audible Band Transducer (AREA)
  • Cable Transmission Systems, Equalization Of Radio And Reduction Of Echo (AREA)

Description

本発明の実施形態は、エコーをキャンセルするための技術に関する。
一般に、テレビ会議、電話会議といった通信システムにおいては、ハンズフリー通話が広く利用されている。このハンズフリー通話を実現するためには、エコー(音響エコー)をキャンセルするためのエコーキャンセラが有用である。
エコーキャンセラを備える通信システムとしては、基地局のような装置内でエコーをキャンセルするための処理を実行するシステムが知られている。
また、スマートフォン、PDA、パーソナルコンピュータといった情報端末においては、エコーキャンセラは、通話のみならず、マイクから入力されるサウンド信号を処理することが必要な様々なアプリケーションに適用することもできる。
特開2004−40542号公報
ところで、従来の情報端末においては、サウンド信号の処理は専用LSI、DSPといったハードウェアによって行われていたが、近年の多くの情報端末においては、サウンド信号はソフトウェアによって処理される場合がある。
エコーはスピーカから出力される音がマイクロホンにまわり込むことによって引き起こされる。このため、マイクロホンから入力される入力サウンド信号からエコー成分をキャンセルするためには、このエコー成分に対応する出力サウンド信号を特定することが必要である。しかし、多くの情報端末においては非リアルタイムOSが利用されているため、スピーカに出力サウンド信号を送出するためのタスクとマイクロホンから入力サウンド信号を取得するためのタスクとを厳密に同期させることは困難である。このため、入力サウンド信号と出力サウンド信号との同期がとれず、エコーキャンセル動作が不安定になる場合がある。
本発明の目的は、安定したエコーキャンセル動作を行うことができる信号処理装置および信号処理方法を提供することである。
実施形態によれば、信号処理装置は、アプリケーション層から受信される再生対象のサウンドストリームを信号処理装置のスピーカに送出するための第1のタスクと信号処理装置のマイクロホンからサウンドストリームを取得するための第2のタスクとを含む複数のタスクを実行するように構成されている。前記信号処理装置は、第1の処理手段と、第2の処理手段と、制御手段と、エコーキャンセラとを具備する。第1の処理手段は、前記第1のタスクから出力される出力サウンドデータを、タイムスタンプが付与された状態で第1のキューに追加する。前記第2の処理手段は、前記第2のタスクによって前記マイクロホンから取得される入力サウンドデータを、タイムスタンプが付与された状態で第2のキューに追加する。前記制御手段は、前記第1のキューから、前記第2のキューの先頭の第1の入力サウンドデータのタイムスタンプとの時間差が所定範囲内のタイムスタンプを有する第1の出力サウンドデータをリファレンスデータとして取り出す。前記エコーキャンセラは、前記リファレンスデータに基づいて前記第1の入力サウンドデータ内のエコー成分をキャンセルするエコーキャンセル処理を実行する。
実施形態に係る信号処理装置の構成を示すブロック図。 同実施形態の信号処理装置に含まれるTx/Rx同期制御部の構成を示すブロック図。 図2のTx/Rx同期制御部内のRxスレッドによって生成されるRxパケットの構成例を示す図。 図2のTx/Rx同期制御部の動作を示す図。 図2のTx/Rx同期制御部によって実行されるタイムスタンプ付与動作の例を示す図。 図2のTx/Rx同期制御部内のRxスレッドによって実行される処理の手順を示すフローチャート。 図2のTx/Rx同期制御部内のTxスレッドによって実行される処理の手順を示すフローチャート。 図2のTx/Rx同期制御部内のTxスレッドによって実行されるパケット同期処理の手順を示すフローチャート。 同実施形態の信号処理装置のアプリケーション層の構成例を示すブロック図。 同実施形態の信号処理装置のアプリケーション層の他の構成例を示すブロック図。
以下、実施の形態について図面を参照して説明する。
図1は、一実施形態に係る信号処理装置10の構成を示す。この信号処理装置10は、タブレット、スマートフォン、パーソナルコンピュータといった情報端末として実現し得る。この信号処理装置10は、スピーカ11およびマイクロホン12を備える。この信号処理装置10は、ソフトウェアを使用してサウンドデータを処理することができる。この信号処理装置10は、出力タスク21と入力タスク22とを含む複数のタスクを実行するように構成されている。これら各タスクはプロセスであってもよいし、スレッドであってもよい。
サウンドデータを処理するためのソフトウェアは、オペレーティングシステム上で動作する3つの層、つまり、ドライバ層13、サウンドミドルウェア層14、およびアプリケーション層15を含み得る。オペレーティングシステムとしては、Android OS(登録商標)を使用してもよい。Android OS(登録商標)を使用する場合には、ドライバ層13はAndroid OS(登録商標)のALSA(Advance Linux(登録商標) Sound Architecture)であってよく、サウンドミドルウェア層14はAndroid OS(登録商標)のHAL(Hardware Abstraction Layer)であってもよい。HALは、ハードウェアを抽象化するためのソフトウェア層である。
出力タスク21は、アプリケーション層15から受信される再生対象のサウンドストリーム(Rx信号系列)をスピーカ11に送出するためのサウンド出力タスクである。出力タスク21は、Android−OS(登録商標)のAudioStreamOutであってもよい。AudioStreamOutは、サウンド(オーディオ)出力ハードウェアを抽象化するためのスレッドである。この出力タスク21は、上述のサウンドミドルウェア層14上に位置する。
アプリケーション層15はサウンドデータ(音声信号、または音楽のようなオーディオ信号)を扱うための1以上のアプリケーションプログラムによって実現される。アプリケーション層15は、VoIPのような通信プロトコルを使用して端末間で音声通信をするためのアプリケーションプログラムであってもよい。VoIPのような通信プロトコルは、TV会議、電話会議、ビデオチャット、ボイスチャット、IP電話、他の様々な音声コミュニケーションを実行するために使用しうる。
入力タスク22は、マイクロホン12から音声信号のようなサウンドストリーム(Tx信号系列)を取得するためのサウンド入力タスクである。入力タスク22は、Android−OS(登録商標)のAudioStreamInであってもよい。AudioStreamInはサウンド(オーディオ)入力ハードウェアを抽象化するためのスレッドである。入力タスク22は、上述のサウンドミドルウェア層14上に位置する。
出力タスク21と入力タスク22は互いに独立したタスクである。したがって、出力タスク21と入力タスク22は互いに非同期で動作する。
エコーキャンセラ(EC)23は、出力タスク21から出力される出力サウンドデータに基づいて推定される疑似エコー信号(エコー成分)を、入力タスク22から受信される入力サウンドデータから減じることによって、第1の入力サウンドデータ内のエコー成分をキャンセルするエコーキャンセル処理を実行する。このエコーキャンセラ(EC)23は、サウンドミドルウェア層14上に位置するソフトウェアによって実現し得る。なお、エコーキャンセラ(EC)23にノイズキャンセラ(NC)の機能を追加してもよい。
エコーキャンセラ(EC)23においては、入力サウンドデータ(Tx信号)に対応する出力サウンドデータ(Rx信号)に基づいて、入力サウンドデータ(Tx信号)内のエコー成分を推定する必要がある。このため、エコーキャンセラ(EC)23においては、Tx信号とRx信号の入力タイミングを合わせる必要があるため、2つのスレッド(出力タスク21、入力タスク22)から送られてくるデータ間の同期制御、つまり入力サウンドデータ(Tx信号)と出力サウンドデータ(Rx信号)との間の同期制御が必要となる。
上述したように、出力タスク(AudioStreamIn)21と入力タスク(AudioStreamOut)22は非同期のタスク(非同期のスレッド)であり、例えばVoIP開始時には出力タスク21の動作開始タイミングと入力タスク22の動作開始タイミングが異なる場合がある。例えば、VoIP動作開始時は出力タスク21が入力タスク22よりも先に動作を開始する場合がある。また、例えば、VoIP動作中においては、出力タスク21からの出力サウンドデータ(Rx信号)の個数が入力タスク22からの入力サウンドデータ(Tx信号)の個数よりも多くなるという現象(揺らぎ)、つまり余分なRx信号が入力されるという現象が発生する場合がある。このような揺らぎが発生すると、Tx信号の入力タイミングとRx信号の入力タイミングとが徐々にずれて行き、Tx/Rx信号間の同期がとれなくなる。そのため、VoIP開始時にはRx信号とTx信号の入力タイミングを合わせることが必要であり、さらに、VoIP動作中においては、Tx信号の入力タイミングとRx信号の入力タイミングとがずれているか否かを判定し、入力タイミングのずれが検出された場合にはTx信号の入力タイミングとRx信号の入力タイミングとを調整することが必要となる。
そこで、本実施形態の信号処理装置10は、Tx/Rx信号間の同期制御を行うように構成されたTx/Rx同期制御部24を備えている。Tx/Rx同期制御部24はサウンドミドルウェア層(HAL)14に位置し、入力タスク(AudioStreamIn)22および出力タスク(AudioStreamOut)21から入力サウンドデータ(Tx信号)および出力サウンドデータ(Rx信号)を順次受け取り、ある入力サウンドデータ(Tx信号)と、このある入力サウンドデータ(Tx信号)に対応する出力サウンドデータ(Rx信号)とがエコーキャンセラ(EC)23に入力されることを可能にするための同期制御を行う。
図2は、Tx/Rx同期制御部24の構成を示す。Tx/Rx同期制御部24は、Rxスレッド50およびTxスレッド60を備える。
Rxスレッド50は、出力タスク21から出力される出力サウンドデータ(Rx信号)を、タイムスタンプが付与された状態でRxキュー52に追加する。Rxキュー52は可変長のキューである。出力タスク21から出力される出力サウンドデータはスピーカ11に送出されると共に、Rxスレッド50にも送られる。Rxスレッド50が出力サウンドデータを受信した時に、Rxスレッド50はタイムススタンプ(現在のクロックタイム)を取得し、出力サウンドデータとタイムススタンプとを含むパケット(Rxパケット)をRxキュー52に追加する。タイムスタンプは、Rxスレッド50によって出力サウンドデータが受信されたタイミングを示す。
Txスレッド60は、入力タスク22によってマイクロホン12から取得される入力サウンドデータ(Tx信号)を、タイムスタンプが付与された状態でTxキュー62に追加する。Txキュー62は可変長のキューである。Txスレッド60が入力サウンドデータを受信した時に、Txスレッド60はタイムススタンプ(現在のクロックタイム)を取得し、入力サウンドデータとタイムススタンプとを含むパケット(Txパケット)をTxキュー62に追加する。このタイムスタンプは、Txスレッド60によって入力サウンドデータが受信されたタイミングを示す。
Txスレッド60は、さらに、Tx/Rxタイムスタンプ比較部64を備える。Tx/Rxタイムスタンプ比較部64は、Rxキュー52から、Txキュー62の先頭の入力サウンドデータ(第1の入力サウンドデータ)のタイムスタンプとの時間差が所定範囲内のタイムスタンプを有する出力サウンドデータ(第1の出力サウンドデータ)をリファレンスデータとして取り出す制御部として機能する。上述の第1の入力サウンドデータはTxバッファ68を介してエコーキャンセラ(EC)23に送られ、また上述の第1の出力サウンドデータはRxバッファ66を介してエコーキャンセラ(EC)23に送られる。なお、上述の所定範囲は予め決められた時間長を有している。
上述したように、出力タスク21と入力タスク22は別個のタスクであり、これら出力タスク21と入力タスク22は非同期で動作する。このため、もしRxキュー52から、Txキュー62の先頭の入力サウンドデータ(第1の入力サウンドデータ)のタイムスタンプに一致するタイムスタンプを有する出力サウンドデータを取り出そうとすると、このような出力サウンドデータがなかなか見つからず、エコーキャンセル処理が比較的長い間実行されない可能性がある。この場合、エコー成分を含む入力サウンドデータが遠隔端末に送信されてしまう可能性がある。
本実施形態では、出力タスク21と入力タスク22が非同期で動作していることを考慮して、Rxキュー52から、Txキュー62の先頭の入力サウンドデータ(第1の入力サウンドデータ)のタイムスタンプとの時間差が所定範囲内のタイムスタンプを有する出力サウンドデータ(第1の出力サウンドデータ)をリファレンスデータとして取り出している。したがって、出力タスク21と入力タスク22とが非同期で動作する環境であっても、つまり、上述の揺らぎが発生しても、エコー成分を安定して推定することができ、これによって安定したエコーキャンセル処理を実現することができる。
より詳しくは、Tx/Rxタイムスタンプ比較部64は、まず、Txキュー62およびRxキュー52の各々に蓄積されているデータ量をチェックする。エコーキャンセル処理に必要なデータサイズ以上のデータがTxキュー62およびRxキュー52の各々に蓄積されていれば、Tx/Rxタイムスタンプ比較部64は、Txキュー62の先頭の入力サウンドデータのタイムスタンプ(Tx Time)をRxキュー52の先頭の出力サウンドデータのタイムスタンプ(Rx Time)と比較する。そして、これらタイムスタンプ間の時間差(=Tx Time−Rx Time)が上述の所定範囲内である場合、Tx/Rxタイムスタンプ比較部64は、Txキュー62の先頭の入力サウンドデータとRxキュー52の先頭の出力サウンドデータとが同期していることをエコーキャンセラ(EC)23に通知してもよい。これにより、Tx/Rxタイムスタンプ比較部64は、Rxキュー52の先頭の出力サウンドデータとTxキュー62の先頭の入力サウンドデータとを使用したエコーキャンセル処理をエコーキャンセラ(EC)23に実行させることができる。
エコーキャンセル処理においては、エコーキャンセラ(EC)23は、Rxキュー52の先頭の出力サウンドデータをリファレンスデータとして使用する。そして、エコーキャンセラ(EC)23は、例えばこのリファレンスデータとスピーカ11からマイクロホン12への伝達関数を模擬したフィルタ係数とを畳み込むことによって、リファレンスデータに対応する疑似エコー信号(エコー成分)を推定し、この疑似エコー信号をTxキュー62の先頭の入力サウンドデータから減じる。疑似エコー信号が減じられた入力サウンドデータはTx出力バッファ31を介してアプリケーション層15に送られる。このように、エコーキャンセラ(EC)23においては、リファレンスデータに基づいてTxキュー62の先頭の入力サウンドデータ内のエコー成分をキャンセルする処理が実行される。
一方、Txキュー62の先頭の入力サウンドデータのタイムスタンプをRxキュー52の先頭の出力サウンドデータのタイムスタンプとの間の時間差(=Tx Time−Rx Time)が上述の所定範囲を超えている場合には、Tx/Rxタイムスタンプ比較部64は、Tx/Rx信号間のタイミングがずれていること、つまりRxキュー52の先頭の出力サウンドデータが余分な(古い)出力サウンドデータであると判定する。この場合、Tx/Rxタイムスタンプ比較部64は、Rxキュー52の先頭の出力サウンドデータを破棄してRxキュー52の2番目の出力サウンドデータをRxキュー52の先頭に移す。そして、Tx/Rxタイムスタンプ比較部64は、Txキュー62の先頭の入力サウンドデータのタイムスタンプとRxキュー52の先頭に移された出力サウンドデータのタイムスタンプとを再度比較する。このようにして、余分な(古い)出力サウンドデータが破棄されることにより、Tx/Rx信号間のタイミングが調整される。
ここで、VoIP開始時の同期制御動作を説明する。VoIP開始時には、出力タスク(AudioStreamOut)21が入力タスク22よりも先に動作を開始する場合がある。この場合、まず、最初に、Rxキュー52に幾つかのRxパケットが蓄積される。この後、入力タスク22が動作を開始し、Txキュー62にTxパケットが蓄積される。Txスレッド60は、Txキュー62の先頭のパケットのTxタイムスタンプとRxキュー52の先頭のRxパケットのタイムスタンプとを比較する。このRxパケットはTxパケットよりもかなり古いパケットである場合がある。この場合、これらパケットのタイムスタンプ間の時間差(Tx Time−Rx Time)は大きい。したがって、Txスレッド60は、同期ずれが発生していると判定し、このRxパケットをRxキュー52から破棄する。タイムスタンプ間の時間差(Tx Time−Rx Time)が少なくなるまで、Rxキュー52の先頭のRxパケットに後続する幾つかのRxパケットが順次破棄される。
次に、VoIP動作中の同期制御動作を説明する。VoIP動作中においては、出力サウンド信号RxデータがTxデータに比べて多く発生する場合がある。この場合、出力タスク(AudioStreamOut)21から出力サウンドデータ(Rx信号)が連続して投げられ、Rxキュー52に余分なデータが蓄積されてしまうケースが発生する。この場合、短い期間内に複数のRxパケットが作成されるため、タイムスタンプの差が小さな複数のRxパケットがRxキュー52に追加される。Txキュー62に蓄積される複数のTxパケットそれぞれのタイムスタンプは一定に近い間隔で増加するのに対して、Rxキュー52に蓄積される複数のRxパケットそれぞれのタイムスタンプはほとんど増加しないため、Txキュー62の先頭のTxパケットとRxキュー52の先頭のRxパケットとの間の時間差(Tx Time−Rx Time)が大きくなり、同期ずれと判定される。同期ずれと判定された場合には、Rxキュー52の先頭のRxパケットが破棄される。
図3は、Rxスレッド50によって生成されるRxパケットの構成例を示す。Rxスレッド50は、出力タスク21から受信される出力サウンドデータ(バッファ)にタイムスタンプを付与してRxパケットを生成する。そして、Rxスレッド50は、Rxパケットを、可変長のRxキュー52の末尾に追加する。Rxパケットは、出力サウンドデータ(バッファ)に、その出力サウンドデータのデータサイズ(バッファサイズ)とタイムスタンプとが付加された構造体である。
エコーキャンセル処理に必要なデータサイズ(EC入力バッファサイズ)分の出力サウンドデータがRxキュー52から取り出される。同時に、タイムスタンプもRxキュー52から取り出される。EC入力バッファサイズは、エコーキャンセル処理で使用される適応フィルタのフィルタ長に対応するデータサイズであってもよい。
Txパケットも、Rxパケットと同様の構造を有する。すなわち、Txパケットは、入力サウンドデータ(バッファ)に、その入力サウンドデータのデータサイズ(バッファサイズ)とタイムスタンプとが付加された構造体である。
図4は、Tx/Rx同期制御部24の動作を示す。Txキュー62およびRxキュー52の各々にEC入力バッファサイズ分のデータが蓄積されていれば、Tx/Rx同期制御部24は、Txキュー62およびRxキュー52の各々の先頭からデータを取り出す。同時に、Tx/Rx同期制御部24は、Txキュー62およびRxキュー52の各々の先頭からタイムスタンプも取り出し、Txキュー62の先頭のデータに対応するタイムスタンプとRxキュー52の先頭のデータに対応するタイムスタンプとを比較する(タイムスタンプ比較処理)。
Rxパケット内の出力サウンドデータのデータサイズ、Txパケット内の入力サウンドデータのデータサイズ、EC入力バッファサイズは、互いに異なる。このため、連続する2つのTxパケットをまたいで入力サウンドデータを取得するケースや、連続する2つのRxパケットをまたいで出力サウンドデータを取得するケースも発生する。
連続する2つのパケット(古いパケットと新しいパケット)をまたいでデータを取得する場合には、データの取得に新たに使用されたパケット(新しいパケット)のタイムスタンプがタイムスタンプ比較処理で使用される。図4においては、タイムスタンプ(2)とタイムスタンプ(3)とが比較される。なお、タイムスタンプ(3)とタイムスタンプ(4)とに基づいて、タイムスタンプ比較処理で使用すべき新たなタイムスタンプを算出してもよい。この場合、新しいパケットから取得されるデータサイズと古いパケットから取得されるデータサイズとの比に基づいて、古いパケットのタイムスタンプと新しいパケットのタイムスタンプの重み付け平均を算出してもよい。
タイムスタンプ比較処理においては、Tx/Rx同期制御部24は、過去数フレームでのタイムスタンプの差(Tx Time−Rx Time)の平均値(AVR(Tx Time−Rx Time)を算出してもよい。
より詳しくは、Tx/Rx同期制御部24は、Rxキュー52の先頭のRxパケットのタイムスタンプとTxキュー62の先頭のTxパケットのタイムスタンプとの間の時間差(Tx Time−Rx Time)と、直前の複数回のタイムスタンプ間の比較によって得られる複数個の時間差(Tx Time−Rx Time)とを使用して、これら全ての時間差(Tx Time−Rx Time)の平均(移動平均)を上述の平均値(AVR(Tx Time−Rx Time)として算出し得る。移動平均が上述の所定範囲に対応する閾値よりも大きいか否かに応じて、Tx/Rx同期制御部24は、同期ずれが発生しているか否かを判定する。このように移動平均を用いて同期ずれの有無を判定することにより、Rx/Txパケットのタイムスタンプの瞬時的な変動に影響されにくい、安定した判定動作を実現できる。
図5は、Tx/Rx同期制御部24によって実行されるタイムスタンプ付与動作の例を示す。
サウンドミドルウェア層14よりもハードウェア寄りの層として上述のドライバ層13が存在する。ドライバ層13においてもTx/Rx信号がバッファリングされる場合がある。この場合、出力タスク(AudioStreamOut)21が下位に渡すRx信号がスピーカ11から出力されるタイミングは、ドライバ層13内のサウンド出力バッファ(RxALSABuf)131の埋まり具合に依存する可能性がある。サウンド出力バッファ(RxALSABuf)131に蓄積されているデータ量が多いほど、Rx信号に対応する音が実際にスピーカ11から出るタイミングは、Rx信号にタイムスタンプとして付与されたクロックタイムよりも遅くなる場合がある。
Tx/Rx同期制御部24は、上述したように、Tx/Rx同期制御部24が出力タスク21からRx信号を受信した時に、現在のクロックタイムを取得し、そのクロックタイムをタイムスタンプとしてRx信号に付与する。この場合、Tx/Rx同期制御部24は、サウンド出力バッファ(RxALSABuf)131に蓄積されているデータ量に応じて、上述のクロックタイム(タイムスタンプ)を修正し得る。サウンド出力バッファ(RxALSABuf)131に蓄積されているデータ量に対応する時間だけ、Rx信号に付与されるクロックタイム(タイムスタンプ)の値が進められるように、蓄積されているデータ量に応じたオフセット値をクロックタイムに加算することによってクロックタイム(タイムスタンプ)の値を修正してもよい。
同様に、入力タスク(AudioStreamIn)22からTx信号が出力されるタイミングは、ドライバ層13内のサウンド入力バッファ(TxALSABuf)132の埋まり具合に依存する可能性がある。サウンド入力バッファ(TxALSABuf)132に蓄積されているデータ量が多いほど、入力タスク(AudioStreamIn)22からTx信号が出力されるタイミングは、マイクロホン12に音声信号が入力されるタイミングよりも遅くなる。Tx/Rx同期制御部24は、上述したように、Tx/Rx同期制御部24が入力タスク22からTx信号を受信した時に、現在のクロックタイムを取得し、そのクロックタイムをタイムスタンプとしてTx信号に付与する。この場合、Tx/Rx同期制御部24は、サウンド入力バッファ(TxALSABuf)132に蓄積されているデータ量に応じて、上述のクロックタイム(タイムスタンプ)を修正し得る。サウンド入力バッファ(TxALSABuf)132に蓄積されているデータ量に対応する時間だけ、Tx信号に付与されるクロックタイム(タイムスタンプ)の値が遅らされるように、蓄積されているデータ量に応じたオフセット値をクロックタイムから減算することによってクロックタイム(タイムスタンプ)の値を修正してもよい。
図6のフローチャートは、Tx/Rx同期制御部14内のRxスレッド50によって実行される処理の手順を示す。
出力タスク(AudioStreamOut)21がオペレーティングシステムからコールされると(ステップS11)、出力タスク(AudioStreamOut)21は、Rx信号を出力する。このRx信号はドライバ層13を介してスピーカ11に送られると共に、Rxスレッド50に送られる。Rxスレッド50は、Rx信号の受信に応答して、クロック関数を使用して、オペレーティングシステムを通じて現在のクロックタイムをタイムスタンプ(システムタイムスタンプ)として取得する(ステップS12)。
Rxスレッド50は、Rx信号(バッファ)、バッファサイズ、タイムスタンプを含む上述のRxパケットを生成する(ステップS13)。そして、Rxスレッド50は、Rxパケットを可変長のRxキュー52の末尾に追加する(ステップS14)。ステップS12〜S14の処理は、Rx信号が受信される度に実行される。
図7のフローチャートは、Tx/Rx同期制御部24のTxスレッド60によって実行される処理の手順を示す。
入力タスク(AudioStreamIn)22がオペレーティングシステムからコールされると(ステップS21)、入力タスク(AudioStreamIn)22は、Tx信号を出力する。このTx信号はTxスレッド60に送られる。Txスレッド60は、Tx信号の受信に応答して、クロック関数を使用して、オペレーティングシステムを通じて現在のクロックタイムをタイムスタンプ(システムタイムスタンプ)として取得する(ステップS22)。Txスレッド60は、Tx信号(バッファ)、バッファサイズ、タイムスタンプを含む上述のTxパケットを生成する(ステップS33)。そして、Txスレッド60は、Txパケットを可変長のTxキュー62の末尾に追加する(ステップS24)。
次いで、Txスレッド60内のタイムスタンプ比較部64は、上述の同期制御動作を実行する(ステップS25)。このステップS25では、タイムスタンプ比較部64は、Rxキュー52から、Txキュー62の先頭のTxパケットのタイムスタンプ(Tx Time)との時間差が所定範囲内のタイムスタンプ(Rx Time)を有するRxパケットを取り出す。この場合、タイムスタンプ比較部64は、Txキュー62の先頭のTxパケットのタイムスタンプ(Tx Time)とRxキュー52の先頭のRxパケットのタイムスタンプ(Rx Time)とを比較して、これらタイムスタンプ間の時間差(=Tx Time−Rx Time)を算出する。この後、エコーキャンセラ(EC)23は、Txキュー62の先頭のTxパケット内のTx信号と、取り出されたRxとを使用して、上述のエコーキャンセル処理(EC処理)を実行する(ステップS26)。ステップS26では、EC処理のみならず、ノイズキャンセル処理(NC)も実行しても良い。
図8のフローチャートは、Txスレッド60によって実行される同期制御動作の手順を示す。Txスレッド60は、Txキュー62に蓄積されているデータサイズがエコーキャンセル処理に必要なデータサイズ(Xサンプル)よりも多く、且つRxキュー52に蓄積されているデータサイズがエコーキャンセル処理に必要なデータサイズ(Xサンプル)よりも多いという条件が成立しているか否かを判定する(ステップS31)。
上述の条件が成立しているならば(ステップS31のYES)、Txスレッド60は、Txキュー62の先頭のTxパケットを取得し(ステップS32)、そしてRxキュー52の先頭のRxパケットを取得する(ステップS33)。ステップS32では、Txスレッド60は、Txキュー62の先頭のTxパケットからタイムスタンプを取り出し、さらにTxキュー62の先頭のTxパケットからXサンプル分のデータを取り出しても良い。同様に、ステップS33では、Txスレッド60は、Rxキュー52の先頭のRxパケットからタイムスタンプを取り出し、さらにRxキュー52の先頭のRxパケットからXサンプル分のデータを取り出しても良い。
そして、Txスレッド60は、取り出したTxパケットのタイムスタンプと取り出したRxパケットのタイムスタンプとを比較し、そして時間差(TxRxTimeDiff)を算出する(ステップS34)。次いで、Txスレッド60は、以前に算出された幾つかの時間差(TxRxTimeDiff)と今回算出された時間差(TxRxTimeDiff)とを使用して、時間差(TxRxTimeDiff)の移動平均値(TxRxTimeDiffAvr)を算出する(ステップS35)。
Txスレッド60は、移動平均値(TxRxTimeDiffAvr)が上述の所定範囲に対応する閾値(SyncDelayThr)未満であるか否かに応じて、同期ずれが発生しているか否かを判定する(ステップS36)。移動平均値(TxRxTimeDiffAvr)が上述の所定範囲に対応する閾値(SyncDelayThr)未満であるならば(ステップS36のYES)、Txスレッド60は、Txキュー62の先頭のTxパケットから取り出されたXサンプル分のデータと、Rxキュー52の先頭のRxパケットから取り出されたXサンプル分のデータとを、エコーキャンセラ(EC)23に送る(ステップ37)。あるいは、Txスレッド60は、Tx信号とRx信号とが同期していることのみをエコーキャンセラ(EC)23に通知しても良い。この場合、エコーキャンセラ(EC)23は、Txキュー62の先頭のTxパケットからXサンプル分のデータを取り出し、さらに、Rxキュー52の先頭のRxパケットからXサンプル分のデータを取り出す。
移動平均値(TxRxTimeDiffAvr)が上述の所定範囲に対応する閾値(SyncDelayThr)未満でないならば(ステップS36のNO)、Txスレッド60は、上述の揺らぎに起因して同期ずれが発生していると判定し、Rxキュー52の先頭のRxパケットを破棄してRxキュー52の2番目のRxパケットをRxキュー52の先頭に移す(ステップS38)。このように、Rxキュー52の先頭のRxパケットを破棄することにより、Rx信号とTx信号のタイミングを調整することができる。つまり、たとえ、上述の揺らぎに起因して、Txキュー62の先頭のTxパケットよりも古い幾つかのRxパケットがRxキュー52に蓄積されるという現象が発生しても、Txキュー62の先頭のTxパケットのTx信号に対応するRx信号をエコーキャンセラ(EC)23に提供することが可能となる。
図9は、信号処理装置10のアプリケーション層15の構成例を示す。ここでは、信号処理装置10は、上述のスピーカ11、マイクロホン12、エコーキャンセラ(EC)23、Tx/Rx同期制御部24に加え、ユーザボリューム100、通信部201、復号化部202、符号化部203を備える。ユーザボリューム100は、出力サウンドデータの音量レベルをユーザ操作に応じて変更する。通信部201、復号化部202、および符号化部203は上述のVoIPを使用して音声通話を行うアプリケーション部として機能する。遠隔端末から受信される音声信号(Rx信号)は、復号化部202によってデコードされる。デコードされた音声信号は出力タスク(AudioStreamOut)21を介してD/Aコンバータに送られると共に、Tx/Rx同期制御部24に送られる。デコードされた音声信号はD/Aコンバータによってデジタル音声信号からアナログ音声信号に変換される。このアナログ音声信号に対応する音がスピーカ11から出力される。
スピーカ11から出力される音はエコー(音響エコー)としてマイクロホン12に回り込む。マイクロホン12によって収音される音声信号は、A/Dコンバータによってアナログ音声信号からデジタル音声信号に変換される。デジタル音声信号(Tx信号)は出力タスク(AudioStreamOut)21を介してTx/Rx同期制御部24に送られる。Tx/Rx同期制御部24では、Tx信号に対応するRx信号がRxキュー52から取り出され、Tx信号と、この取り出されたRx信号とがエコーキャンセラ(EC)23に送られる。エコーキャンセラ(EC)23では、Rx信号に基づいて疑似エコー信号が生成され、Tx信号から疑似エコー信号が減じられる。Tx信号から疑似エコー信号を減じることによって得られる残差信号、つまり音響エコーが抑圧されたRx信号は、符号化部203によってエンコードされる。エンコードされたRx信号は通信部201を介して遠隔端末に送信される。
図10は、信号処理装置10のアプリケーション層15の構成例を示す。ここでは、信号処理装置10は、図9の通信部201、復号化部202、および符号化部203の代わりに、メモリ301および音声認識部302を備える。メモリ301には、TV番組、音楽のようなコンテンツデータ(メディアデータ)が格納されている。音声認識部302は、マイクロホン12から入力される音声信号を認識するためのアプリケーションプログラムとして機能し得る。信号処理装置10においては、さらに、メディアデータを再生するためのアプリケーションプログラムも実行される。図10の信号処理装置10においては、再生されるメディアデータに対応する音がエコー(音響エコー)としてマイクロホン12に回り込む。このエコーもエコーキャンセラ(EC)23によって抑圧することができる。
以上説明したように、本実施形態によれば、出力タスク21から出力される出力サウンドデータ(Rx信号)はタイムスタンプが付与された状態でRxキュー52に追加され、入力タスク52によってマイクロホン12から取得される入力サウンドデータ(Tx信号)は、タイムスタンプが付与された状態でTxキュー62に追加される。そして、Rxキュー52から、Txキュー62の先頭の入力サウンドデータのタイムスタンプとの時間差が所定範囲内のタイムスタンプを有する出力サウンドデータがリファレンスデータとして取り出される。そして、エコーキャンセラ(EC)23では、リファレンスデータに基づいてTxキュー62の先頭の入力サウンドデータ内のエコー成分がキャンセルされる。このように、Rxキュー52から、Txキュー62の先頭の入力サウンドデータのタイムスタンプとの時間差が所定範囲内のタイムスタンプを有する出力サウンドデータがリファレンスデータとして取り出すことにより、エコー成分の推定を安定して行うことが可能となり、これによって非リアルタイムOSにエコーキャンセラ(EC)が組み込まれた環境においても、安定したエコーキャンセル動作を行うことができる。
なお、本実施形態のTx/Rx同期制御部24はソフトウェアによって実現できるので、このTx/Rx同期制御部24の処理手順を実行するコンピュータプログラムを、このコンピュータプログラムが格納されたコンピュータ読み取り可能な記憶媒体を通じて情報端末のようなコンピュータにインストールして実行するだけで、本実施形態と同様の効果を容易に実現することができる。
なお、Tx/Rx同期制御部24およびエコーキャンセラ(EC)23の各々は専用のまたは汎用のハードウェアによって実現してもよい。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
10…信号処理装置、11…スピーカ、12…マイクロホン、21…出力タスク、22…入力タスク、23…エコーキャンセラ、24…Tx/Rx同期制御部、52…Rxキュー、62…Txキュー、64…タイムスタンプ比較部。

Claims (6)

  1. アプリケーション層から受信される再生対象のサウンドストリームを信号処理装置のスピーカに送出するための第1のタスクと信号処理装置のマイクロホンからサウンドストリームを取得するための第2のタスクとを含む複数のタスクを実行するように構成された信号処理装置であって、
    前記第1のタスクから出力される出力サウンドデータを、タイムスタンプが付与された状態で第1のキューに追加する第1の処理手段と、
    前記第2のタスクによって前記マイクロホンから取得される入力サウンドデータを、タイムスタンプが付与された状態で第2のキューに追加する第2の処理手段と、
    前記第1のキューから、前記第2のキューの先頭の第1の入力サウンドデータのタイムスタンプとの時間差が所定範囲内のタイムスタンプを有する第1の出力サウンドデータをリファレンスデータとして取り出す制御手段と、
    前記リファレンスデータに基づいて前記第1の入力サウンドデータ内のエコー成分をキャンセルするエコーキャンセル処理を実行するエコーキャンセラと
    を具備する信号処理装置。
  2. 前記制御手段は、前記第2のキューの先頭の前記第1の入力サウンドデータのタイムスタンプを前記第1のキューの先頭の出力サウンドデータのタイムスタンプと比較し、これらタイムスタンプ間の時間差が前記所定範囲内である場合、前記エコーキャンセラに、前記第1のキューの先頭の出力サウンドデータを前記リファレンスデータとして使用する、前記第1の入力サウンドデータに対するエコーキャンセル処理を実行させ、前記タイムスタンプ間の時間差が前記所定範囲内でない場合、前記第1のキューの先頭の出力サウンドデータを破棄して前記第1のキューの2番目の出力サウンドデータを前記第1のキューの先頭に移す請求項1記載の信号処理装置。
  3. 前記制御手段は、前記第1の入力サウンドデータのタイムスタンプと前記第1のキューの先頭の出力サウンドデータのタイムスタンプとの間の第1の時間差と、直前の複数回のタイムスタンプ間の比較によって得られる複数の時間差とを使用して、第1の時間差と前記複数の時間差を含む全ての時間差の平均を算出し、算出した平均が前記所定範囲内であるか否かを判定する請求項2記載の信号処理装置。
  4. 前記制御手段は、前記第1のキューに蓄積されているデータサイズおよび前記第2のキューに蓄積されているデータサイズをチェックし、前記第1のキューおよび前記第2のキューの各々に前記エコーキャンセル処理に必要なデータサイズ以上のデータが蓄積されている場合、前記第1のキューから前記第1の出力サウンドデータを前記リファレンスデータとして取り出すための処理を実行する請求項1記載の信号処理装置。
  5. アプリケーション層から受信される再生対象のサウンドストリームを信号処理装置のスピーカに送出するための第1のタスクと信号処理装置のマイクロホンからサウンドストリームを取得するための第2のタスクとを含む複数のタスクを実行するように構成された信号処理装置における信号処理方法であって、
    前記第1のタスクから出力される出力サウンドデータを、タイムスタンプが付与された状態で第1のキューに追加し、
    前記第2のタスクによって前記マイクロホンから取得される入力サウンドデータを、タイムスタンプが付与された状態で第2のキューに追加し、
    前記第1のキューから、前記第2のキューの先頭の第1の入力サウンドデータのタイムスタンプとの時間差が所定範囲内のタイムスタンプを有する第1の出力サウンドデータをリファレンスデータとして取り出し、
    前記リファレンスデータに基づいて前記第1の入力サウンドデータ内のエコー成分をキャンセルするエコーキャンセル処理を実行する、
    信号処理方法。
  6. アプリケーション層から受信される再生対象のサウンドストリームをコンピュータのスピーカに送出するための第1のタスクとコンピュータのマイクロホンからサウンドストリームを取得するための第2のタスクとを含む複数のタスクを実行するように構成されたコンピュータによって実行されるプログラムであって、
    前記第1のタスクから出力される出力サウンドデータを、タイムスタンプが付与された状態で第1のキューに追加する手順と、
    前記第2のタスクによって前記マイクロホンから取得される入力サウンドデータを、タイムスタンプが付与された状態で第2のキューに追加する手順と、
    前記第1のキューから、前記第2のキューの先頭の第1の入力サウンドデータのタイムスタンプとの時間差が所定範囲内のタイムスタンプを有する第1の出力サウンドデータをリファレンスデータとして取り出す手順と、
    前記リファレンスデータに基づいて前記第1の入力サウンドデータ内のエコー成分をキャンセルするエコーキャンセル処理を実行する手順とを前記コンピュータに実行させるためのプログラム。
JP2012279306A 2012-12-21 2012-12-21 信号処理装置および信号処理方法 Active JP6038635B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2012279306A JP6038635B2 (ja) 2012-12-21 2012-12-21 信号処理装置および信号処理方法
US14/092,354 US9179217B2 (en) 2012-12-21 2013-11-27 Signal processing apparatus and signal processing method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2012279306A JP6038635B2 (ja) 2012-12-21 2012-12-21 信号処理装置および信号処理方法

Publications (2)

Publication Number Publication Date
JP2014123875A JP2014123875A (ja) 2014-07-03
JP6038635B2 true JP6038635B2 (ja) 2016-12-07

Family

ID=50974704

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012279306A Active JP6038635B2 (ja) 2012-12-21 2012-12-21 信号処理装置および信号処理方法

Country Status (2)

Country Link
US (1) US9179217B2 (ja)
JP (1) JP6038635B2 (ja)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3175456B1 (en) * 2014-07-31 2020-06-17 Koninklijke KPN N.V. Noise suppression system and method
US9812146B1 (en) * 2016-02-16 2017-11-07 Amazon Technologies, Inc. Synchronization of inbound and outbound audio in a heterogeneous echo cancellation system
US10412337B2 (en) * 2016-05-23 2019-09-10 Funai Electric Co., Ltd. Display device
US10546581B1 (en) * 2017-09-08 2020-01-28 Amazon Technologies, Inc. Synchronization of inbound and outbound audio in a heterogeneous echo cancellation system
CN112712803B (zh) * 2019-07-15 2022-02-25 华为技术有限公司 一种语音唤醒的方法和电子设备
CN114401255B (zh) * 2022-03-25 2022-08-23 广州迈聆信息科技有限公司 一种音频信号对齐方法、装置、会议终端及存储介质

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2802367B1 (fr) 1999-12-14 2006-08-18 France Telecom Procede temps reel de traitement et de gestion pour l'annulation d'echo entre haut-parleur et microphone d'un terminal informatique
JP2004040542A (ja) 2002-07-04 2004-02-05 Hitachi Hybrid Network Co Ltd 情報端末、中継装置、パケット通信システム及び中継装置によるエコーキャンセル方法
JP4346414B2 (ja) 2003-11-07 2009-10-21 株式会社東芝 信号処理装置、コンピュータプログラム
US8335311B2 (en) 2005-07-28 2012-12-18 Kabushiki Kaisha Toshiba Communication apparatus capable of echo cancellation
JP4818014B2 (ja) 2005-07-28 2011-11-16 株式会社東芝 信号処理装置
JP2008066782A (ja) 2006-09-04 2008-03-21 Toshiba Corp 信号処理装置及び信号処理プログラム
NO327377B1 (no) * 2007-12-18 2009-06-22 Tandberg Telecom As Fremgangsmate og system for klokkedriftskompensering
JP5003531B2 (ja) * 2008-02-27 2012-08-15 ヤマハ株式会社 音声会議システム

Also Published As

Publication number Publication date
US9179217B2 (en) 2015-11-03
US20140177856A1 (en) 2014-06-26
JP2014123875A (ja) 2014-07-03

Similar Documents

Publication Publication Date Title
JP6038635B2 (ja) 信号処理装置および信号処理方法
US10205830B2 (en) Echo cancellation data synchronization control method, terminal, and storage medium
CN107534589B (zh) 去抖动缓冲器更新
US9812146B1 (en) Synchronization of inbound and outbound audio in a heterogeneous echo cancellation system
US9491545B2 (en) Methods and devices for reverberation suppression
US20160171988A1 (en) Delay estimation for echo cancellation using ultrasonic markers
US9246545B1 (en) Adaptive estimation of delay in audio systems
US9773510B1 (en) Correcting clock drift via embedded sine waves
US10546581B1 (en) Synchronization of inbound and outbound audio in a heterogeneous echo cancellation system
CN107592430B (zh) 一种回声消除的方法及终端设备
US20150078564A1 (en) Echo cancellation algorithm for long delayed echo
JP6295722B2 (ja) エコー抑圧装置、プログラム及び方法
US11741981B2 (en) Voice recognition with timing information for noise cancellation
CN105991857A (zh) 一种实现参考信号调整的方法及装置
KR102422794B1 (ko) 재생지연 조절 방법 및 장치와 시간축 변형방법 및 장치
JP2015012557A (ja) 映像音声処理装置、映像音声処理システム、映像音声同期方法、プログラム
US9392365B1 (en) Psychoacoustic hearing and masking thresholds-based noise compensator system
CN109327724B (zh) 音视频同步播放方法和装置
CN114095771B (zh) 一种音视频同步方法、存储介质及电子设备
US10812401B2 (en) Jitter buffer apparatus and method
JP4743085B2 (ja) エコーキャンセラ
CN109286857B (zh) 多媒体数据播放方法及装置
US11741933B1 (en) Acoustic signal cancelling
JP2007318283A (ja) パケット通信システム、データ受信機器
US20080170562A1 (en) Method and communication device for improving the performance of a VoIP call

Legal Events

Date Code Title Description
RD07 Notification of extinguishment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7427

Effective date: 20140415

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20140530

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20151120

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20151120

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20151120

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20160915

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20161004

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20161102

R150 Certificate of patent or registration of utility model

Ref document number: 6038635

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313117

Free format text: JAPANESE INTERMEDIATE CODE: R313122

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250