マイコン工作実験日記

Microcontroller を用いての工作、実験記録

音声再生できたけど、音悪し

2011-09-11 12:35:07 | W-SIM
SAM3S4BにつなげたW-SIMからの音声再生ができました。ほとんどこれまでのコードをコピペするだけで、新たに書くのはDACの部分だけだったので、ここまでは難しいことは何もありません。今回使用した回路はこんな具合↓(音声関連の信号のみ示しています)。



音声信号は、PCMSYNCに同期してSSCで受信します。受信した音声データはμ-Law圧縮されていますので、これを展開してDACに送るだけです。DACの変換は音声信号のサンプリング周期である8000Hzと同期しておこなう必要がありますので、PCMSYNCを外部トリガとして使用しています。実際の処理としては、次の処理もおこなっています。
  • 40サンプル毎のDMA転送。8000Hzでの受信の度の処理では割り込み負荷が大きくなるので、40サンプル毎にまとめて処理することにしました。5msの遅延が生じることになりますが、この程度は気にならないでしょう。40サンプル分をDMAで転送して、DMA完了を割り込みで検出します。
  • 受信したu-Lawデータを展開してDACに40サンプル毎にDMA転送して再生させています。展開されたリニアPCMデータは符号を含めて14ビットの長さがありますが、DACは12ビットです。そこで12ビットに縮める処理もおこないます

このようにハードもソフトも単純なのですが、実際にやってみると再生音が良くありません。高音部分にノイズがかぶってしまっています。音声で伝達される内容は聞き取れますけど、ノイズが耳障りです。12ビットに縮める処理として最初は14ビットのうちの上位12ビットを切りだしていたので、これを下位12ビットに変更するとともに符号反転が生じないように飽和処理を入れてみましたが、症状は改善されません。何らかの対策を施さないと実用にはならない感じ。DACの出力をアンプに直結しているだけなのがいけないのでしょうか? 試しにLPFを付け加えてみようかな。

単なる音声再生実験を実施するのにいちいち電話をかけていたのでは通話料金がもったいないので、一時的にフラッシュに試験用音声データを焼いて再生試験だけできるようにハード修正を施すことにします。