dspic dsc speex 音声 エンコーディング デコーディング...
TRANSCRIPT
2009 Microchip Technology Inc. DS70328A_JP
dsPIC® DSC Speex 音声
エンコーディング / デコーディング
ライブラリのユーザー ガイド
ご注意:この日本語版ドキュメントは、参考資料としてご使用の上、最新情報につきましては、必ず英語版オリジナルをご参照いただきますようお願いします。
マイクロチップ テクノロジー社 ( 以下、マイクロチップ社 ) デバイスのコード保護機能に関する以下の点にご留意ください。
• マイクロチップ社製品は、その該当するマイクロチップ社データシートに記載の仕様を満たしています。
• マイクロチップ社では、通常の条件ならびに仕様どおりの方法で使用した場合、マイクロチップ社製品は現在市場に流通している同種製品としては最もセキュリティの高い部類に入る製品であると考えております。
• コード保護機能を解除するための不正かつ違法な方法が存在します。マイクロチップ社の確認している範囲では、このような方法のいずれにおいても、マイクロチップ社製品をマイクロチップ社データシートの動作仕様外の方法で使用する必要があります。このような行為は、知的所有権の侵害に該当する可能性が非常に高いと言えます。
• マイクロチップ社は、コードの保全について懸念を抱いているお客様と連携し、対応策に取り組んでいきます。
• マイクロチップ社を含むすべての半導体メーカーの中で、自社のコードのセキュリティを完全に保証できる企業はありません。コード保護機能とは、マイクロチップ社が製品を「解読不能」として保証しているものではありません。
コード保護機能は常に進歩しています。マイクロチップ社では、製品のコード保護機能の改善に継続的に取り組んでいます。マイクロチップ社のコード保護機能を解除しようとする行為は、デジタルミレニアム著作権法に抵触する可能性があります。そのような行為によってソフトウェアまたはその他の著作物に不正なアクセスを受けた場合は、デジタルミレニアム著作権法の定めるところにより損害賠償訴訟を起こす権利があります。
本書に記載されているデバイス アプリケーションなどに関する情報は、ユーザーの便宜のためにのみ提供されているものであり、更新によって無効とされることがあります。アプリケーションと仕様の整合性を保証することは、お客様の責任において行ってください。マイクロチップ社は、明示的、暗黙的、書面、口頭、法定のいずれであるかを問わず、本書に記載されている情報に関して、状態、品質、性能、商品性、特定目的への適合性をはじめとする、いかなる類の表明も保証も行いません。マイクロチップ社は、本書の情報およびその使用に起因する一切の責任を否認します。マイクロチップ社デバイスを生命維持および / または保安のアプリケーションに使用することはデバイス購入者の全責任において行うものとし、デバイス購入者は、デバイスの使用に起因するすべての損害、請求、訴訟、および出費に関してマイクロチップ社を弁護、免責し、同社に不利益が及ばないようにすることに同意するものとします。暗黙的あるいは明示的を問わず、マイクロチップ社が知的財産権を保有しているライセンスは一切譲渡されません。
DS70328A_JP - ページ ii
商標
Microchip の社名とロゴ、Microchip ロゴ、dsPIC、KEELOQ、KEELOQ ロゴ、MPLAB、PIC、PICmicro、PICSTART、rfPIC、UNI/O は、米国およびその他の国における Microchip Technology Incorporated の登録商標です。
FilterLab、Hampshire、HI-TECH C、Linear Active Thermistor、MXDEV、MXLAB、SEEVAL、The Embedded Control Solutions Company は、米国における Microchip Technology Incorporated の登録商標です。
Analog-for-the-Digital Age、Application Maestro、CodeGuard、dsPICDEM、dsPICDEM.net、dsPICworks、dsSPEAK、ECAN、ECONOMONITOR、FanSense、HI-TIDE、In-Circuit Serial Programming、ICSP、ICEPIC、Mindi、MiWi、MPASM、MPLAB Certified ロゴ、MPLIB、MPLINK、mTouch、nanoWatt XLP、Omniscient Code Generation、PICC、PICC-18、PICkit、PICDEM、PICDEM.net、PICtail、PIC32 ロゴ、Real ICE、rfLAB、Select Mode、Total Endurance、TSHARC、WiperLock、ZENA は、米国およびその他の国における Microchip Technology Incorporated の商標です。
SQTP は米国における Microchip Technology Incorporatedのサービスマークです。
その他、本書に記載されている商標は、各社に帰属します。
© 2009, Microchip Technology Incorporated, Printed in the U.S.A., All Rights Reserved.
再生紙を使用しています。
ISBN: 978-1-60932-031-7
2009 Microchip Technology Inc.
マイクロチップ社では、Chandler および Tempe ( アリゾナ州 )、Gresham ( オレゴン州 ) の本部、設計部およびウエハ製造工場そしてカリフォルニア州とインドのデザイン センターが ISO/TS-16949:2002認証を取得しています。マイクロチップ社の品質システム プロセスおよび手順は、PIC® MCU および dsPIC® DSC、KEELOQ® コード ホッピング デバイス、シリアル EEPROM、マイクロペリフェラル、不揮発性メモリ、アナログ製品に採用されています。また、マイクロチップ社の開発システムの設計および製造に関する品質システムは、ISO 9001:2000 の認証を受けています。
dsPIC® DSC SPEEX 音声エンコーディング / デコーディング
ライブラリのユーザー ガイド
目次
序章 ................................................................................................................................. 1
第 1 章 はじめに
1.1 ライブラリの概要 ............................................................................................... 5
1.2 特長 ....................................................................................................................... 8
1.3 システム要件 ....................................................................................................... 8
第 2 章 インストール
2.1 インストール手順 ............................................................................................... 9
2.2 ライブラリ ファイル ........................................................................................ 12
第 3 章 クイック スタート デモ
3.1 通信デモ ............................................................................................................. 17
3.2 再生デモ ............................................................................................................. 21
3.3 録音再生デモ ..................................................................................................... 23
第 4 章 API (Application Programming Interface)4.1 アプリケーションへのライブラリの追加 ..................................................... 27
4.2 メモリ モデル コンパイル オプション .......................................................... 29
4.3 ライブラリの使用 ............................................................................................. 32
4.4 レジスタの使用 ................................................................................................. 34
4.5 パケットの損失と破損 ..................................................................................... 34
4.6 PC エンコーダ ユーティリティ (PCEU) 出力ファイル ............................... 35
4.7 リソース要件 ..................................................................................................... 36
4.8 API 関数 ............................................................................................................. 39
4.9 アプリケーションのヒント ............................................................................. 53
索引 ............................................................................................................................... 55
世界各国での販売およびサービス ................................................................................ 56
2009 Microchip Technology Inc. DS70328A_JP - ページ iii
dsPIC® DSC Speex 音声エンコーディング / デコーディング ライブラリのユーザー ガイド
DS70328A_JP - ページ iv 2009 Microchip Technology Inc.
ノート :
dsPIC® DSC SPEEX 音声エンコーディング / デコーディング
ライブラリのユーザー ガイド
序章
はじめに
この章には、dsPIC DSC Speex 音声エンコーディング / デコーディング ライブラリの使用前に知っておくと役立つ一般的な情報が記載されています。この章に記載されている項目は以下のとおりです。
• 本書の構成
• 本書で使用される表記
• 保証登録
• 推奨参考資料
• マイクロチップ社インターネット ウェブ サイト
• 開発システムのお客様変更通知サービス
• カスタマー サポート
• 改版履歴
本書の構成
本書では、ターゲット ボードでファームウェアをエミュレートし、デバッグする開発ツールとして dsPIC DSC Speex 音声エンコーディング / デコーディング ライブラリを使用する方法について説明します。本ユーザー ガイドの内容は、以下のとおりです。
• 第 1 章「はじめに」 – この章では、dsPIC DSC Speex 音声エンコーディング / デコーディング ライブラリについて説明します。
• 第 2 章「インストール」 – この章では、PC に dsPIC DSC Speex 音声エンコーディング / デコーディング ライブラリをインストールするときに必要な情報を提示します。
• 第 3 章「クイック スタート デモ」 – この章では、dsPIC DSC Speex 音声エンコーディング / デコーディング ライブラリを使用したデモについて説明します。
• 第 4 章「API (Application Programming Interface)」 – この章では、アプリケーション プログラミング インターフェースを使用して、dsPIC DSC Speex 音声エンコーディング / デコーディング ライブラリに付属の API 関数をアプリケーション ソフトウェアに組み込む方法について説明します。
顧客の皆様への注意
ドキュメントはすべて古くなります。本書も例外ではありません。マイクロチップ社のツールおよびマニュアルはユーザーのニーズを満たすために改良を重ねており、実際のダイアログやツールの内容が本書に記載されているものと異なる場合があります。最新のドキュメントを入手するには、弊社のウェブ サイト (www.microchip.com) をご覧ください。
ドキュメントは「DS」番号で識別されています。この識別番号は、各ページのフッタ部分、ページ番号の前に記載されています。DS 番号の表記規則は「DSXXXXXA」で、「XXXXX」が文書番号、
「A」が文書のリビジョン レベルを表しています。
開発ツールについての最新情報は、MPLAB® IDE のオンライン ヘルプをご覧ください。[ ヘルプ ]メニューを選択して、次に [ トピック ] を選択すると、利用できるオンライン ヘルプ ファイルのリストが表示されます。
2009 Microchip Technology Inc. DS70328A_JP - ページ1
dsPIC® DSC Speex 音声エンコーディング / デコーディング ライブラリのユーザー ガイド
本書で使用される表記
本書では以下の表記上の規則を使用しています。
表記上の規則
説明 意味 例
明朝フォント :
斜体文字 参考資料 MPLAB® IDE User’s Guide
強調文字 ... は唯一のコンパイラです ...
角括弧 : [ ] ウィンドウ [Output] ウィンドウ
ダイアログ [Settings] ダイアログ
メニューの選択肢 [Enable Programmer] を選択
かぎ括弧 :「」 ウィンドウまたはダイアログのフィールド名
「Save project before build」
右山括弧 (>) を使用し、角括弧で囲まれた下線付きイタリック テキスト
メニュー パス [File] > [Save]
太字で角括弧に囲まれたテキスト
ダイアログのボタン [OK] をクリックします。
タブ [Power] タブを選択します。
N‘Rnnnn Verilog 形式の数です。N が合計桁数、R が基数、n が桁を表します。
4‘b0010, 2‘hF1
山括弧で囲まれたテキスト : <>
キーボードのキー <Enter>、<F1> を押します。
クーリエ フォント :
通常のクーリエ サンプル ソース コード #define START
ファイル名 autoexec.bat
ファイル パス c:\mcc18\h
キーワード _asm, _endasm, static
コマンド行オプション -Opa+, -Opa-
ビット値 0, 1
定数 0xFF, ‘A’
イタリック クーリエ 変数の引数 file.o: fileは任意の有効なファイル名
角括弧 : [ ] 任意の引数 mcc18 [オプション] file [オプション ]
中括弧とパイプ文字 : { | } いずれかの引数を選択する場合 (OR 選択 )
errorlevel {0|1}
省略記号 : ... 繰り返されるテキスト var_name [, var_name...]
ユーザーが定義するコード void main (void){ ...}
DS70328A_JP - ページ 2 2009 Microchip Technology Inc.
序章
保証登録
同封の保証登録カードにご記入いただき、お早めにご郵送ください。この保証登録カードを送付されたお客様は、製品のアップデート版を受け取ることができるようになります。暫定ソフトウェア リリースはマイクロチップ社のウェブ サイトで入手できます。
推奨参考資料
本ユーザーガイドでは、dsPIC DSC Speex 音声エンコーディング / デコーディング ライブラリの使用方法を記載しています。ほかにも役に立つ文書がありますので、以下に一覧でご紹介します。マイクロチップ社作成の以下のような文書がありますので、参考資料としておすすめします。
README ファイル
他のツールについての最新情報は、MPLAB IDE のインストール ディレクトリのReadmesサブ ディレクトリにある該当ツールの README ファイルをお読みください。README ファイルには、本ユーザーガイドには記載されていない最新情報および既知の問題が記載されている可能性があります。
マイクロチップ社インターネット ウェブ サイト
マイクロチップ社は同社のウェブ サイト (www.microchip.com) でオンライン サポートを行っています。ウェブ サイトにはご使用のブラウザでアクセスでき、下記の情報が含まれます。
• 製品サポート - データシートと正誤表、アプリケーション ノートとサンプル プログラム、設計リソース、ユーザーガイド、ハードウェア サポート文書、最新リリース ソフトウェア、ソフトウェア アーカイブ
• 一般的なテクニカル サポート - よく寄せられる質問 (FAQ)、テクニカル サポートの依頼、オンライン ディスカッション グループ、マイクロチップ社コンサルタント プログラム メンバーのリスト
• マイクロチップのビジネス – 製品選択と注文ガイド、マイクロチップ社の最新プレスリリース、セミナとイベントのリスト、マイクロチップの営業オフィス、代理店、工場代理人のリスト
2009 Microchip Technology Inc. DS70328A_JP - ページ 3
dsPIC® DSC Speex 音声エンコーディング / デコーディング ライブラリのユーザー ガイド
開発システムのお客様変更通知サービス
マイクロチップ社のお客様変更通知サービスは、お客様がマイクロチップ社製品の最新情報を入手できるようにします。この通知サービスを申し込んだお客様には、お客様の指定した製品ファミリまたは開発ツールに関する変更、更新、改訂、正誤情報が電子メールでいち早く送信されます。
登録には、マイクロチップのウェブ サイトにアクセスして、[ お客様変更通知 ] をクリックし、登録指示に従うだけです。
開発システム製品のグループ カテゴリは、以下のとおりです。
• コンパイラ – マイクロチップ社製 C コンパイラおよび他の言語ツールについての最新情報です。これには、MPLAB C18 および MPLAB C30 C コンパイラ、MPASM™ および MPLAB ASM30 アセンブラ、MPLINK™ および MPLAB LINK30オブジェクト リンカ、MPLIB™ および MPLAB LIB30 オブジェクト ライブラリアンが含まれます。
• エミュレータ – マイクロチップ社のインサーキット エミュレータに関する最新情報です。これには、MPLAB ICE 2000、MPLAB ICE 4000、および REAL ICE™が含まれます。
• インサーキット デバッガ – マイクロチップ社製インサーキット デバッガMPLAB ICD 2 の最新情報です。
• MPLAB® IDE – 開発システムツール向け Windows® 統合開発環境であるマイクロチップ社製 MPLAB IDE の最新情報です。このリストでは、MPLAB IDE、MPLAB SIM シミュレータ、MPLAB IDE Project Manager および一般的な編集およびデバッグ機能が取り上げられています。
• プログラマ – マイクロチップ社製プログラマの最新情報です。これには、MPLAB PM3 および PRO MATE® II デバイスプログラマおよび PICSTART® Plusおよび PICkit™ 1 開発プログラマが含まれます。
カスタマー サポート
マイクロチップ製品のユーザーは、いくつかのチャネルを介してサポートを受けられます。
• 販売代理店または販売担当者
• 地域の営業所
• フィールド アプリケーション エンジニア (FAE)
• 技術サポート
技術サポートを得るには、販売代理店か販売担当者、フィールド アプリケーション エンジニア (FAE) に連絡してください。地域の営業所でもお客様の手助けをします。営業所と所在地のリストが本文書の最後に記載されています。
技術サポートは弊社ウェブ サイト (http://support.microchip.com) を通して受けることができます。
改版履歴
リビジョン A (2008 年 6 月 )
本文書の初版リリース
DS70328A_JP - ページ 4 2009 Microchip Technology Inc.
dsPIC® DSC SPEEX 音声エンコーディング / デコーディング
ライブラリのユーザー ガイド
第 1 章 はじめに
®
この章では、dsPIC DSC Speex 音声エンコーディング / デコーディング ライブラリを紹介します。このライブラリは、音声信号を圧縮する機能を提供します。この機能は、メモリや通信リソースが限られている場合に便利です。本マニュアルでは、dsPIC DSC Speex 音声エンコーディング / デコーディング ライブラリを組み込みソリューションに投入するための情報を記載します。主な内容は以下のとおりです。
• ライブラリの概要
• 特長
• システム要件
1.1 ライブラリの概要
dsPIC DSC Speex 音声エンコーディング / デコーディング ライブラリは、音声フレームの構成に必要なバイト数を削減します。このような削減、すなわち音声データの圧縮は、圧縮率によって規定します。図 1-1 に、dsPIC DSC Speex 音声エンコーディング / デコーディング ライブラリの代表的な使用例を示します。
図 1-1 に示した通信端末では、Speex 音声エンコーダを使用して音声を圧縮しています。圧縮したデータはフラッシュ メモリに格納され、通信リンクを介してリモート端末へ送信されます。リモート端末から受信した圧縮音声データは、Speex 音声デコーダを使用して圧縮が解除され、ローカル スピーカーへ音声信号として出力されます。このようなアプリケーションで dsPIC DSC Speex 音声エンコーディング / デコーディング ライブラリを使用すると、音声データを格納するのに必要なメモリ容量や通信帯域幅の要件が大幅に緩和されます。
2009 Microchip Technology Inc. DS70328A_JP - ページ5
dsPIC® DSC Speex 音声エンコーディング / デコーディング ライブラリのユーザー ガイド
図 1-1: 使用例
dsPIC DSC Speex 音声エンコーディング / デコーディング ライブラリは、16 kHz または 8 kHz のいずれかのサンプリング レートで動作し、以下の用途に適しています。
• 音声録音および再生
• VoIP (Voice over Internet Protocol)
• 通信
• 自動アナウンス システム
• インターフォン
• トランシーバー
• メッセージ再生を利用するアプリケーション
dsPIC DSC Speex 音声エンコーディング / デコーディング ライブラリは、オープンソースの音声圧縮アルゴリズムで、CELP (Code Excited Linear Prediction) 技術を使用した Speex 音声コーデックを基盤としています。この技術は、パフォーマンスと計算量の間で適切にバランスをとることができます。このライブラリは、半二重および全二重のいずれのシステムにも適しています。ライブラリは、C およびアセンブリ言語で作成されています。
B
A
Microphone
Speaker
SpeexDecoder
SpeexEncoder
Serial FlashMemory
CommunicationNetwork
Microphone
Speaker
Communication Terminal
Remote Terminal
SpeexEncoder
SpeexDecoder
Serial FlashMemory
B
A
DS70328A_JP - ページ 6 2009 Microchip Technology Inc.
はじめに
dsPIC DSC Speex 音声エンコーディング / デコーディング ライブラリは、4 つの出力データ レート ( モード ) をサポートします。このうち 2 つは、16 kHz のサンプリング レート ( 広帯域 ) を使用します。残りの 2 つのモードは、8 kHz のサンプリング レート ( 狭帯域 ) でサポートされます。また、ライブラリには、8 kbps モードに最適化された Speex コーダが含まれています。
最適化されたライブラリは、8 KB RAM を搭載したデバイス ( 例えば、dsPIC30F DSCデバイス ) で使用できます。 図 1-2 に、dsPIC DSC Speex 音声エンコーディング / デコーディング ライブラリの構成を示します。
図 1-2: dsPIC® DSC SPEEX 音声エンコーディング / デコーディング ライブラリの構成
ライブラリのアーカイブ ファイル libspeex.aは、4 つのモードすべてをサポートします ( 狭帯域および広帯域 )。ライブラリのアーカイブ ファイル libspeex_8k.aは、Speex の狭帯域バージョン専用で、8 kpbs モード向けに最適化されています。
ライブラリの API (Application Programming Interface) は、初期化、エンコード、デコードの一連の関数を提供します。アプリケーションでは、エンコーダとデコーダをそれぞれ独立して使用することも、一緒に使用することもできます。また、エンコーダとデコーダでスクラッチ メモリを共有することもできます。更に、エンコーダとデコーダのインスタンスを複数生成することも可能です。
dsPIC DSC Speex 音声エンコーディング / デコーディング ライブラリには、PC ベースのエンコーダ ユーティリティ (PCEU) も含まれており、(PC のマイクロフォン ポートを使って ) 音声を PC に録音し、Speex エンコード ファイルに変換できます。これらのファイルをアプリケーション コードの一部として組み込むと、エンコードされた音声セグメントをデバイス プログラムのフラッシュ メモリに格納できます。また、エンコード データをデータ EEPROM および RAM に格納することもできます。PCEU を使用すると、録音済みの wave ファイルをエンコードしたり、入力として複数のファイルを取り込んだりできます。
dsPIC® DSC Speex Speech Encoding/Decoding Library
libspeex.a
16 kHz sampling rate
9.8 kbps 12.8 kbps
libspeex_8k.a
8 kHz sampling rate
8 kbps
8 kHz sampling rate
8 kbps 11 kbps
Narrowband OnlyWideband Plus Narrowband
modemode mode modemode
2009 Microchip Technology Inc. DS70328A_JP - ページ 7
dsPIC® DSC Speex 音声エンコーディング / デコーディング ライブラリのユーザー ガイド
1.2 特長
dsPIC DSC Speex 音声エンコーディング / デコーディング ライブラリには、以下の特長があります。
• シンプルなユーザー インターフェース – ライブラリ ファイル 1 つとヘッダ ファイル 1 つのみ
• すべての関数を C アプリケーション プログラムから呼び出し
• Microchip C30 コンパイラ、アセンブラ、およびリンカと完全互換
• DSP 命令と高度なアドレッシング モードを使用する最適化されたアセンブリ コード
• アプリケーションへの組み込みが容易なコンパクトで使いやすい API
• 4 つの出力モード :
- サンプリング レート 8 kHz ( 狭帯域 ) で 8 kbps – 圧縮率 16:1
- サンプリング レート 8 kHz ( 狭帯域 ) で 11 kbps – 圧縮率 11.63:1
- サンプリング レート 16 kHz ( 広帯域 ) で 9.8 kbps – 圧縮率 26.12:1
- サンプリング レート 16 kHz ( 広帯域 ) で 12.8 kbps – 圧縮率 20:1
• ライブラリは 8 kbps モードに最適化された Speex バージョンを含む
• PC で音声を録音およびエンコードする Speex PC エンコーダ ユーティリティ
• 音声帯域 : 0 kHz ~ 8 kHz、最大サンプリング レート 16 kHz
• Microchip のノイズ抑制、音響エコー キャンセレーション、およびライン エコー キャンセラ ライブラリと統合可能
• ライブラリ CD には以下のものが付属 :
- サンプル デモ アプリケーションおよび完全なソース コード
- ユーザー ガイド
- PC エンコーダ ユーティリティ (PCEU) の HTML ヘルプ ファイル
1.3 システム要件
dsPIC DSC Speex 音声エンコーディング / デコーディング ライブラリでは、以下の属性を持つ PC 互換システムが必要です。
• Intel® Pentium® と同等以上のプロセッサ
• HTML ブラウザ
• 16 MB RAM ( 最小 )
• ハード ディスク空き容量 40 MB
• Windows® 2000 または Windows XP オペレーティング システム
• サウンド カード
DS70328A_JP - ページ 8 2009 Microchip Technology Inc.
dsPIC® DSC SPEEX 音声エンコーディング / デコーディング
ライブラリのユーザー ガイド
第 2 章 インストール
この章では、dsPIC DSC Speex 音声エンコーディング / デコーディング ライブラリの各種ファイルについて説明します。また、dsPIC DSC プログラミング ツールで使用するため、ラップトップまたは PC にライブラリをインストールする手順も記載します。主な内容は以下のとおりです。
• インストール手順
• ライブラリ ファイル
2.1 インストール手順
dsPIC DSC Speex 音声エンコーディング / デコーディング ライブラリは、zip アーカイブ ファイルとして、マイクロチップ社のウェブ サイトからダウンロードできます。アーカイブ ファイルをまずローカル ハード ディスクにコピーしてから、ファイルを解凍します。
ライブラリは、CD でもご利用いただけます。インストール CD からライブラリをインストールするには、以下の手順に従ってください。
1. ライブラリ CD を適切なドライブに挿入します。HTML ブラウザにインストール画面が表示されます。
図 2-1: インストール画面
2. [Click to Install Files] を選択します。図 2-2 に示すように、ファイル ダウンロードのダイアログが表示されます。
2009 Microchip Technology Inc. DS70328A_JP - ページ9
dsPIC® DSC Speex 音声エンコーディング / デコーディング ライブラリのユーザー ガイド
図 2-2: ファイル ダウンロードのダイアログ
3. [Save] をクリックします。[Save As] ダイアログが表示されます。
4. インストールの実行ファイルを保存する場所を指定し、[Save] をクリックします。
インストール実行ファイルの名前は、ライセンスの種類によって異なります。上記の例では、評価版のインストール実行ファイル名を使用しています。
5. 保存先の場所まで移動し、ファイルをダブルクリックしてインストールを開始します。インストール場所を指定するダイアログが表示されます。ここで、ライブラリのディレクトリの場所を選択できます。
図 2-3: インストール場所を指定するダイアログ
DS70328A_JP - ページ 10 2009 Microchip Technology Inc.
インストール
6. 目的のディレクトリまで移動し、[OK] をクリックします。ライセンス契約書が表示されます。
図 2-4: プログラム ライセンス契約書
7. ライセンス契約書をよく読み、[OK] をクリックして次へ進みます。インストールが開始され、その進捗状況が表示されます。すべてのファイルがインストールされたら、インストール完了のダイアログが表示されます。
図 2-5: インストール完了のダイアログ
8. [OK] をクリックして、ダイアログを閉じます。これで、dsPIC DSC Speex 音声エンコーディング / デコーディング ライブラリのインストールは完了です。
インストールを実行すると、Speex v3.0という名前のフォルダが作成されます。このフォルダには、2.2 項「ライブラリ ファイル」に記載されたファイルが含まれています。
2009 Microchip Technology Inc. DS70328A_JP - ページ 11
dsPIC® DSC Speex 音声エンコーディング / デコーディング ライブラリのユーザー ガイド
2.2 ライブラリ ファイル
dsPIC DSC Speex 音声エンコーディング / デコーディング ライブラリ CD または zipアーカイブ ファイルは、Speex v3.0という名前のディレクトリを生成します。このディレクトリには、以下のフォルダが含まれています。
• demos• doc• h• libs• PCEU
2.2.1 demosフォルダ
demosフォルダには、さまざまなアプリケーション シナリオで Speex の狭帯域モードおよび広帯域モードを使用する方法を説明する、アプリケーション コードの例が含まれています。このフォルダには、以下のフォルダとサブフォルダがあります。
• Narrowband- Communication- Playback- RecordPlay
• Wideband- Communication- Playback- RecordPlay
ここでは、Narrowbandフォルダ内のファイルについて説明します。狭帯域のデモと広帯域のデモの違いは、使用する Speex モードの違いのみです。狭帯域のデモでは、アーカイブ ファイル libspeex_8k.aとインクルード ファイル speex_8k.hを使用します。広帯域のデモでは、アーカイブ ファイル libspeex.aとインクルード ファイル speex.hを使用します。
2.2.1.1 Communicationフォルダ
Communicationフォルダに含まれるファイルは、dsPIC DSC Speex 音声エンコーディング / デコーディング ライブラリを使用して、シリアル リンクで音声データを送受信する 2 つの開発ボード間での通信を設定する方法を説明するためのものです。表 2-1 に、このフォルダのファイルを示します。
表 2-1: Communicationフォルダのファイル
File Name Description
Communication\Communication Demo 1.hex Demonstration hexadecimal file for board 1.
Communication\Communication Demo 2.hex Demonstration hexadecimal file for board 2.
Communication\Communication Demo.mcp Demonstration MPLAB Project file.
Communication\Communication Demo.mcw Demonstration MPLAB workspace.
Communication\cleanup.bat A batch file script for cleaning up intermediate build files.
Communication\h\Explorer16.h C header file for Explorer 16 Development Board routines.
Communication\h\speex_8k.h C header file defining the interface to Narrowband Speex Library.
Communication\h\UART2Drv.h C header file defining the interface to the UART driver.
Communication\h\WM8510CodecDrv.h C header file defining the interface to the WM8510 Codec driver.
Communication\lib\libspeex_8k.a Narrowband Speex Library archive file.
DS70328A_JP - ページ 12 2009 Microchip Technology Inc.
インストール
2.2.1.2 Playbackフォルダ
Playbackフォルダに含まれるデモ ファイルは、dsPIC DSC Speex 音声エンコーディング / デコーディング ライブラリを使用して再生専用システムを実装する方法を説明するためのものです。このデモでは、プログラム メモリに格納されたエンコード済み音声データを再生します。表 2-2 に、このフォルダのファイルを示します。
表 2-2: PLAYBACKフォルダのファイル
Communication\src\Explorer16.c C source file containing routines for the Explorer 16 Development Board.
Communication\src\main.c C source file containing the main speech processing routine.
Communication\src\UART2Drv.c C source file containing the driver routines for UART2.
Communication\src\WM8510CodecDrv.c C source file containing the driver routines for WM8510 Codec.
表 2-1: Communicationフォルダのファイル ( 続き )
File Name Description
File Name Description
Playback\Playback Demo.hex Demonstration hexadecimal file.
Playback\Playback Demo.mcp Demonstration MPLAB Project file.
Playback\Playback Demo.mcw Demonstration MPLAB workspace.
Playback\cleanup.bat A batch file script for cleaning up intermediate build files.
Playback\h\Explorer16.h C header file for Explorer 16 Development Board routines.
Playback\h\speex_8k.h C header file defining the interface to the Narrowband Speex Library.
Playback\h\PgmMemory.h C header file defining the interface to routines to read program memory.
Playback\h\WM8510CodecDrv.h C header file defining the interface to the WM8510 Codec driver.
Playback\lib\libspeex_8k.a Narrowband Speex Library archive file.
Playback\src\Explorer16.c C source file containing routines for the Explorer 16 Development Board.
Playback\src\main.c C source file containing the main speech processing routine.
Playback\src\SpeechSegment.s Encoded Speech Segment file.
Playback\src\PgmMemory.s Assembly source code containing the routines to read from program memory.
Playback\src\WM8510CodecDrv.c C source file containing the driver routines for the WM8510 Codec.
2009 Microchip Technology Inc. DS70328A_JP - ページ 13
dsPIC® DSC Speex 音声エンコーディング / デコーディング ライブラリのユーザー ガイド
2.2.1.3 RecordPlay フォルダ
RecordPlay デモでは、dsPIC DSC Speex 音声エンコーディング / デコーディング ライブラリを使用して、音声レコーダ システムを実装する方法を説明します。このデモでは、音声データをエンコードし、外部シリアル フラッシュ メモリに格納し、要求されるとこのデータを再生します。表 2-3 に、このフォルダのファイルを示します。
2.2.2 doc フォルダ
このフォルダには、dsPIC DSC Speex 音声エンコーディング / デコーディング ライブラリの電子ユーザー ガイドと、Speex PC エンコーダ ユーティリティの HTML ヘルプ ファイルが含まれています。それぞれのドキュメントを表示するには、ファイル名をダブルクリックします。また、ユーザー ガイドは、マイクロチップ社のウェブ サイト (www.microchip.com) からダウンロードすることもできます。
2.2.3 hフォルダ
このフォルダには、API を定義する C 言語のヘッダ ファイルが含まれています。表2-4 に、このフォルダのファイルを示します。
表 2-4: インクルード ファイル
表 2-3: RecordPlayフォルダのファイル
File Name Description
RecordPlay\RecordPlay Demo.hex Demonstration hexadecimal file.
RecordPlay\RecordPlay Demo.mcp Demonstration MPLAB Project file.
RecordPlay\RecordPlay Demo.mcw Demonstration MPLAB workspace.
RecordPlay\cleanup.bat A batch file script for cleaning up intermediate build files.
RecordPlay\h\Explorer16.h C header file for Explorer 16 Development Board routines.
RecordPlay\h\speex_8k.h C header file defining the interface to Narrowband Speex Library.
RecordPlay\h\SST25VF0404BDrv.h C header file defining the interface to routines for SST25VF040B serial Flash memory.
RecordPlay\h\WM8510CodecDrv.h C header file defining the interface to the WM8510 Codec driver.
RecordPlay\lib\libspeex_8k.a Narrowband Speex Library archive file.
RecordPlay\src\Explorer16.c C source file containing routines for the Explorer 16 Development Board.
RecordPlay\src\main.c C source file containing the main speech processing routine.
RecordPlay\src\SpeechSegment.s Encoded Speech Segment file.
RecordPlay\src\ SST25VF0404BDrv.h Assembly source code containing the routines for SST25VF040B serial Flash memory.
RecordPlay\src\WM8510CodecDrv.c C source file containing the driver routines for the WM8510 Codec.
File Name Description
h\libspeex.h Include file that contains the interface to Wideband Plus Narrowband Speex modes. This file must be included in the application to use any of the four modes.
h\libspeex_8k.h Include file that contains the interface to the optimized Narrowband Speex mode. This file must be included in the application to use the single Narrowband mode.
DS70328A_JP - ページ 14 2009 Microchip Technology Inc.
インストール
2.2.4 libsフォルダ
このフォルダには、dsPIC DSC Speex 音声エンコーディング / デコーディング ライブラリのライブラリ アーカイブ ファイルが含まれています。表 2-5 に、このフォルダのファイルを示します。
表 2-5: インクルード ファイル
2.2.5 PCEUフォルダ
このフォルダには、Speex PC エンコーダ ユーティリティ (PCEU) に必要なファイルが含まれています。表 2-6 に、このフォルダのファイルを示します。
表 2-6: PCEU ファイル
File Name Description
libs\libspeex.a Archive file that contains Wideband Plus Narrowband Speex functions. This file must be included in the application to use any of the four modes.
libs\libspeex_8k.a Archive file that contains optimized Narrowband Speex functions. This file must be included in the application to use the single Narrowband mode.
File Name Description
PCEU\dsPICSpeechRecord.exe PCEU executable file. Double-click this file to start the Speex PCEU utility.
PCEU\Speech_WB.dll DLL files required by the PCEU.
PCEU\SpeechRecord.dll
2009 Microchip Technology Inc. DS70328A_JP - ページ 15
dsPIC® DSC Speex 音声エンコーディング / デコーディング ライブラリのユーザー ガイド
ノート :
DS70328A_JP - ページ 16 2009 Microchip Technology Inc.
dsPIC® DSC SPEEX 音声エンコーディング / デコーディング
ライブラリのユーザー ガイド
第 3 章 クイック スタート デモ
この章では、dsPIC DSC Speex 音声エンコーディング / デコーディング ライブラリパッケージに付属するクイック スタート デモのコード例について説明します。以下の 3 つのデモ サンプルがあります。
• 通信デモ
• 再生デモ
• 録音再生デモ
3.1 通信デモ
通信デモでは、dsPIC DSC Speex 音声エンコーディング / デコーディング ライブラリを使用して、全二重通信方式のアプリケーションで必要な帯域幅を削減する方法を説明します。
3.1.1 デモのまとめ
通信コードの例では、2 つの Explorer 16 開発ボードと 2 つの Audio PICtail™ Plusドーター ボード ( ソフトウェア ラインセンスには含まれません ) を使用する必要があります。これらのボードは、図 3-1 に示すように設定します。
図 3-1: SPEEX 通信デモの設定
ヘッドセットは、Audio PICtail Plus ドーター ボードに接続します。ボード 1 に接続されたヘッドセットに向かって発話すると、Audio PICtail Plus ドーター ボードのWM8510 コーデックがデータのサンプリングと変換を行い、DCI モジュールを介して dsPIC DSC デバイスに送り込みます。dsPIC DSC デバイスは、Speex エンコーダを使用して音声信号を圧縮し、圧縮された音声フレーム データを UART2 モジュールと RS-232 トランシーバを介してボード 2 へ送信します。
ボード 2 の dsPIC DSC デバイスは、オンボードの RS-232 トランシーバとデバイスのUART2 モジュールを介してエンコードされたフレームを受信します。dsPIC DSC デバイスは、Speex デコーダを使用して受信したフレームをデコードし、対応する DCIモジュールとオンボードの WM8510 コーデックを介してヘッドセットに信号を再生します。
Explorer 16 Development Board with Audio PICtail™ Plus Daughter Board
Board 1 Board 2
running Speex Speech Encoding/Decoding Library
Explorer 16 Development Board with Audio PICtail Plus Daughter Board
running Speex Speech Encoding/Decoding Library
2009 Microchip Technology Inc. DS70328A_JP - ページ17
dsPIC® DSC Speex 音声エンコーディング / デコーディング ライブラリのユーザー ガイド
16 ビットの分解能で 8 kHz でサンプリングされる音声信号の場合、データ レートは128 kbps となります。このデータを通信リンクを介してリモート端末へ送信するために、最小限必要な通信リンクの帯域幅は 128 kbps です。例えば、8 kbps モードなど、狭帯域 Speex モードを使用して音声信号をエンコードすると、通信リンクの最小帯域幅は 8 kbps となります。その結果、16x の帯域幅の削減が実現します。
このコード例では、dsPIC DSC Speex 音声エンコーディング / デコーディング ライブラリから Speex16KHzEncode()関数および Speex16KHzDecode()関数 ( 広帯域の場合 )、あるいは Speex8KHzEncode()関数および Speex8KHzDecode()関数( 狭帯域の場合 ) を呼び出して、音声データのエンコーディング / デコーディングを行います。
3.1.2 デモの設定
このデモ アプリケーションは、Audio PICtail Plus ドーター ボード ( ソフトウェア ライセンスには含まれません ) を搭載した Explorer 16 開発ボードで実行することを想定しています。この項で説明した手順は、狭帯域と広帯域いずれの Speex 通信デモにも適用されます。
以下の項に記載した手順に従って、デモをセットアップします。
3.1.2.1 EXPLORER 16 開発ボードと AUDIO PICtail PLUS ドーター ボードを設定する
電源を投入する前に、ボードを設定します。
1. 図 3-2 に示すように、Audio PICtail Plus ドーター ボード 1 で、ジャンパ J4 (O/P SEL) をコーデック位置に設定し、ジャンパ J8 (LN/MIC) をマイクロフォン位置に設定します。
図 3-2: AUDIO PICtail™ PLUS ドーター ボードのジャンパ位置
2. Audio PICtail Plus ドーター ボード 1 を、Explorer 16 開発ボード 1 の PICtail Plusソケット J5 に差し込みます。
3. Audio PICtail Plusドーター ボード1のソケットJ10にヘッドフォンを接続します。
4. Audio PICtail Plusドーター ボード1のソケットJ1にマイクロフォンを接続します。
J4 (Codec select)
J8 (Mic select)
DS70328A_JP - ページ 18 2009 Microchip Technology Inc.
クイック スタート デモ
5. 2 番目の Audio PICtail Plus ドーター ボードと Explorer 16 開発ボードにステップ1 ~ 4 を繰り返します。
6. DB9M-DB9M ヌル モデム アダプタの一端を、Explorer 16 開発ボード 1 の P1 に接続します。次に、RS-232ケーブルの一端をヌル モデム アダプタに接続します。
7. RS-232 ケーブルのもう一端を、Explorer 16 開発ボード 2 の P1 に接続します。
8. 設定が完了したら、Explorer 16 開発ボードに電源を投入します。設定は、図 3-3と同じようになります。
図 3-3: SPEEX 通信デモの設定
3.1.2.2 dsPIC DSC デバイスのプログラミング
このプロセスは、Explorer 16 開発ボードの dsPIC DSC デバイスに Speex 通信デモをロードするときに使用します。
1. PC で、MPLAB IDE を起動し、CommunicationフォルダにあるCommunication Demo.mcpプロジェクトを開きます。MPLAB IDE の詳細は、『MPLAB IDE ユーザーズ ガイド』(DS51025) を参照してください。
2. プロジェクトの 16 進ファイルをインポートします。ボード 1 の場合は、[File] > [Import] > [Communication Demo 1.hex] を順に選択します。ボード 2 の場合は、[File] > [Import] > [Communication Demo 2.hex] を順に選択します。
3. [Programmer] メニューで [Connect] を選択し、MPLAB ICD 2 を dsPIC DSC デバイス ターゲットにリンクします。[Output] ウィンドウに、MPLAB ICD 2 の準備が完了したことが表示されます。
4. [Programmer] メニューで [Program] を選択します。[Output] ウィンドウにダウンロード プロセスが表示され、図 3-4 のように、プログラミングが正常に終了したことが示されます。
Explorer 16 Development Board and Audio PICtail Daughter Board 2
115 VAC
9 VDC
Explorer 16 Development Board and Audio PICtail™ Daughter Board 1
115 VAC
9 VDC
Null Modem Adapter
RS-232 Cable
2009 Microchip Technology Inc. DS70328A_JP - ページ 19
dsPIC® DSC Speex 音声エンコーディング / デコーディング ライブラリのユーザー ガイド
5. MPLAB ICD 2 を Explorer 16 開発ボードに接続します。
6. ボードで dsPIC DSC デバイスをプログラムします。
7. プログラムがロードされたら、MPLAB ICD 2 をボードから切断します(MPLAB ICD 2 コネクタから電話ケーブルを外します )。
8. 2 番目のボードに対して、ステップ 2 ~ 7 を繰り返します。
図 3-4 にプログラミングのステータスが示されています。
図 3-4: 出力ウィンドウのプログラミング ステータス
3.1.3 デモ手順
両方のデバイスにデモ アプリケーションがプログラムされたら、アプリケーションを実行する準備が整いました。以下の手順に従って、デモを実行します。
1. ボード 1 をリセットします。ボードの LED D3 が点灯し、ボードが同期の完了を待っていることを示します。
2. ボード 2 をリセットします。ここで、両方のボードの LED D4 が点灯し、ボードが同期され、エンコードされた音声データ フレームを送っていることを示します。
3. ボード 1 に接続されたマイクロフォンに向かって発声します。この音声が、ボード 2 に接続されたヘッドフォンから聴こえてきます ( あるいはその逆 )。
3.1.4 デモ コードの説明
デモ コードは、PLL が 40 MIPS 動作に設定された状態で、プライマリ オシレータをクロック ソースとして使用して、dsPIC DSC デバイスで実行されます。
ファイル main.cには、デモ アプリケーションのメイン関数が含まれます。このメイン関数は、UART および WM8510 コーデック ドライバで必要となるすべての変数および配列、dsPIC DSC Speex 音声エンコーディング / デコーディング ライブラリ関数で必要となるデータ メモリのブロックをデータ メモリに割り当てます。
DS70328A_JP - ページ 20 2009 Microchip Technology Inc.
クイック スタート デモ
メイン関数は、dsPIC DSC Speex 音声エンコーディング / デコーディング ライブラリから Speex8KHzEncoderInit()関数および Speex8KHzDecoderInit()関数( 広帯域通信デモの場合は対応する Wideband 関数 ) を呼び出し、Speex エンコーダおよびデコーダ アルゴリズムをそれぞれのデフォルトの初期状態に初期化します。
また、メイン関数は WM8510Init()関数を呼び出し、DCI モジュール、I2C™ モジュール、WM8510 コーデック、および DCI 割り込みを初期化します。DCI モジュールは、マスターとして動作し、シリアル クロックおよびフレーム同期ラインを駆動します。WM8510 コーデックはスレーブとして動作します。DCI モジュールはマルチチャネル フレーム同期動作モードで、データ ワード サイズ 16 ビットおよびデータ ワード数 ( フレーム当たりのタイムスロット数 ) 16 に設定されています。このデモでは 1 つの送信スロットと 1 つの受信スロットのみを使用します。dsPIC DSC デバイスは、dsPIC DSC デバイスの I2C モジュールを介して、WM8510 コードに制御情報を伝達します。続いて、WM8510Start()関数を使用して、DCI モジュールと I2C モジュールを有効にします。WM8510SampleRate8KConfig()は、WM8510 コーデックのサンプリング レートを 8 kHz に設定します。広帯域通信デモの場合は、WM8510SampleRate16KConfig()関数を呼び出し、WM8510 コーデックのサンプリング レートを 16 kHz に設定します。
UART2Init()関数は、UART2Drv.hで指定したボー レートで動作するように、dsPIC DSC の UART2 モジュールを設定します。UART2Start()関数は、送受信を行うため、UART2 モジュールを有効にします。ドライバは、UART2IsReadBusy()関数および UART2IsWriteBusy()関数により、同期インターフェースを提供します。メイン処理では、これらの関数を使用して、データ フレームの受信とフレーム送信の完了を判別します。
BoardSychronize()関数を呼び出し、2 つのボードを確実に同期します。UARTドライバでは、エンコードしたデータのフル フレームがチェックされます。データ フレームを受信したら、Speex8KHzDecode()関数を呼び出してフレームをデコードします。デコードされた音声フレームは、WM8510 コーデック ドライバに書き込まれます。コーデック ドライバは、生の音声サンプル フレームを処理するためにポーリングされます。フレームの処理準備ができたら、Speex8KHzEncode()関数が呼び出されます。エンコードされたフレームは、UART2 ドライバに書き込まれ、送信されます。
3.2 再生デモ
再生デモでは、dsPIC DSC Speex 音声エンコーディング / デコーディング ライブラリを使用した再生アプリケーションを示します。この場合、エンコードされたフレームをプログラム メモリから読み出し、Speex デコーダでデコードして再生します。Speex でエンコード済みのフレームをプログラム メモリに格納することで、アプリケーションは外部メモリの使用を最小限に抑えられます。
3.2.1 デモのまとめ
再生のコード例では、1 つの Audio PICtail Plus ドーター ボード ( ソフトウェア ライセンスには含まれません ) を搭載した 1 つの Explorer 16 開発ボードを使用します。ヘッドセットは、Audio PICtail Plus ドーター ボードに接続します。デモ コードは、プログラム メモリに格納された Speex エンコード済みフレームを読み出します。次に、すべてのフレームを Speex デコーダでデコードします。デコードされた音声データを、ヘッドフォンで再生するために WM8510 コーデックに書き込みます。
エンコード済みの音声データは、Speex PCEU を使用して取得します。PCEU で生成された .sファイルは、プロジェクトに組み込まれてコンパイルされます。これで、エンコード済みの音声データがプログラム メモリの一部となります。
コード例では、dsPIC DSC Speex 音声エンコーディング / デコーディング ライブラリから Speex16KHzDecode()関数または Speex8KHzDecode()関数を呼び出し、音声データをデコードします。
2009 Microchip Technology Inc. DS70328A_JP - ページ 21
dsPIC® DSC Speex 音声エンコーディング / デコーディング ライブラリのユーザー ガイド
3.2.2 デモの設定
このデモ アプリケーションは、Audio PICtail Plus ドーター ボード ( ソフトウェア ライセンスには含まれません ) を搭載した Explorer 16 開発ボードで実行することを想定しています。この項で説明した手順は、狭帯域と広帯域いずれの Speex 再生デモにも適用されます。
以下の項に記載した手順に従って、デモをセットアップします。
3.2.2.1 EXPLORER 16 開発ボードと AUDIO PICtail PLUS ドーター ボードを設定する
電源を投入する前に、ボードを設定します。
1. Audio PICtail Plus ドーター ボードで、ジャンパ J4 (O/P SEL) をコーデック位置に設定し、ジャンパ J8 (LN/MIC) をマイクロフォン位置に設定します ( 図 3-2 を参照 )。
2. Audio PICtail Plus ドーター ボードを、Explorer 16 開発ボードの PICtail Plus ソケット J5 に差し込みます。
3. Audio PICtail Plus ドーター ボードのソケット J10 にヘッドフォンを接続します。
4. 設定が完了したら、Explorer 16 開発ボードに電源を投入します。
3.2.2.2 dsPIC DSC デバイスのプログラミング
このプロセスは、Explorer 16 開発ボードの dsPIC DSC デバイスに Speex 再生デモをロードするときに使用します。
1. PC で、MPLAB IDE を起動し、Playbackフォルダにある Playback Demo.mcpプロジェクトを開きます。MPLAB IDE の詳細は、『MPLAB IDE ユーザーズ ガイド』(DS51025) を参照してください。
2. [File] > [Import] > [Playback Demo] を順に選択し、プロジェクトの 16 進ファイルをインポートします。
3. [Programmer] メニューで [Connect] を選択し、MPLAB ICD 2 を dsPIC DSC デバイス ターゲットにリンクします。[Output] ウィンドウに、MPLAB ICD 2 の準備が完了したことが表示されます。
4. [Programmer] メニューで [Program] を選択します。[Output] ウィンドウにダウンロード プロセスが表示され、図 3-4 のように、プログラミングが正常に終了したことが示されます。
5. MPLAB ICD 2 を Explorer 16 開発ボードに接続します。
6. ボード上の dsPIC DSC デバイスをプログラムします。
7. プログラムがロードされたら、MPLAB ICD 2 をボードから切断します (MPLABICD 2 コネクタから電話ケーブルを外します )。
3.2.3 デモ手順
デバイスにデモ アプリケーションがプログラムされたら、アプリケーションを実行する準備が整いました。以下の手順に従って、デモを実行します。
1. ボードをリセットします。ボードの LED D3 が点灯し、アプリケーションが実行中であることが示されます。
2. ヘッドフォンで音声サンプルが再生されていることを耳で確認します。
3.2.4 デモ コードの説明
デモ コードは、PLL が 40 MIPS 動作に設定された状態で、プライマリ オシレータをクロック ソースとして使用して、dsPIC DSC デバイスで実行されます。
DS70328A_JP - ページ 22 2009 Microchip Technology Inc.
クイック スタート デモ
ファイル main.cには、デモ アプリケーションのメイン関数が含まれます。このメイン関数は、WM8510 コーデック ドライバで必要となるすべての変数および配列、dsPIC DSC Speex 音声エンコーディング / デコーディング ライブラリ関数で必要となるデータ メモリのブロックをデータ メモリに割り当てます。
メイン関数は、dsPIC DSC Speex 音声エンコーディング / デコーディング ライブラリから Speex8KHzDecoderInit()関数 ( 広帯域再生デモの場合は対応する Wideband関数 ) を呼び出し、Speex デコーダ アルゴリズムをデフォルトの初期状態に初期化します。
また、メイン関数は、WM8510Init()関数を呼び出し、DCI モジュール、I2C モジュール、WM8510 コーデック、および DCI 割り込みを初期化します。DCI モジュールは、マスターとして動作し、シリアル クロックおよびフレーム同期ラインを駆動します。WM8510 コーデックはスレーブとして動作します。DCI モジュールはマルチチャネルフレーム同期動作モードで、データ ワード サイズ 16 ビットおよびデータ ワード数 ( フレーム当たりのタイムスロット数 ) 16 に設定されています。このデモでは 1 つの送信スロットと 1 つの受信スロットのみを使用します。dsPIC DSC デバイスは、dsPIC DSC デバイスの I2C モジュールを介して、WM8510 コードに制御情報を伝達します。続いて、WM8510Start()関数を使用して、DCI モジュールと I2C モジュールを有効にします。WM8510SampleRate8KConfig() は、WM8510 コーデックのサンプリング レートを8 kHz に設定します。広帯域通信デモの場合は、WM8510SampleRate16KConfig()関数を呼び出し、WM8510 コーデックのサンプリング レートを 16 kHz に設定します。
PgmMemOpen()関数が、読み出しのためにプログラム メモリのハンドルを開きます。メイン ループは、PgmMemRead()関数でプログラム メモリから 1 フレームを読み出し、デコーディングのために Speex8KHzDecode() 関数に渡します。デコードされた音声フレームは、WM8510 コーデック ドライバに書き込まれて再生されます。
3.3 録音再生デモ
Speex 録音再生デモでは、dsPIC DSC Speex 音声エンコーディング / デコーディング ライブラリを使用した音声レコーダ アプリケーションを示します。このデモで重視しているのは、音声データを格納する際に必要となるメモリの削減です。このデモは、半二重システムの例を示します。
3.3.1 デモのまとめ
録音再生デモのコード例では、1 つの Audio PICtail Plus ドーター ボード ( ソフトウェア ライセンスには含まれません ) を搭載した 1 つの Explorer 16 開発ボードを使用します。ヘッドセットは、Audio PICtail Plus ドーター ボードに接続します。
録音モードでは、Audio PICtail Plus ドーター ボードの WM8510 コーデックがマイクロフォンから取り込まれた音声信号のサンプリングと変換を行い、DCI モジュールを介して disPIC DSC デバイスに送り込みます。dsPIC DSC デバイスは、Speex エンコーダで音声信号を圧縮し、Audio PICtail Plus ドーター ボード上にあるシリアル フラッシュ メモリに圧縮したデータを格納します。再生モードでは、アプリケーションは、シリアル フラッシュ メモリに格納されたエンコード済み音声フレームを読み出し、Speex デコーダでフレームをデコードします。デコードされた音声データを、ヘッドフォンで再生するために WM8510 コーデックに書き込みます。
16 ビットの分解能で 8 kHz でサンプリングされる音声信号の場合、そのデータ レートは 128 kbps となります。1 分間の生の音声データをメモリに格納するには、960 KBのメモリが必要です。例えば 8 kbps モードなど、狭帯域 Speex モードで音声信号をエンコードした場合、1 分間の音声を格納するのに必要なメモリは 60 KB です。
このコード例では、dsPIC DSC Speex 音声エンコーディング / デコーディング ライブラリから Speex16KHzEncode()関数および Speex16KHzDecode()関数 ( 広帯域の場合 )、あるいは Speex8KHzEncode()関数および Speex8KHzDecode()関数( 狭帯域の場合 ) を呼び出して、音声データのエンコーディング / デコーディングを行います。
2009 Microchip Technology Inc. DS70328A_JP - ページ 23
dsPIC® DSC Speex 音声エンコーディング / デコーディング ライブラリのユーザー ガイド
3.3.2 デモの設定
このデモ アプリケーションは、Audio PICtail Plus ドーター ボード ( ソフトウェア ライセンスには含まれません ) を搭載した Explorer 16 開発ボードで実行することを想定しています。この項で説明した手順は、狭帯域と広帯域いずれの Speex 録音再生デモにも適用されます。
以下の項に記載した手順に従って、デモをセットアップします。
3.3.2.1 EXPLORER 16 開発ボードと AUDIO PICtail PLUS ドーター ボードを設定する
電源を投入する前に、ボードを設定します。
1. Audio PICtail Plus ドーター ボードで、ジャンパ J4 (O/P SEL) をコーデック位置に設定し、ジャンパ J8 (LN/MIC) をマイクロフォン位置に設定します ( 図 3-2 を参照 )。
2. Audio PICtail Plus ドーター ボードを、Explorer 16 開発ボードの PICtail Plus ソケット J5 に差し込みます。
3. Audio PICtail Plus ドーター ボードのソケット J10 にヘッドフォンを接続します。
4. Audio PICtail Plusドーター ボードのソケットJ1にマイクロフォンを接続します。
5. 設定が完了したら、Explorer 16 開発ボードに電源を投入します。
3.3.2.2 dsPIC DSC デバイスのプログラミング
このプロセスは、Explorer 16 開発ボードの dsPIC DSC デバイスに Speex 録音再生デモをロードするときに使用します。
1. PC で、MPLAB IDE を起動し、RecordPlayフォルダにある Record Play Demo.mcpプロジェクトを開きます。MPLAB IDE の詳細は、『MPLAB IDEユーザーズ ガイド』(DS51025) を参照してください。
2. [File] > [Import] > [Record Play Demo] を順に選択し、プロジェクトの 16 進ファイルをインポートします。
3. [Programmer] メニューで [Connect] を選択し、MPLAB ICD 2 を dsPIC DSC デバイス ターゲットにリンクします。[Output] ウィンドウに、MPLAB ICD 2 の準備が完了したことが表示されます。
4. [Programmer] メニューで [Program] を選択します。[Output] ウィンドウにダウンロード プロセスが表示され、図 3-4 のように、プログラミングが正常に終了したことが示されます。
5. MPLAB ICD 2 を Explorer 16 開発ボードに接続します。
6. ボードで dsPIC DSC デバイスをプログラムします。
7. プログラムがロードされたら、MPLAB ICD 2 をボードから切断します (MPLABICD 2 コネクタから電話ケーブルを外します )。
3.3.3 デモ手順
デバイスにデモ アプリケーションがプログラムされたら、アプリケーションを実行する準備が整いました。以下の手順に従って、デモを実行します。
1. ボードをリセットします。ボードの LED D3 が点灯し、アプリケーションが実行中であることが示されます。
2. スイッチ S3 を押して、消去および録音プロセスを開始します。
LED D4 が点灯し、シリアル フラッシュ メモリを消去していることが示されます。消去が終了すると LED D4 が消灯し、LED D7 が点灯して録音中であることが示されます。マイクロフォン信号が捕集され、シリアル フラッシュ メモリに格納されます。
3. スイッチ S6 を押します。録音モードが終了し、再生モードが開始されます。LED D7 が消灯し、LED D8 が点灯します。
DS70328A_JP - ページ 24 2009 Microchip Technology Inc.
クイック スタート デモ
4. 録音を再開するには、スイッチ S3 を押します。
3.3.4 デモ コードの説明
デモ コードは、PLL が 40 MIPS 動作に設定された状態で、プライマリ オシレータをクロック ソースとして使用して、dsPIC DSC デバイスで実行されます。
ファイル main.cには、デモ アプリケーションのメイン関数が含まれます。このメイン関数は、WM8510 コーデック ドライバ、SST25VF040B シリアル フラッシュ メモリ ドライバで必要となるすべての変数および配列、dsPIC DSC Speex 音声エンコーディング / デコーディング ライブラリ関数で必要となるデータ メモリのブロックをデータ メモリに割り当てます。
メイン関数は、dsPIC DSC Speex 音声エンコーディング / デコーディング ライブラリから Speex8KHzEncoderInit()関数および Speex8KHzDecoderInit()関数( 広帯域録音再生デモの場合は対応する Wideband 関数 ) を呼び出し、Speex デコーダ アルゴリズムをデフォルトの初期状態に初期化します。
また、メイン関数は、WM8510Init()関数を呼び出し、DCI モジュール、I2C モジュール、WM8510 コーデック、および DCI 割り込みを初期化します。DCI モジュールは、マスターとして動作し、シリアル クロックおよびフレーム同期ラインを駆動します。WM8510 コーデックはスレーブとして動作します。DCI モジュールはマルチチャネル フレーム同期動作モードで、データ ワード サイズ 16 ビットおよびデータ ワード数 ( フレーム当たりのタイムスロット数 ) 16 に設定されています。このデモでは 1 つの送信スロットと 1 つの受信スロットのみを使用します。dsPIC DSC デバイスは、dsPIC DSC デバイスの I2C モジュールを介して、WM8510 コードに制御情報を伝達します。続いて、WM8510Start()関数を使用して、DCI モジュールと I2C モジュールを有効にします。WM8510SampleRate8KConfig()は、WM8510 コーデックのサンプリング レートを 8 kHz に設定します。広帯域通信デモの場合は、WM8510SampleRate16KConfig()関数を呼び出し、WM8510 コーデックのサンプリング レートを 16 kHz に設定します。
SST25VF040BInit()関数が呼び出され、シリアル フラッシュ ドライバ メモリが初期化されます。SST25VF040BStart()関数が、dsPIC DSC デバイスの SPI™ モジュールを有効にし、シリアル フラッシュと通信します。
メイン関数はスイッチをポーリングし、録音モードまたは再生モードが選択されているかどうかを判別します。録音モードが選択されている場合、チップ消去コマンドが含まれる SST25VF040BIOCtl()関数が呼び出されます。チップ消去が完了したら、Speex8KHzEncode()関数を使用して現在の音声フレームがエンコードされ、SST25VF040BWrite()関数を使用してフラッシュ メモリに書き込まれます。音声フレームは、WM8510 ドライバにも送られ、ヘッドフォンに出力されます。再生モードが選択されている場合、SST25VF040BRead()関数を使用してシリアル フラッシュ メモリを読み出し、Speex8KHzDecode()関数を使用してデコードし、WM8510 ドライバに書き込んで、ヘッドフォンに出力します。
2009 Microchip Technology Inc. DS70328A_JP - ページ 25
dsPIC® DSC Speex 音声エンコーディング / デコーディング ライブラリのユーザー ガイド
ノート :
DS70328A_JP - ページ 26 2009 Microchip Technology Inc.
dsPIC® DSC SPEEX 音声エンコーディング / デコーディング
ライブラリのユーザー ガイド
第 4 章 API (Application Programming Interface)
この章では、dsPIC DSC Speex 音声エンコーディング / デコーディング ライブラリで使用できる API (Application Programming Interface) 関数の詳細を説明します。以下のトピックがあります。
• アプリケーションへのライブラリの追加
• メモリ モデル コンパイル オプション
• ライブラリの使用
• レジスタの使用
• パケットの損失と破損
• PC エンコーダ ユーティリティ (PCEU) 出力ファイル
• リソース要件
• API 関数
• アプリケーションのヒント
4.1 アプリケーションへのライブラリの追加
アプリケーションで dsPIC DSC Speex 音声エンコーディング / デコーディング ライブラリを使用するには、ライブラリ アーカイブをアプリケーション プロジェクト ワークスペースに追加し、 対応するインクルード (.h) ファイルをアプリケーション コードに追加する必要があります。ライブラリ ファイルをアプリケーションに加える際に、次の点を考慮します。
• アプリケーションが 8 kHz サンプリング レートの音声コーディング ( 狭帯域 ) 機能のみを必要とし、出力データ レートが 8 kbps である場合、libspeex_8k.aファイルおよび speek_8k.hファイルをアプリケーションに追加します。
• アプリケーションが 16 kHz サンプリング レートを必要とし、複数モードをサポートする場合、libspeex.aファイルおよび speex.hファイルをアプリケーションに追加する必要があります。
ここでは、広帯域 Speex ライブラリ アーカイブをプロジェクトに追加する手順を説明します。狭帯域 Speex ライブラリ アーカイブを追加する場合の手順も同じですが、選択するファイルが libspeex_8k.aとなります。libspeex.aライブラリ アーカイブは、2 つの狭帯域モードもサポートします。
アプリケーションにライブラリを追加するには、以下の手順に従います。
1. MPLAB ワークスペース アプリケーションの [Project] ウィンドウで [Library Files] を右クリックし、[Add files] を選択します。
図 4-1:
2009 Microchip Technology Inc. DS70328A_JP - ページ27
dsPIC® DSC Speex 音声エンコーディング / デコーディング ライブラリのユーザー ガイド
2. libspeex.aファイルの場所まで移動します ( インストール ディレクトリのlibsフォルダにあります )。
3. ファイルを選択し、[Open] をクリックします。
図 4-2:
4. ライブラリがアプリケーションに追加されます。
図 4-3:
ライブラリ関数を使用するには、アプリケーション ソース コードで speex.hをインクルードします。このファイルは、( インストール ディレクトリにある ) hフォルダからアプリケーション プロジェクト フォルダにコピーできます。
DS70328A_JP - ページ 28 2009 Microchip Technology Inc.
API (Application Programming Interface)
4.2 メモリ モデル コンパイル オプション
アプリケーションが libspeex.a ( 狭帯域 + 広帯域アーカイブ ファイル ) を使用する場合、コンパイラが大容量メモリ モデルを使用するよう設定する必要があります。手順を以下に示します。
1. 図 4-4 に示すように、[MPLAB IDE] メニューで [Project] > [Build Options] > [Project] を順に選択します。
図 4-4:
2. [MPLAB C30] タブをクリックし、以下のオプションを設定します。
a) 図 4-5 に示すように、[Categories] ドロップダウン リストから [Memory Model] を選択します。
2009 Microchip Technology Inc. DS70328A_JP - ページ 29
dsPIC® DSC Speex 音声エンコーディング / デコーディング ライブラリのユーザー ガイド
図 4-5:
b) 図 4-6 に示すように、[Data Model] セクションで [Large data model] を選択します。
DS70328A_JP - ページ 30 2009 Microchip Technology Inc.
API (Application Programming Interface)
図 4-6:
3. [Apply] をクリックし、[OK] をクリックします。
これで手順は完了です。
2009 Microchip Technology Inc. DS70328A_JP - ページ 31
dsPIC® DSC Speex 音声エンコーディング / デコーディング ライブラリのユーザー ガイド
4.3 ライブラリの使用
dsPIC DSC Speex 音声エンコーディング / デコーディング ライブラリは、リエントラント環境で使用できるように設計されています。これにより、アルゴリズムは複数の音声チャネルを処理できます。エンコーダおよびデコーダのアルゴリズムはそれぞれ独立して動作するため、アプリケーションは、不要な場合にデコードまたはエンコーダをインスタンス化する必要がありません。スクラッチ メモリは、複数のエンコーダ、複数のデコーダで共有できます。狭帯域 Speex ライブラリおよび広帯域 Speex ライブラリを使用するのに必要なコーディング ステップを、以下に説明します。
4.3.1 狭帯域 Speex コーディング ステップ
狭帯域 Speex を使用するには、アプリケーションでプロジェクトにlibspeex_8k.aを追加し、アプリケーション コードで speex_8k.hをインクルードする必要があります。その後、以下のコーディング ステップを実行します。実際に必要なコードについては、例 4-1 を参照してください。
1. 狭帯域 Speex エンコーダのメモリを割り振ります。
このメモリは、サイズ NB_SPEEX_ENCODER_STATE_SIZEの整数配列となります。すべての音声チャネルに、それぞれエンコーダ状態ホルダが必要です。
2. 狭帯域 Speex デコーダのメモリを割り振ります。
このメモリは、サイズ NB_SPEEX_DECODER_STATE_SIZEの整数配列となります。すべての音声チャネルに、それぞれデコーダ状態ホルダが必要です。
3. エンコーダの X および Y スクラッチ メモリを割り振ります。
エンコーダの X スクラッチ メモリは、サイズNB_SPEEX_ENCODER_X_SCRATCH_SIZEの符号なし文字配列で、2 バイトのアドレス境界に合わせた X メモリに配置されます。エンコーダの Y スクラッチ メモリは、サイズ NB_SPEEX_ENCODER_Y_SCRATCH_SIZEの符号なし文字配列で、2 バイトのアドレス境界に合わせた Y メモリに配置されます。複数のエンコーダでスクラッチ メモリを共有できます。
4. デコーダの X および Y スクラッチ メモリを割り振ります。
デコーダの X スクラッチ メモリは、サイズNB_SPEEX_DECODER_X_SCRATCH_SIZEの符号なし文字配列で、2 バイトのアドレス境界に合わせた X メモリに配置されます。デコーダの Y スクラッチ メモリは、サイズ NB_SPEEX_DECODER_Y_SCRATCH_SIZの符号なし文字配列で、2 バイトのアドレス境界に合わせた Y メモリに配置されます。複数のデコーダでスクラッチ メモリを共有できます。
5. 各音声チャネルのエンコーダを初期化します。
Speex8KHzEncoderInit()関数を使用して、各音声チャネルで狭帯域Speex エンコーダの状態を初期化します。
6. 各音声チャネルのデコーダを初期化します。
Speex8KHzDecoderInit()関数を使用して、各音声チャネルで狭帯域Speex デコーダの状態を初期化します。
7. 未処理の音声データ フレームをエンコードします。
Speex8KHzEncode()関数を使用して、未処理の音声フレームをエンコードします。フレームのサイズは、NB_SPEEX_ENCODER_INPUT_SIZEでなければなりません。
8. エンコード済みの音声データ フレームをデコードします。
Speex8KHzDecode()関数を使用して、エンコード済み音声フレームをデコードします。フレームのサイズは、NB_SPEEX_DECODER_INPUT_SIZE_8Kでなければなりません。
DS70328A_JP - ページ 32 2009 Microchip Technology Inc.
API (Application Programming Interface)
例 4-1: 狭帯域 SPEEX ライブラリ コード サンプル
4.3.2 広帯域 Speex コーディング ステップ
広帯域 Speex を使用するには、アプリケーションでプロジェクトに libspeex.aを追加し、アプリケーション コードに speex.hをインクルードする必要があります。その後、以下のコーディング ステップを実行します。実際に必要なコードについては、例 4-2 を参照してください。
1. 広帯域 Speex エンコーダのメモリを割り振ります。
このメモリは、サイズ WB_SPEEX_ENCODER_STATE_SIZEの整数配列となります。すべての音声チャネルに、それぞれエンコーダ状態ホルダが必要です。
2. 広帯域 Speex デコーダのメモリを割り振ります。
このメモリは、サイズ WB_SPEEX_DECODER_STATE_SIZEの整数配列となります。すべての音声チャネルに、それぞれデコーダ状態ホルダが必要です。
3. エンコーダの X および Y スクラッチ メモリを割り振ります。
エンコーダの X スクラッチ メモリは、サイズWB_SPEEX_ENCODER_X_SCRATCH_SIZEの符号なし文字配列で、2 バイトのアドレス境界に合わせた X メモリに配置されます。エンコーダの Y スクラッチ メモリは、サイズ WB_SPEEX_ENCODER_Y_SCRATCH_SIZEの符号なし文字配列で、2 バイトのアドレス境界に合わせた Y メモリに配置されます。複数のエンコーダでスクラッチ メモリを共有できます。
4. デコーダの X および Y スクラッチ メモリを割り振ります。
デコーダの X スクラッチ メモリは、サイズWB_SPEEX_DECODER_X_SCRATCH_SIZEの符号なし文字配列で、2 バイトのアドレス境界に合わせた X メモリに配置されます。デコーダの Y スクラッチ メモリは、サイズ WB_SPEEX_DECODER_Y_SCRATCH_SIZEの符号なし文字配列で、2バイトのアドレス境界に合わせた Y メモリに配置されます。複数のデコーダでスクラッチ メモリを共有できます。
5. 各音声チャネルのエンコーダを初期化します。
Speex16KHzEncoderInit()関数を使用して、各音声チャネルで広帯域 Speexエンコーダの状態を初期化します。
#include “speex_8k.h”...int encoder[NB_SPEEX_ENCODER_STATE_SIZE]; /* Step 1 */int decoder[NB_SPEEX_DECODER_STATE_SIZE]; /* Step 2 */
unsigned char encXScratchMem[NB_SPEEX_ENCODER_X_SCRATCH_SIZE]; _XBSS(2); /* Step 3 */unsigned char encYScratchMem[NB_SPEEX_ENCODER_Y_SCRATCH_SIZE]; _YBSS(2); /* Step 3 */ unsigned char decXScratchMem[NB_SPEEX_DECODER_X_SCRATCH_SIZE]; _XBSS(2); /* Step 4 */unsigned char decYScratchMem[NB_SPEEX_DECODER_Y_SCRATCH_SIZE]; _YBSS(2); /* Step 4 */...Speex8KHzEncoderInit(encoder, encXScratchMem, encYScratchMem, NB_SPEEX_BITRATE_8K,
SPEEX_NORMAL_PITCH) ;/* Step 5 */Speex8KHzDecoderInit(decoder, decXScratchMem, decYScratchMem) ; /* Step 6 */...Speex8KHzEncode(encoder, rawSamples, encodedFrame); /* Step 7 */Speex8KHzDecode(decoder, encodedFrame, rawSamples); /* Step 8 */
2009 Microchip Technology Inc. DS70328A_JP - ページ 33
dsPIC® DSC Speex 音声エンコーディング / デコーディング ライブラリのユーザー ガイド
6. 各音声チャネルのデコーダを初期化します。
Speex16KHzDecoderInit()関数を使用して、各音声チャネルで広帯域 Speexデコーダの状態を初期化します。
7. 未処理の音声データ フレームをエンコードします。
Speex16KHzEncode()関数を使用して、未処理の音声フレームをエンコードします。フレームのサイズは、WB_SPEEX_ENCODER_INPUT_SIZEでなければなりません。
8. エンコード済みの音声データ フレームをデコードします。
Speex16KHzDecode()関数を使用して、エンコード済み音声フレームをデコードします。選択したモードに応じて、入力配列のサイズは、WB_SPEEX_DECODER_INPUT_SIZE_9K8またはWB_SPEEX_DECODER_INPUT_SIZE_12K8バイトのいずれかとなります。
例 4-2: 広帯域 SPEEX ライブラリ コード サンプル
4.4 レジスタの使用
dsPIC DSC Speex 音声エンコーディング / デコーディング ライブラリでは、MODCON、CORCON、XMODSRT、XMODEND、YMODSRT、YMODEND、およびPSVPAG レジスタを使用し、変更します。これらのレジスタは保存され、ライブラリでの使用後は元の値に復元されます。アプリケーションが割り込みサービス ルーチン (ISR) でこれらのレジスタを変更する場合、アプリケーションは ISR の開始および終了時にこれらのレジスタを保存、復元しなければなりません。これにより、特に、ライブラリ関数の実行中に割り込みが発生した場合など、ISR が実行コンテキストを破壊するのを防止します。
4.5 パケットの損失と破損
Speex アルゴリズムは失われたパケットに対処する堅牢性を備えていますが、破損したパケットは処理できません。無効のモードにおいてエンコードされたパケットを使用した場合、デコーダ関数はエラー コードを返し、正しい信号の推測を試みます。破損したパケット ( 無効なボコーダ データを含むパケット ) は、予期できないデコーダ動作を引き起こすことがあります。このようなアプリケーションでは、上位レイヤでエラー チェックと修正の機能を実装し、Speex パケットの完全性を保証することをお勧めします。
#include “speex.h”...int encoder[WB_SPEEX_ENCODER_STATE_SIZE]; /* Step 1 */int decoder[WB_SPEEX_DECODER_STATE_SIZE]; /* Step 2 */
unsigned char encXScratchMem[WB_SPEEX_ENCODER_X_SCRATCH_SIZE]; _XBSS(2); /* Step 3 */unsigned char encYScratchMem[WB_SPEEX_ENCODER_Y_SCRATCH_SIZE]; _YBSS(2); /* Step 3 */ unsigned char decXScratchMem[WB_SPEEX_DECODER_X_SCRATCH_SIZE]; _XBSS(2); /* Step 4 */unsigned char decYScratchMem[WB_SPEEX_DECODER_Y_SCRATCH_SIZE]; _YBSS(2); /* Step 4 */...Speex16KHzEncoderInit(encoder, encXScratchMem, encYScratchMem, WB_SPEEX_BITRATE_9K8,
SPEEX_NORMAL_PITCH) ; /* Step 5 */Speex16KHzDecoderInit(decoder, decXScratchMem, decYScratchMem) ; /* Step 6 */...Speex16KHzEncode(encoder, rawSamples, encodedFrame) ; /* Step 7 */Speex16KHzDecode(decoder, encodedFrame, rawSamples) ; /* Step 8 */
DS70328A_JP - ページ 34 2009 Microchip Technology Inc.
API (Application Programming Interface)
4.6 PC エンコーダ ユーティリティ (PCEU) 出力ファイル
Speex PC エンコーダ ユーティリティ (PCEU) は、WAVE ファイルまたはマイクロフォンから捕集された音声をエンコードした後、3 つの出力ファイルを生成します。このファイルを表 4-1 に示します。
表 4-1: PCEU で出力されるファイルの説明
PCEU から生成される .sファイルは、アプリケーション ワークスペースに組み込むことができます。コンパイルすると、エンコード済みの音声データがプログラム メモリの一部となります。広帯域モード 9.8 kbps でエンコードされた Speex 処理済みファイルを例に考えてみましょう。このモードでは、エンコード済みの各フレームに 25 バイトのデータが含まれます。例 4-3 に、このモードで PCEU から生成される.sファイルの先頭部分を示します。
例 4-3: 9.8 kbps 広帯域モードの .sファイル
メモリの使用を最適化するため、エンコーダ ユーティリティでは、1 つのプログラム ワードの 24 ビット (3 バイト ) すべてを使用してデータを格納します。したがって、フレームの最初のバイトは、プログラムの下位 (low) バイトに格納されます。2 番目のバイトはプログラムの上位 (high) バイトに格納され、3 番目のバイトは最上位 (upper) のバイトに格納されます。例 4-3 を参照してください。
0x1D – フレームの最初のバイトがプログラムの下位 (low) バイトに格納される
0xDD – フレームの 2 番目のバイトがプログラムの上位 (high) バイトに格納される
0x84 – フレームの 3 番目のバイトが最上位 (upper) のバイトに格納される
プログラム ワードの最上位 (upper) プログラム バイトに含まれる有効なフレーム データを読み出す必要があるため、アプリケーション プログラムは、TBLRD命令を使用して、プログラム メモリ内のエンコード済みデータにアクセスする必要があります。
File Type Description
.s File containing Speex encoded data with attributes to make the data a part of the program memory on the dsPIC DSC device. This file can be added to an application project.
.spx File containing Speex encoded data.
.raw File containing raw audio data.
* Speech Encoder Utility settings:* Input Source: Microphone* Output Array: speex_data* Array Size: 2502 bytes * Target Memory: Program Memory* Bitrate: 9.8 kbps********************************************************************************/
/* There are 834 elements in the data array. */
/* Data file for storing 24-bit constants in program memory */
.global _speex_data
.section .speex, “x”_speex_data:.pword 0x84DD1D, 0x390030, 0x0070CE, 0x38E71C, 0x762E00, 0x141C14.pword 0x930EAB, 0x0000B6, 0xC41D07, 0x3C0601, 0x730BE4, 0x8530D8.pword 0xC3A32A, 0x2EE149, 0x2B252B, 0x89B693, 0x1D97C8, 0xFBC2DE
2009 Microchip Technology Inc. DS70328A_JP - ページ 35
dsPIC® DSC Speex 音声エンコーディング / デコーディング ライブラリのユーザー ガイド
4.7 リソース要件
dsPIC DSC Speex 音声エンコーディング / デコーディング ライブラリを実行するためのリソース要件は、狭帯域専用バージョン (libspeex_8k.aおよび speex_8k.h)または広帯域 + 狭帯域バージョン (libspeex.aおよび speex.h) のいずれのライブラリを選択するかによって異なります。各バージョンのリソース要件を、以下の項で表に示します。
4.7.1 狭帯域専用ライブラリ
狭帯域専用バージョンは、8 kHz のサンプリング レートで 8 kbps モードだけをサポートします。このライブラリのリソース要件は、次のとおりです。
表 4-2: プログラム メモリの使用量
表 4-3: 必要な入力および出力バッファ
表 4-4: 状態およびスクラッチ メモリ
表 4-5: RAM のテーブルと定数
表 4-6: MIPS
Resource Size in Bytes Section
Encoder 24107 .text and .const
Decoder 24101 .text and .const
Encoder and Decoder 24131 .text and .const
Resource Size in Bytes Alignment Section
Encoder Input Buffer 320 2 X data memory
Encoder Output Buffer (8 kbps mode)
20 2 X data memory
Decoder Output Buffer 320 2 X data memory
注 : デコーダの出力ではエンコーダ入力バッファが再利用されるため、デコーダ出力バッファは不要です。
Resource Size in Bytes Alignment Section
Encoder State Memory 1642 2 X data memory
Decoder State Memory 1394 2 X data memory
Encoder Scratch X Memory 800 2 X data memory
Encoder Scratch Y Memory 1500 2 Y data memory
Decoder Scratch X Memory 82 2 X data memory
Decoder Scratch Y Memory 850 2 Y data memory
Resource Size in Bytes Alignment Section
Encoder 78 2 X data memory
Decoder 108 2 X data memory
Encoder and Decoder 108 2 X data memory
Function MIPS Typical Call Frequency
Speex8KHzEncoderInit() 0.01 Once
Speex8KHzDecoderInit() 0.02 Once
Speex8KHzEncode() 17.85 20 msec
Speex8KHzDecode() 2.11 20 msec
DS70328A_JP - ページ 36 2009 Microchip Technology Inc.
API (Application Programming Interface)
表 4-7: データ形式
4.7.2 広帯域 + 狭帯域 Speex
広帯域 + 狭帯域バージョンは、以下の 4 つのモードをサポートします。
• 8 kbps ( サンプリング レート 8 kHz)
• 11 kbps ( サンプリング レート 8 kHz)
• 9.8 kbps ( サンプリング レート 16 kHz)
• 12.8 kbps ( サンプリング レート 16 kHz)
このライブラリのリソース要件は、次のとおりです。
表 4-8: プログラム メモリの使用量
表 4-9: 必要な入力および出力バッファ
I/O Type Data Type
Encoder Input 16-bit linear PCM data
Decoder Output 16-bit Linear PCM data
Resource Size in Bytes Section
Wideband Encoder 38955 .text and .const
Wideband Decoder 38949 .text and .const
Wideband Encoder plus Wideband Decoder
38979 .text and .const
Narrowband Encoder 38955 .text and .const
Narrowband Decoder 38949 .text and .const
Narrowband Encoder plus Narrowband Decoder
38979 .text and .const
Resource Size in Bytes Alignment Section
Wideband Encoder Input Buffer 640 2 X data memory
Narrowband Encoder Input Buffer 320 2 X data memory
Encoder Output Buffer (8 kbps mode)
20 2 X data memory
Encoder Output Buffer (11 kbps mode)
28 2 X data memory
Encoder Output Buffer (9.8 kbps mode)
25 2 X data memory
Encoder Output Buffer (12.8 kbps mode)
32 2 X data memory
Narrowband Decoder Output Buffer 320 2 X data memory
Wideband Decoder Output Buffer 640 2 X data memory
注 : デコーダの出力ではエンコーダ入力バッファが再利用されるため、デコーダ出力バッファは不要です。
2009 Microchip Technology Inc. DS70328A_JP - ページ 37
dsPIC® DSC Speex 音声エンコーディング / デコーディング ライブラリのユーザー ガイド
表 4-10: 状態およびスクラッチ メモリ
表 4-11: RAM のテーブルと定数
表 4-12: MIPS
表 4-13: データ形式
Resource Size in Bytes Alignment Section
Narrowband Encoder State Memory 1642 2 X data memory
Narrowband Decoder State Memory 1394 2 X data memory
Wideband Encoder State Memory 2168 2 X data memory
Wideband Decoder State Memory 1844 2 Y data memory
Encoder Scratch X Memory 800 2 X data memory
Encoder Scratch Y Memory 2700 2 Y data memory
Decoder Scratch X Memory 82 2 X data memory
Decoder Scratch Y Memory 850 2 Y data memory
Resource Size in Bytes Alignment Section
Wideband Encoder2144 2 X data memory
714 2 Y data memory
Wideband Decoder2944 2 X data memory
714 2 Y data memory
Wideband Encoder plus Wideband Decoder
2944 2 X data memory
714 2 Y data memory
Narrowband Encoder2144 2 X data memory
714 2 Y data memory
Narrowband Decoder2944 2 X data memory
714 2 Y data memory
Narrowband Encoder plus Narrowband Decoder
2944 2 X data memory
714 2 Y data memory
Function MIPS Typical Call Frequency
Speex8KHzEncoderInit() 0.01 Once
Speex8KHzDecoderInit() 0.02 Once
Speex8KHzEncode() 17.12 20 msec
Speex8KHzDecode() 2.08 20 msec
Speex16KHzEncoderInit() 0.02 Once
Speex16KHzDecoderInit() 0.04 Once
Speex16KHzEncode() 19.58 20 msec
Speex16KHzDecode() 4.456 20 msec
I/O Type Data Type
Encoder Input 16-bit linear PCM data
Decoder Output 16-bit Linear PCM data
DS70328A_JP - ページ 38 2009 Microchip Technology Inc.
API (Application Programming Interface)
4.8 API 関数
この項では、dsPIC DSC Speex 音声エンコーディング / デコーディング ライブラリで使用できる API (Application Programming Interface) 関数について説明します。各関数の後にそれぞれの詳しい説明を記載しています。
• Speex8KHzEncoderInit• Speex8KHzDecoderInit• Speex16KHzEncoderInit• Speex16KHzDecoderInit• Speex8KHzEncode• Speex8KHzDecode• Speex16KHzEncode• Speex16KHzDecode• SPEEX_NORMAL_PITCH• SPEEX_LOW_PITCH • NB_SPEEX_BITRATE_8K• NB_SPEEX_BITRATE_11K• WB_SPEEX_BITRATE_9K8• WB_SPEEX_BITRATE_12K8• NB_SPEEX_ENCODER_INPUT_SIZE• NB_SPEEX_DECODER_OUTPUT_SIZE• WB_SPEEX_ENCODER_INPUT_SIZE• WB_SPEEX_DECODER_OUTPUT_SIZE• NB_SPEEX_ENCODED_FRAME_SIZE_8K• NB_SPEEX_ENCODED_FRAME_SIZE_11K• WB_SPEEX_ENCODED_FRAME_SIZE_9K8• WB_SPEEX_ENCODED_FRAME_SIZE_12K8• SPEEX_ENCODER_X_SCRATCH_SIZE • SPEEX_ENCODER_Y_SCRATCH_SIZE• SPEEX_DECODER_X_SCRATCH_SIZE • SPEEX_DECODER_Y_SCRATCH_SIZE • NB_SPEEX_ENCODER_STATE_SIZE• NB_SPEEX_DECODER_STATE_SIZE• WB_SPEEX_ENCODER_STATE_SIZE• WB_SPEEX_DECODER_STATE_SIZE• SPEEX_INVALID_MODE_ID
2009 Microchip Technology Inc. DS70328A_JP - ページ 39
dsPIC® DSC Speex 音声エンコーディング / デコーディング ライブラリのユーザー ガイド
Speex8KHzEncoderInit
説明
狭帯域 Speex エンコーダを初期化します。
インクルード
speex.h speex_8k.h
プロトタイプ
void Speex8KHzEncoderInit(int* encoderState, unsigned char* xScratchMem, unsigned char* yScratchMem,int bitRate,int pitch);
引き数
encoderState 狭帯域 Speex エンコーダのこのインスタンス用の状態メモリへの
ポインタ。xScratchMem エンコーダが使用するX RAMのスクラッチ メモリ領域へのポインタ。
yScratchMem エンコーダが使用するY RAMのスクラッチ メモリ領域へのポインタ。
bitRate エンコーダが動作するビット レートを表す値。 値は、8 kbps モード
の場合は NB_SPEEX_BITRATE_8K、11 kbps モードの場合は
NB_SPEEX_BITRATE_11Kのいずれかです。
pitch エンコーダのピッチ範囲を表す値。 値は、低ピッチ範囲の場合は
SPEEX_LOW_PITCH、通常ピッチ範囲の場合は
SPEEX_NORMAL_PITCHのいずれかです。
戻り値
なし
注記
各音声チャネルに、それぞれエンコーダ状態が必要です。エンコーダ関数が同じコンテキストで呼び出される限り ( すなわち、エンコード関数が割り込みサービス ルーチン (ISR) や他のタスクで呼び出されない場合 )、複数のエンコーダでスクラッチ メモリを共有できます。
コード例
int encoder [NB_SPEEX_ENCODER_STATE_SIZE] _XBSS(2);unsigned char xScratchMem [SPEEX_ENCODER_X_SCRATCH_SIZE] _XBSS(2);unsigned char yScratchMem [SPEEX_ENCODER_Y_SCRATCH_SIZE] _YBSS(2);.../* Initialize an Narrowband Speex encoder at bit * rate of 8 kbps and normal pitch range */
Speex8KHzEncoderInit(encoder,xScratchMem,yScratchMem,NB_SPEEX_BITRATE_8K, SPEEX_NORMAL_PITCH);
DS70328A_JP - ページ 40 2009 Microchip Technology Inc.
API (Application Programming Interface)
Speex8KHzDecoderInit
説明
狭帯域 Speex デコーダを初期化します。
インクルード
speex.h speex_8k.h
プロトタイプ
void Speex8KHzDecoderInit(int* decoderState, unsigned char* xScratchMem, unsigned char* yScratchMem);
引き数
decoderState 狭帯域 Speex デコーダのこのインスタンス用の状態メモリへの
ポインタ。xScratchMem デコーダが使用する X RAM のスクラッチ メモリ領域へのポインタ。
yScratchMem デコーダが使用する Y RAM のスクラッチ メモリ領域へのポインタ。
戻り値
なし
注記
各音声チャネルに、それぞれデコーダ状態が必要です。デコーダ関数が同じコンテキストで呼び出される限り ( すなわち、デコード関数が割り込みサービス ルーチン(ISR) や他のタスクで呼び出されない場合 )、複数のデコーダでスクラッチ メモリを共有できます。
コード例
int decoder [NB_SPEEX_DECODER_STATE_SIZE] _XBSS(2);unsigned char xScratchMem [SPEEX_DECODER_X_SCRATCH_SIZE] _XBSS(2);unsigned char yScratchMem [SPEEX_DECODER_Y_SCRATCH_SIZE] _YBSS(2);.../* Initialize a Narrowband Speex decoder */
Speex8KHzDecoderInit(decoder,xScratchMem,yScratchMem);
2009 Microchip Technology Inc. DS70328A_JP - ページ 41
dsPIC® DSC Speex 音声エンコーディング / デコーディング ライブラリのユーザー ガイド
Speex16KHzEncoderInit
説明
広帯域 Speex エンコーダを初期化します。
インクルード
speex.h
プロトタイプ
void Speex16KHzEncoderInit(int* encoderState, unsigned char* xScratchMem, unsigned char* yScratchMem,int bitRate,int pitch);
引き数
encoderState 狭帯域 Speex エンコーダのこのインスタンス用の状態メモリへの
ポインタ。xScratchMem エンコーダが使用するX RAMのスクラッチ メモリ領域へのポインタ。
yScratchMem エンコーダが使用するY RAMのスクラッチ メモリ領域へのポインタ。
bitRate エンコーダが動作するビット レートを表す値。 値は、9.8 kbps モード
の場合は WB_SPEEX_BITRATE_9K8、12.8 kbps モードの場合は
WB_SPEEX_BITRATE_12K8のいずれかです。
pitch エンコーダのピッチ範囲を表す値。 値は、低ピッチ範囲の場合は
SPEEX_LOW_PITCH、通常ピッチ範囲の場合は SPEEX_NORMAL_PITCH
のいずれかです。
戻り値
なし
注記
各音声チャネルに、それぞれエンコーダ状態が必要です。エンコーダ関数が同じコンテキストで呼び出される限り ( すなわち、エンコード関数が割り込みサービス ルーチンや他のタスクで呼び出されない場合 )、複数のエンコーダでスクラッチ メモリを共有できます。
コード例
int encoder [WB_SPEEX_ENCODER_STATE_SIZE] _XBSS(2);unsigned char xScratchMem [SPEEX_ENCODER_X_SCRATCH_SIZE] _XBSS(2);unsigned char yScratchMem [SPEEX_ENCODER_Y_SCRATCH_SIZE] _YBSS(2);
/* Initialize a Wideband Speex encoder at bit * rate of 12.8 kbps and normal pitch range */...Speex16KHzEncoderInit(encoder,xScratchMem,yScratchMem,WB_SPEEX_BITRATE_12K8, SPEEX_NORMAL_PITCH);
DS70328A_JP - ページ 42 2009 Microchip Technology Inc.
API (Application Programming Interface)
Speex16KHzDecoderInit
説明
広帯域 Speex デコーダを初期化します。
インクルード
speex.h
プロトタイプ
void Speex16KHzDecoderInit(int* decoderState, unsigned char* xScratchMem, unsigned char* yScratchMem);
引き数
decoderState 広帯域 Speex デコーダのこのインスタンス用の状態メモリへの
ポインタ。xScratchMem デコーダが使用する X RAM のスクラッチ メモリ領域へのポインタ。
yScratchMem デコーダが使用する Y RAM のスクラッチ メモリ領域へのポインタ。
戻り値
なし
注記
各音声チャネルに、それぞれデコーダ状態が必要です。デコーダ関数が同じコンテキストで呼び出される限り ( すなわち、デコード関数が割り込みサービス ルーチンや他のタスクで呼び出されない場合 )、複数のデコーダでスクラッチ メモリを共有できます。
コード例
int decoder [WB_SPEEX_DECODER_STATE_SIZE] _XBSS(2);unsigned char xScratchMem [SPEEX_DECODER_X_SCRATCH_SIZE] _XBSS(2);unsigned char yScratchMem [SPEEX_DECODER_Y_SCRATCH_SIZE] _YBSS(2);.../* Initialize a Wideband Speex decoder */
Speex16KHzDecoderInit(decoder,xScratchMem,yScratchMem);
2009 Microchip Technology Inc. DS70328A_JP - ページ 43
dsPIC® DSC Speex 音声エンコーディング / デコーディング ライブラリのユーザー ガイド
Speex8KHzEncode
説明
狭帯域 Speex エンコーダを呼び出し、データ フレームをエンコードします。
インクルード
speex.h speex_8k.h
プロトタイプ
int Speex8KHzEncode(int* encoderState, int * input, char* output);
引き数
encoderState 狭帯域 Speex エンコーダのこのインスタンス用の状態メモリへの
ポインタ。input 未処理の音声データ フレームへのポインタ。
output エンコード済みフレームへのポインタ。
戻り値
エンコード済みのフレーム サイズをバイト単位で返します。
注記
出力配列のサイズは、エンコーダのモードによって異なります。NB_SPEEX_ENCODER_OUTPUT_SIZE_8Kまたは NB_SPEEX_ENCODER_OUTPUT_SIZE_11Kのいずれかです。入力配列のサイズは、NB_SPEEX_ENCODER_INPUT_SIZEでなければなりません。
コード例
int encoder [NB_SPEEX_ENCODER_STATE_SIZE] _XBSS(2);unsigned char xScratchMem [SPEEX_ENCODER_X_SCRATCH_SIZE] _XBSS(2);unsigned char yScratchMem [SPEEX_ENCODER_Y_SCRATCH_SIZE] _YBSS(2);int inputFrame [NB_SPEEX_ENCODER_INPUT_SIZE] _XBSS(2);char outputFrame [NB_SPEEX_ENCODER_OUTPUT_SIZE_8K] _XBSS(2);int bytes;.../* Initialize a Narrowband Speex encoder for operation * at 8 kbps and normal pitch range */
Speex8KHzEncoderInit(encoder,xScratchMem,yScratchMem,NB_SPEEX_BITRATE_8K,SPEEX_NORMAL_PITCH);.../* Encode a frame of data */
bytes = Speex8KHzEncode(encoder,inputFrame,outputFrame);
DS70328A_JP - ページ 44 2009 Microchip Technology Inc.
API (Application Programming Interface)
Speex8KHzDecode
説明
狭帯域Speexデコーダを呼び出し、エンコード済みデータ フレームをデコードします。
インクルード
speex.h speex_8k.h
プロトタイプ
int Speex8KHzDecode(int* decoderState, char * input, int* output);
引き数
decoderState 狭帯域 Speex デコーダのこのインスタンス用の状態メモリへの
ポインタ。input エンコード済みデータ フレームへのポインタ。
output デコード済みデータへのポインタ。
戻り値
エラーが検出されなかった場合は「0」を返します。パケットに無効なモードが含まれていた場合、SPEEX_INVALID_MODE_IDを返します。
注記
デコーダは、パケットに格納された情報を使用して、エンコード済みフレームのピッチ範囲とエンコード モードを取得します。NB_SPEEX_DECODER_OUTPUT_SIZEマクロを使用して、出力配列サイズを指定できます。
コード例
int decoder [NB_SPEEX_DECODER_STATE_SIZE] _XBSS(2);unsigned char xScratchMem [SPEEX_DECODER_X_SCRATCH_SIZE] _XBSS(2);unsigned char yScratchMem [SPEEX_DECODER_Y_SCRATCH_SIZE] _YBSS(2);char inputFrame [NB_SPEEX_ENCODER_OUTPUT_SIZE_8K] _XBSS(2);int outputFrame [NB_SPEEX_DECODER_OUTPUT_SIZE] _XBSS(2);int retVal;.../* Initialize a Narrowband Speex decoder */
Speex8KHzDecoderInit(decoder,xScratchMem,yScratchMem);.../* Decode a frame of data */
retVal = Speex8KHzDecode(encoder,inputFrame,outputFrame);
2009 Microchip Technology Inc. DS70328A_JP - ページ 45
dsPIC® DSC Speex 音声エンコーディング / デコーディング ライブラリのユーザー ガイド
Speex16KHzEncode
説明
広帯域 Speex エンコーダを呼び出し、データ フレームをエンコードします。
インクルード
speex.h
プロトタイプ
int Speex16KHzEncode(int* encoderState, int * input, char* output);
引き数
encoderState 広帯域 Speex エンコーダのこのインスタンス用の状態メモリへの
ポインタ。input 未処理の音声データ フレームへのポインタ。
output エンコード済みフレームへのポインタ。
戻り値
エンコード済みのフレーム サイズをバイト単位で返します。
注記
出力配列のサイズは、エンコーダのモードによって異なります。WB_SPEEX_ENCODER_OUTPUT_SIZE_9K8またはWB_SPEEX_ENCODER_OUTPUT_SIZE_12K8のいずれかです。入力配列のサイズは、WB_SPEEX_ENCODER_INPUT_SIZEでなければなりません。
コード例
int encoder [WB_SPEEX_ENCODER_STATE_SIZE] _XBSS(2);unsigned char xScratchMem [SPEEX_ENCODER_X_SCRATCH_SIZE] _XBSS(2);unsigned char yScratchMem [SPEEX_ENCODER_Y_SCRATCH_SIZE] _YBSS(2);int inputFrame [WB_SPEEX_ENCODER_INPUT_SIZE] _XBSS(2);char outputFrame [WB_SPEEX_ENCODER_OUTPUT_SIZE_9K8] _XBSS(2);int bytes;.../* Initialize a Wideband Speex encoder for operation * at 9.8 kbps and normal pitch range */
Speex16KHzEncoderInit(encoder,xScratchMem,yScratchMem,NB_SPEEX_BITRATE_9K8,SPEEX_NORMAL_PITCH);.../* Encode a frame of data */
bytes = Speex16KHzEncode(encoder,inputFrame,outputFrame);
DS70328A_JP - ページ 46 2009 Microchip Technology Inc.
API (Application Programming Interface)
Speex16KHzDecode
説明
広帯域Speexデコーダを呼び出し、エンコード済みデータ フレームをデコードします。
インクルード
speex.h
プロトタイプ
int Speex16KHzDecode(int* decoderState, char * input, int* output);
引き数
decoderState 広帯域 Speex デコーダのこのインスタンス用の状態メモリへの
ポインタ。input エンコード済みデータ フレームへのポインタ。
output デコード済みデータへのポインタ。
戻り値
エラーが検出されなかった場合は「0」を返します。パケットに無効なモードが含まれていた場合、SPEEX_INVALID_MODE_IDを返します。
注記
デコーダは、パケットに格納された情報を使用して、エンコード済みフレームのピッチ範囲とエンコード モードを取得します。WB_SPEEX_DECODER_OUTPUT_SIZEマクロを使用して、出力配列サイズを指定できます。
コード例
int decoder [WB_SPEEX_DECODER_STATE_SIZE] _XBSS(2);unsigned char xScratchMem [SPEEX_DECODER_X_SCRATCH_SIZE] _XBSS(2);unsigned char yScratchMem [SPEEX_DECODER_Y_SCRATCH_SIZE] _YBSS(2);char inputFrame [WB_SPEEX_ENCODER_OUTPUT_SIZE_9K8] _XBSS(2);int outputFrame [WB_SPEEX_DECODER_OUTPUT_SIZE] _XBSS(2);int retVal;.../* Initialize a Wideband Speex decoder */
Speex16KHzDecoderInit(decoder,xScratchMem,yScratchMem);.../* Decode a frame of data */
retVal = Speex16KHzDecode(decoder,inputFrame,outputFrame);
2009 Microchip Technology Inc. DS70328A_JP - ページ 47
dsPIC® DSC Speex 音声エンコーディング / デコーディング ライブラリのユーザー ガイド
SPEEX_NORMAL_PITCH
説明
Speex エンコーダに通常ピッチ範囲を使用することを指示します。
値
0
SPEEX_LOW_PITCH
説明
Speex エンコーダに低ピッチ範囲を使用することを指示します。
値
1
NB_SPEEX_BITRATE_8K
説明
狭帯域 Speex エンコーダに 8 kbps モードを使用することを指示します。
値
3
NB_SPEEX_BITRATE_11K
説明
狭帯域 Speex エンコーダに 11 kbps モードを使用することを指示します。
値
4
WB_SPEEX_BITRATE_9K8
説明
広帯域 Speex エンコーダに 9.8 kbps モードを使用することを指示します。
値
3
DS70328A_JP - ページ 48 2009 Microchip Technology Inc.
API (Application Programming Interface)
WB_SPEEX_BITRATE_12K8
説明
広帯域 Speex エンコーダに 12.8 kbps モードを使用することを指示します。
値
4
NB_SPEEX_ENCODER_INPUT_SIZE
説明
狭帯域 Speex エンコーダの入力整数型配列のサイズを定義します。
値
160
NB_SPEEX_DECODER_OUTPUT_SIZE
説明
狭帯域 Speex デコーダの出力整数型配列のサイズを定義します。
値
160
WB_SPEEX_ENCODER_INPUT_SIZE
説明
広帯域 Speex エンコーダの入力整数型配列のサイズを定義します。
値
320
WB_SPEEX_DECODER_OUTPUT_SIZE
説明
広帯域 Speex デコーダの出力整数型配列のサイズを定義します。
値
320
2009 Microchip Technology Inc. DS70328A_JP - ページ 49
dsPIC® DSC Speex 音声エンコーディング / デコーディング ライブラリのユーザー ガイド
NB_SPEEX_ENCODED_FRAME_SIZE_8K
説明
8 kbpsモードの場合に狭帯域Speexエンコーダの出力文字型配列のサイズを定義します。
値
20
NB_SPEEX_ENCODED_FRAME_SIZE_11K
説明
11 kbps モードの場合に狭帯域 Speex エンコーダの出力文字型配列のサイズを定義します。
値
28
WB_SPEEX_ENCODED_FRAME_SIZE_9K8
説明
9.8 kbps モードの場合に広帯域 Speex エンコーダの出力文字型配列のサイズを定義します。
値
25
WB_SPEEX_ENCODED_FRAME_SIZE_12K8
説明
12.8 kbps モードの場合に広帯域 Speex エンコーダの出力文字型配列のサイズを定義します。
値
32
DS70328A_JP - ページ 50 2009 Microchip Technology Inc.
API (Application Programming Interface)
SPEEX_ENCODER_X_SCRATCH_SIZE
説明
SpeexエンコーダのXスクラッチ メモリ(符号なし文字型配列)のサイズを定義します。
値
800
SPEEX_ENCODER_Y_SCRATCH_SIZE
説明
SpeexエンコーダのYスクラッチ メモリ(符号なし文字型配列)のサイズを定義します。
値
libspeex.a使用の場合は 2700
libspeex_8k.a使用の場合は 1500
SPEEX_DECODER_X_SCRATCH_SIZE
説明
SpeexデコーダのX スクラッチ メモリ (符号なし文字型配列 )のサイズを定義します。
値
82
SPEEX_DECODER_Y_SCRATCH_SIZE
説明
SpeexデコーダのY スクラッチ メモリ (符号なし文字型配列 )のサイズを定義します。
値
850
NB_SPEEX_ENCODER_STATE_SIZE
説明
狭帯域 Speex エンコーダ状態 ( 整数配列 ) のサイズを定義します。
値
0x335
2009 Microchip Technology Inc. DS70328A_JP - ページ 51
dsPIC® DSC Speex 音声エンコーディング / デコーディング ライブラリのユーザー ガイド
NB_SPEEX_DECODER_STATE_SIZE
説明
狭帯域 Speex デコーダ状態 ( 整数配列 ) のサイズを定義します。
値
0x2B9
WB_SPEEX_ENCODER_STATE_SIZE
説明
広帯域 Speex エンコーダ状態 ( 整数配列 ) のサイズを定義します。
値
0x43C
WB_SPEEX_DECODER_STATE_SIZE
説明
広帯域 Speex エンコーダ状態 ( 整数配列 ) のサイズを定義します。
値
0x39A
SPEEX_INVALID_MODE_ID
説明
エンコード済みフレームのモード ID が正しくない場合に、デコーダから返される値。
値
0xFFFE
DS70328A_JP - ページ 52 2009 Microchip Technology Inc.
API (Application Programming Interface)
4.9 アプリケーションのヒント
dsPIC DSC Speex 音声エンコーディング / デコーディング ライブラリを使用する際のヒントをいくつか示します。
1. 音声システムをテストする最適な入力信号レベルは、通常 -10 dbm0 ~ -30 dbm0 の間と考えられます。デジタル入力音声レベルのピークが、フル レンジの 3/4 である場合、有効な精度が適切に利用されています。これより高いレベルであれば、振幅クリッピングが生じるおそれがあります。
2. エンコーダとデコーダでスクラッチ メモリを共有することは可能です。この場合、エンコーダ関数とデコーダ関数を同じプロセス スレッド ( タスク ) で呼び出す必要があります。言い換えると、スクラッチ メモリを共有するエンコーダまたはデコーダを、割り込みサービス ルーチン (ISR) で呼び出すことはできません。同じスクラッチ メモリを使用するには、エンコーダの X および Y スクラッチ メモリを割り振り、デコーダがそれを使用するように設定します。
3. 複数のエンコーダまたはデコーダを使用する場合に、エンコーダとデコーダが同じスクラッチ メモリを共有することは可能です。前述のヒント 2 に従ってください。
4. 8 KB RAM のデバイスの場合 (dsPIC30F DSC デバイスなど )、狭帯域専用のライブラリ アーカイブを使用してください。このような狭帯域モードの実装は、8 KB デバイスに最適化されています。
2009 Microchip Technology Inc. DS70328A_JP - ページ 53
dsPIC® DSC Speex 音声エンコーディング / デコーディング ライブラリのユーザー ガイド
ノート :
DS70328A_JP - ページ 54 2009 Microchip Technology Inc.
dsPIC® DSC SPEEX 音声エンコーディング / デコーディング
ライブラリのユーザー ガイド
索引
AAPI .................................................................................1
CCELP (Code Excited Linear Prediction) .......................6
PPC Encoder Utility (PCEU) ...........................................7
RReadmes .........................................................................3
W
WWW アドレス ...........................................................3
い
インストールライブラリのインストール ................................9
インターネット アドレス ..........................................3
お
お客様変更通知サービス ...........................................4オプションのハードウェア
Audio PICtail™ Plus ドーター ボード ..............17Explorer 16 開発ボード ......................................17
音声信号圧縮 ...............................................................5
か
カスタマー サポート ..................................................4
さ
参考資料、推奨 ...........................................................3
し
システム要件 ...............................................................8
つ
通信設定ファイル .....................................................12
て
デモ ファイル ............................................................12Communication ....................................................12PCEU ...................................................................15Playback ...............................................................13RecordPlay ...........................................................14インクルード ......................................................14ドキュメント ......................................................14ライブラリ アーカイブ .....................................15
ほ
保証登録 .......................................................................3本書
構成 ........................................................................1表記 ........................................................................2
ま
マイクロチップ社のインターネット ウェブ サイト ..........................................................3
も
モード狭帯域 ..................................................................12広帯域 ..................................................................12
2009 Microchip Technology Inc. DS70328A_JP - ページ 55
DS70328A_JP - ページ 56 2009 Microchip Technology Inc.
北米本社2355 West Chandler Blvd.Chandler, AZ 85224-6199Tel: 480-792-7200 Fax: 480-792-7277テクニカル サポート : http://support.microchip.comウェブ アドレス : www.microchip.com
アトランタDuluth, GA Tel: 678-957-9614 Fax: 678-957-1455
ボストンWestborough, MATel: 774-760-0087 Fax: 774-760-0088
シカゴItasca, ILTel: 630-285-0071 Fax: 630-285-0075
クリーブランドIndependence, OHTel: 216-447-0464Fax: 216-447-0643
ダラスAddison, TXTel: 972-818-7423 Fax: 972-818-2924
デトロイトFarmington Hills, MITel: 248-538-2250Fax: 248-538-2260
ココモKokomo, INTel: 765-864-8360Fax: 765-864-8387
ロサンゼルスMission Viejo, CATel: 949-462-9523 Fax: 949-462-9608
サンタクララSanta Clara, CATel: 408-961-6444Fax: 408-961-6445
トロントMississauga, Ontario,CanadaTel: 905-673-0699 Fax: 905-673-6509
アジア / 太平洋アジア太平洋支社Suites 3707-14, 37th FloorTower 6, The GatewayHarbour City, KowloonHong KongTel: 852-2401-1200Fax: 852-2401-3431
オーストラリア - シドニー
Tel: 61-2-9868-6733Fax: 61-2-9868-6755
中国 - 北京
Tel: 86-10-8528-2100 Fax: 86-10-8528-2104
中国 - 成都
Tel: 86-28-8665-5511Fax: 86-28-8665-7889
中国 - 香港 SARTel: 852-2401-1200 Fax: 852-2401-3431
中国 - 南京
Tel: 86-25-8473-2460Fax: 86-25-8473-2470
中国 - 青島
Tel: 86-532-8502-7355Fax: 86-532-8502-7205
中国 - 上海
Tel: 86-21-5407-5533 Fax: 86-21-5407-5066
中国 - 瀋陽
Tel: 86-24-2334-2829Fax: 86-24-2334-2393
中国 - 深川
Tel: 86-755-8203-2660 Fax: 86-755-8203-1760
中国 - 武漢
Tel: 86-27-5980-5300Fax: 86-27-5980-5118
中国 - 厦門
Tel: 86-592-2388138 Fax: 86-592-2388130
中国 - 西安
Tel: 86-29-8833-7252Fax: 86-29-8833-7256
中国 - 珠海
Tel: 86-756-3210040 Fax: 86-756-3210049
アジア / 太平洋インド - バンガロール
Tel: 91-80-3090-4444 Fax: 91-80-3090-4080
インド - ニューデリー
Tel: 91-11-4160-8631Fax: 91-11-4160-8632
インド - プネ
Tel: 91-20-2566-1512Fax: 91-20-2566-1513
日本 - 横浜
Tel: 81-45-471- 6166 Fax: 81-45-471-6122
韓国 - 大邱
Tel: 82-53-744-4301Fax: 82-53-744-4302
韓国 - ソウル
Tel: 82-2-554-7200Fax: 82-2-558-5932 または82-2-558-5934
マレーシア - クアラルンプール
Tel: 60-3-6201-9857Fax: 60-3-6201-9859
マレーシア - ペナン
Tel: 60-4-227-8870Fax: 60-4-227-4068
フィリピン - マニラ
Tel: 63-2-634-9065Fax: 63-2-634-9069
シンガポールTel: 65-6334-8870Fax: 65-6334-8850
台湾 - 新竹
Tel: 886-3-6578-300Fax: 886-3-6578-370
台湾 - 高雄
Tel: 886-7-536-4818Fax: 886-7-536-4803
台湾 - 台北
Tel: 886-2-2500-6610 Fax: 886-2-2508-0102
タイ - バンコク
Tel: 66-2-694-1351Fax: 66-2-694-1350
ヨーロッパオーストリア - ヴェルス
Tel: 43-7242-2244-39Fax: 43-7242-2244-393
デンマーク - コペンハーゲン
Tel: 45-4450-2828 Fax: 45-4485-2829
フランス - パリ
Tel: 33-1-69-53-63-20 Fax: 33-1-69-30-90-79
ドイツ - ミュンヘン
Tel: 49-89-627-144-0 Fax: 49-89-627-144-44
イタリア - ミラノ Tel: 39-0331-742611 Fax: 39-0331-466781
オランダ - ドリューネン
Tel: 31-416-690399 Fax: 31-416-690340
スペイン - マドリッド
Tel: 34-91-708-08-90Fax: 34-91-708-08-91
英国 - ウォーキンガム
Tel: 44-118-921-5869Fax: 44-118-921-5820
世界各国での販売およびサービス
03/26/09