ADPCMデコード時のアイデアについて
以下の様な無線デバイスの開発を行っています。
- 親機と子機となるデバイスがあり、デジタル無線で通信を行っている。
- 子機は環境音の収集を行い10kHz/16bitサンプルデータをADPCM(4bit)に圧縮して、1パケット(約)160バイトずつ親機へ送信する。
- 親機は子機から受信したデータを伸張して再生する。
- 親機は子機からのデータを取りこぼした場合、受信する予定だったデータを0x00(1パケット取りこぼしたら0x00*160バイトの)として補完する。
※子機は片方向で音声データを送信しており、親機はそれに対するACKの様なものは応答しない。
ADPCMは過去のサンプルデータと現在のサンプルデータの差分を利用したアルゴリズムである為、上記4の処理を行ってしまうと、そのタイミングで再生音が意図しない音になってしまいます。
具体的には著しく、音量が低下します(このメカニズムもなぜかはわかっていません...)。
電話などの開発を行ったことがある方で、音声が途切れる時のデコード処理などの工夫をしたことがある方など、ノウハウをご教示頂けると幸いです。