60
2009 Microchip Technology Inc. DS70328A_JP dsPIC ® DSC Speex 音声 エンコーディング / デコーディング ライブラリのユーザー ガイド ご注意:この日本語版ドキュメントは、参考資料としてご使用の上、最新情報に つきましては、必ず英語版オリジナルをご参照いただきますようお願い します。

dsPIC DSC Speex 音声 エンコーディング デコーディング ...ww1.microchip.com/downloads/jp/DeviceDoc/70328A_JP.pdfDS70328A_JP - ページ ii 2009 Microchip Technology

  • Upload
    others

  • View
    3

  • Download
    0

Embed Size (px)

Citation preview

Page 1: dsPIC DSC Speex 音声 エンコーディング デコーディング ...ww1.microchip.com/downloads/jp/DeviceDoc/70328A_JP.pdfDS70328A_JP - ページ ii 2009 Microchip Technology

2009 Microchip Technology Inc. DS70328A_JP

dsPIC® DSC Speex 音声

エンコーディング / デコーディング

ライブラリのユーザー ガイド

ご注意:この日本語版ドキュメントは、参考資料としてご使用の上、最新情報につきましては、必ず英語版オリジナルをご参照いただきますようお願いします。

Page 2: dsPIC DSC Speex 音声 エンコーディング デコーディング ...ww1.microchip.com/downloads/jp/DeviceDoc/70328A_JP.pdfDS70328A_JP - ページ ii 2009 Microchip Technology

マイクロチップ テクノロジー社 ( 以下、マイクロチップ社 ) デバイスのコード保護機能に関する以下の点にご留意ください。

• マイクロチップ社製品は、その該当するマイクロチップ社データシートに記載の仕様を満たしています。

• マイクロチップ社では、通常の条件ならびに仕様どおりの方法で使用した場合、マイクロチップ社製品は現在市場に流通している同種製品としては最もセキュリティの高い部類に入る製品であると考えております。

• コード保護機能を解除するための不正かつ違法な方法が存在します。マイクロチップ社の確認している範囲では、このような方法のいずれにおいても、マイクロチップ社製品をマイクロチップ社データシートの動作仕様外の方法で使用する必要があります。このような行為は、知的所有権の侵害に該当する可能性が非常に高いと言えます。

• マイクロチップ社は、コードの保全について懸念を抱いているお客様と連携し、対応策に取り組んでいきます。

• マイクロチップ社を含むすべての半導体メーカーの中で、自社のコードのセキュリティを完全に保証できる企業はありません。コード保護機能とは、マイクロチップ社が製品を「解読不能」として保証しているものではありません。

コード保護機能は常に進歩しています。マイクロチップ社では、製品のコード保護機能の改善に継続的に取り組んでいます。マイクロチップ社のコード保護機能を解除しようとする行為は、デジタルミレニアム著作権法に抵触する可能性があります。そのような行為によってソフトウェアまたはその他の著作物に不正なアクセスを受けた場合は、デジタルミレニアム著作権法の定めるところにより損害賠償訴訟を起こす権利があります。

本書に記載されているデバイス アプリケーションなどに関する情報は、ユーザーの便宜のためにのみ提供されているものであり、更新によって無効とされることがあります。アプリケーションと仕様の整合性を保証することは、お客様の責任において行ってください。マイクロチップ社は、明示的、暗黙的、書面、口頭、法定のいずれであるかを問わず、本書に記載されている情報に関して、状態、品質、性能、商品性、特定目的への適合性をはじめとする、いかなる類の表明も保証も行いません。マイクロチップ社は、本書の情報およびその使用に起因する一切の責任を否認します。マイクロチップ社デバイスを生命維持および / または保安のアプリケーションに使用することはデバイス購入者の全責任において行うものとし、デバイス購入者は、デバイスの使用に起因するすべての損害、請求、訴訟、および出費に関してマイクロチップ社を弁護、免責し、同社に不利益が及ばないようにすることに同意するものとします。暗黙的あるいは明示的を問わず、マイクロチップ社が知的財産権を保有しているライセンスは一切譲渡されません。

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 の認証を受けています。

Page 3: dsPIC DSC Speex 音声 エンコーディング デコーディング ...ww1.microchip.com/downloads/jp/DeviceDoc/70328A_JP.pdfDS70328A_JP - ページ ii 2009 Microchip Technology

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

Page 4: dsPIC DSC Speex 音声 エンコーディング デコーディング ...ww1.microchip.com/downloads/jp/DeviceDoc/70328A_JP.pdfDS70328A_JP - ページ ii 2009 Microchip Technology

dsPIC® DSC Speex 音声エンコーディング / デコーディング ライブラリのユーザー ガイド

DS70328A_JP - ページ iv 2009 Microchip Technology Inc.

ノート :

Page 5: dsPIC DSC Speex 音声 エンコーディング デコーディング ...ww1.microchip.com/downloads/jp/DeviceDoc/70328A_JP.pdfDS70328A_JP - ページ ii 2009 Microchip Technology

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

Page 6: dsPIC DSC Speex 音声 エンコーディング デコーディング ...ww1.microchip.com/downloads/jp/DeviceDoc/70328A_JP.pdfDS70328A_JP - ページ ii 2009 Microchip Technology

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.

Page 7: dsPIC DSC Speex 音声 エンコーディング デコーディング ...ww1.microchip.com/downloads/jp/DeviceDoc/70328A_JP.pdfDS70328A_JP - ページ ii 2009 Microchip Technology

序章

保証登録

同封の保証登録カードにご記入いただき、お早めにご郵送ください。この保証登録カードを送付されたお客様は、製品のアップデート版を受け取ることができるようになります。暫定ソフトウェア リリースはマイクロチップ社のウェブ サイトで入手できます。

推奨参考資料

本ユーザーガイドでは、dsPIC DSC Speex 音声エンコーディング / デコーディング ライブラリの使用方法を記載しています。ほかにも役に立つ文書がありますので、以下に一覧でご紹介します。マイクロチップ社作成の以下のような文書がありますので、参考資料としておすすめします。

README ファイル

他のツールについての最新情報は、MPLAB IDE のインストール ディレクトリのReadmesサブ ディレクトリにある該当ツールの README ファイルをお読みください。README ファイルには、本ユーザーガイドには記載されていない最新情報および既知の問題が記載されている可能性があります。

マイクロチップ社インターネット ウェブ サイト

マイクロチップ社は同社のウェブ サイト (www.microchip.com) でオンライン サポートを行っています。ウェブ サイトにはご使用のブラウザでアクセスでき、下記の情報が含まれます。

• 製品サポート - データシートと正誤表、アプリケーション ノートとサンプル プログラム、設計リソース、ユーザーガイド、ハードウェア サポート文書、最新リリース ソフトウェア、ソフトウェア アーカイブ

• 一般的なテクニカル サポート - よく寄せられる質問 (FAQ)、テクニカル サポートの依頼、オンライン ディスカッション グループ、マイクロチップ社コンサルタント プログラム メンバーのリスト

• マイクロチップのビジネス – 製品選択と注文ガイド、マイクロチップ社の最新プレスリリース、セミナとイベントのリスト、マイクロチップの営業オフィス、代理店、工場代理人のリスト

2009 Microchip Technology Inc. DS70328A_JP - ページ 3

Page 8: dsPIC DSC Speex 音声 エンコーディング デコーディング ...ww1.microchip.com/downloads/jp/DeviceDoc/70328A_JP.pdfDS70328A_JP - ページ ii 2009 Microchip Technology

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.

Page 9: dsPIC DSC Speex 音声 エンコーディング デコーディング ...ww1.microchip.com/downloads/jp/DeviceDoc/70328A_JP.pdfDS70328A_JP - ページ ii 2009 Microchip Technology

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

Page 10: dsPIC DSC Speex 音声 エンコーディング デコーディング ...ww1.microchip.com/downloads/jp/DeviceDoc/70328A_JP.pdfDS70328A_JP - ページ ii 2009 Microchip Technology

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.

Page 11: dsPIC DSC Speex 音声 エンコーディング デコーディング ...ww1.microchip.com/downloads/jp/DeviceDoc/70328A_JP.pdfDS70328A_JP - ページ ii 2009 Microchip Technology

はじめに

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

Page 12: dsPIC DSC Speex 音声 エンコーディング デコーディング ...ww1.microchip.com/downloads/jp/DeviceDoc/70328A_JP.pdfDS70328A_JP - ページ ii 2009 Microchip Technology

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.

Page 13: dsPIC DSC Speex 音声 エンコーディング デコーディング ...ww1.microchip.com/downloads/jp/DeviceDoc/70328A_JP.pdfDS70328A_JP - ページ ii 2009 Microchip Technology

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

Page 14: dsPIC DSC Speex 音声 エンコーディング デコーディング ...ww1.microchip.com/downloads/jp/DeviceDoc/70328A_JP.pdfDS70328A_JP - ページ ii 2009 Microchip Technology

dsPIC® DSC Speex 音声エンコーディング / デコーディング ライブラリのユーザー ガイド

図 2-2: ファイル ダウンロードのダイアログ

3. [Save] をクリックします。[Save As] ダイアログが表示されます。

4. インストールの実行ファイルを保存する場所を指定し、[Save] をクリックします。

インストール実行ファイルの名前は、ライセンスの種類によって異なります。上記の例では、評価版のインストール実行ファイル名を使用しています。

5. 保存先の場所まで移動し、ファイルをダブルクリックしてインストールを開始します。インストール場所を指定するダイアログが表示されます。ここで、ライブラリのディレクトリの場所を選択できます。

図 2-3: インストール場所を指定するダイアログ

DS70328A_JP - ページ 10 2009 Microchip Technology Inc.

Page 15: dsPIC DSC Speex 音声 エンコーディング デコーディング ...ww1.microchip.com/downloads/jp/DeviceDoc/70328A_JP.pdfDS70328A_JP - ページ ii 2009 Microchip Technology

インストール

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

Page 16: dsPIC DSC Speex 音声 エンコーディング デコーディング ...ww1.microchip.com/downloads/jp/DeviceDoc/70328A_JP.pdfDS70328A_JP - ページ ii 2009 Microchip Technology

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.

Page 17: dsPIC DSC Speex 音声 エンコーディング デコーディング ...ww1.microchip.com/downloads/jp/DeviceDoc/70328A_JP.pdfDS70328A_JP - ページ ii 2009 Microchip Technology

インストール

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

Page 18: dsPIC DSC Speex 音声 エンコーディング デコーディング ...ww1.microchip.com/downloads/jp/DeviceDoc/70328A_JP.pdfDS70328A_JP - ページ ii 2009 Microchip Technology

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.

Page 19: dsPIC DSC Speex 音声 エンコーディング デコーディング ...ww1.microchip.com/downloads/jp/DeviceDoc/70328A_JP.pdfDS70328A_JP - ページ ii 2009 Microchip Technology

インストール

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

Page 20: dsPIC DSC Speex 音声 エンコーディング デコーディング ...ww1.microchip.com/downloads/jp/DeviceDoc/70328A_JP.pdfDS70328A_JP - ページ ii 2009 Microchip Technology

dsPIC® DSC Speex 音声エンコーディング / デコーディング ライブラリのユーザー ガイド

ノート :

DS70328A_JP - ページ 16 2009 Microchip Technology Inc.

Page 21: dsPIC DSC Speex 音声 エンコーディング デコーディング ...ww1.microchip.com/downloads/jp/DeviceDoc/70328A_JP.pdfDS70328A_JP - ページ ii 2009 Microchip Technology

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

Page 22: dsPIC DSC Speex 音声 エンコーディング デコーディング ...ww1.microchip.com/downloads/jp/DeviceDoc/70328A_JP.pdfDS70328A_JP - ページ ii 2009 Microchip Technology

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.

Page 23: dsPIC DSC Speex 音声 エンコーディング デコーディング ...ww1.microchip.com/downloads/jp/DeviceDoc/70328A_JP.pdfDS70328A_JP - ページ ii 2009 Microchip Technology

クイック スタート デモ

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

Page 24: dsPIC DSC Speex 音声 エンコーディング デコーディング ...ww1.microchip.com/downloads/jp/DeviceDoc/70328A_JP.pdfDS70328A_JP - ページ ii 2009 Microchip Technology

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.

Page 25: dsPIC DSC Speex 音声 エンコーディング デコーディング ...ww1.microchip.com/downloads/jp/DeviceDoc/70328A_JP.pdfDS70328A_JP - ページ ii 2009 Microchip Technology

クイック スタート デモ

メイン関数は、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

Page 26: dsPIC DSC Speex 音声 エンコーディング デコーディング ...ww1.microchip.com/downloads/jp/DeviceDoc/70328A_JP.pdfDS70328A_JP - ページ ii 2009 Microchip Technology

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.

Page 27: dsPIC DSC Speex 音声 エンコーディング デコーディング ...ww1.microchip.com/downloads/jp/DeviceDoc/70328A_JP.pdfDS70328A_JP - ページ ii 2009 Microchip Technology

クイック スタート デモ

ファイル 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

Page 28: dsPIC DSC Speex 音声 エンコーディング デコーディング ...ww1.microchip.com/downloads/jp/DeviceDoc/70328A_JP.pdfDS70328A_JP - ページ ii 2009 Microchip Technology

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.

Page 29: dsPIC DSC Speex 音声 エンコーディング デコーディング ...ww1.microchip.com/downloads/jp/DeviceDoc/70328A_JP.pdfDS70328A_JP - ページ ii 2009 Microchip Technology

クイック スタート デモ

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

Page 30: dsPIC DSC Speex 音声 エンコーディング デコーディング ...ww1.microchip.com/downloads/jp/DeviceDoc/70328A_JP.pdfDS70328A_JP - ページ ii 2009 Microchip Technology

dsPIC® DSC Speex 音声エンコーディング / デコーディング ライブラリのユーザー ガイド

ノート :

DS70328A_JP - ページ 26 2009 Microchip Technology Inc.

Page 31: dsPIC DSC Speex 音声 エンコーディング デコーディング ...ww1.microchip.com/downloads/jp/DeviceDoc/70328A_JP.pdfDS70328A_JP - ページ ii 2009 Microchip Technology

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

Page 32: dsPIC DSC Speex 音声 エンコーディング デコーディング ...ww1.microchip.com/downloads/jp/DeviceDoc/70328A_JP.pdfDS70328A_JP - ページ ii 2009 Microchip Technology

dsPIC® DSC Speex 音声エンコーディング / デコーディング ライブラリのユーザー ガイド

2. libspeex.aファイルの場所まで移動します ( インストール ディレクトリのlibsフォルダにあります )。

3. ファイルを選択し、[Open] をクリックします。

図 4-2:

4. ライブラリがアプリケーションに追加されます。

図 4-3:

ライブラリ関数を使用するには、アプリケーション ソース コードで speex.hをインクルードします。このファイルは、( インストール ディレクトリにある ) hフォルダからアプリケーション プロジェクト フォルダにコピーできます。

DS70328A_JP - ページ 28 2009 Microchip Technology Inc.

Page 33: dsPIC DSC Speex 音声 エンコーディング デコーディング ...ww1.microchip.com/downloads/jp/DeviceDoc/70328A_JP.pdfDS70328A_JP - ページ ii 2009 Microchip Technology

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

Page 34: dsPIC DSC Speex 音声 エンコーディング デコーディング ...ww1.microchip.com/downloads/jp/DeviceDoc/70328A_JP.pdfDS70328A_JP - ページ ii 2009 Microchip Technology

dsPIC® DSC Speex 音声エンコーディング / デコーディング ライブラリのユーザー ガイド

図 4-5:

b) 図 4-6 に示すように、[Data Model] セクションで [Large data model] を選択します。

DS70328A_JP - ページ 30 2009 Microchip Technology Inc.

Page 35: dsPIC DSC Speex 音声 エンコーディング デコーディング ...ww1.microchip.com/downloads/jp/DeviceDoc/70328A_JP.pdfDS70328A_JP - ページ ii 2009 Microchip Technology

API (Application Programming Interface)

図 4-6:

3. [Apply] をクリックし、[OK] をクリックします。

これで手順は完了です。

2009 Microchip Technology Inc. DS70328A_JP - ページ 31

Page 36: dsPIC DSC Speex 音声 エンコーディング デコーディング ...ww1.microchip.com/downloads/jp/DeviceDoc/70328A_JP.pdfDS70328A_JP - ページ ii 2009 Microchip Technology

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.

Page 37: dsPIC DSC Speex 音声 エンコーディング デコーディング ...ww1.microchip.com/downloads/jp/DeviceDoc/70328A_JP.pdfDS70328A_JP - ページ ii 2009 Microchip Technology

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

Page 38: dsPIC DSC Speex 音声 エンコーディング デコーディング ...ww1.microchip.com/downloads/jp/DeviceDoc/70328A_JP.pdfDS70328A_JP - ページ ii 2009 Microchip Technology

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.

Page 39: dsPIC DSC Speex 音声 エンコーディング デコーディング ...ww1.microchip.com/downloads/jp/DeviceDoc/70328A_JP.pdfDS70328A_JP - ページ ii 2009 Microchip Technology

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

Page 40: dsPIC DSC Speex 音声 エンコーディング デコーディング ...ww1.microchip.com/downloads/jp/DeviceDoc/70328A_JP.pdfDS70328A_JP - ページ ii 2009 Microchip Technology

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.

Page 41: dsPIC DSC Speex 音声 エンコーディング デコーディング ...ww1.microchip.com/downloads/jp/DeviceDoc/70328A_JP.pdfDS70328A_JP - ページ ii 2009 Microchip Technology

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

Page 42: dsPIC DSC Speex 音声 エンコーディング デコーディング ...ww1.microchip.com/downloads/jp/DeviceDoc/70328A_JP.pdfDS70328A_JP - ページ ii 2009 Microchip Technology

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.

Page 43: dsPIC DSC Speex 音声 エンコーディング デコーディング ...ww1.microchip.com/downloads/jp/DeviceDoc/70328A_JP.pdfDS70328A_JP - ページ ii 2009 Microchip Technology

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

Page 44: dsPIC DSC Speex 音声 エンコーディング デコーディング ...ww1.microchip.com/downloads/jp/DeviceDoc/70328A_JP.pdfDS70328A_JP - ページ ii 2009 Microchip Technology

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.

Page 45: dsPIC DSC Speex 音声 エンコーディング デコーディング ...ww1.microchip.com/downloads/jp/DeviceDoc/70328A_JP.pdfDS70328A_JP - ページ ii 2009 Microchip Technology

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

Page 46: dsPIC DSC Speex 音声 エンコーディング デコーディング ...ww1.microchip.com/downloads/jp/DeviceDoc/70328A_JP.pdfDS70328A_JP - ページ ii 2009 Microchip Technology

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.

Page 47: dsPIC DSC Speex 音声 エンコーディング デコーディング ...ww1.microchip.com/downloads/jp/DeviceDoc/70328A_JP.pdfDS70328A_JP - ページ ii 2009 Microchip Technology

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

Page 48: dsPIC DSC Speex 音声 エンコーディング デコーディング ...ww1.microchip.com/downloads/jp/DeviceDoc/70328A_JP.pdfDS70328A_JP - ページ ii 2009 Microchip Technology

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.

Page 49: dsPIC DSC Speex 音声 エンコーディング デコーディング ...ww1.microchip.com/downloads/jp/DeviceDoc/70328A_JP.pdfDS70328A_JP - ページ ii 2009 Microchip Technology

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

Page 50: dsPIC DSC Speex 音声 エンコーディング デコーディング ...ww1.microchip.com/downloads/jp/DeviceDoc/70328A_JP.pdfDS70328A_JP - ページ ii 2009 Microchip Technology

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.

Page 51: dsPIC DSC Speex 音声 エンコーディング デコーディング ...ww1.microchip.com/downloads/jp/DeviceDoc/70328A_JP.pdfDS70328A_JP - ページ ii 2009 Microchip Technology

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

Page 52: dsPIC DSC Speex 音声 エンコーディング デコーディング ...ww1.microchip.com/downloads/jp/DeviceDoc/70328A_JP.pdfDS70328A_JP - ページ ii 2009 Microchip Technology

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.

Page 53: dsPIC DSC Speex 音声 エンコーディング デコーディング ...ww1.microchip.com/downloads/jp/DeviceDoc/70328A_JP.pdfDS70328A_JP - ページ ii 2009 Microchip Technology

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

Page 54: dsPIC DSC Speex 音声 エンコーディング デコーディング ...ww1.microchip.com/downloads/jp/DeviceDoc/70328A_JP.pdfDS70328A_JP - ページ ii 2009 Microchip Technology

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.

Page 55: dsPIC DSC Speex 音声 エンコーディング デコーディング ...ww1.microchip.com/downloads/jp/DeviceDoc/70328A_JP.pdfDS70328A_JP - ページ ii 2009 Microchip Technology

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

Page 56: dsPIC DSC Speex 音声 エンコーディング デコーディング ...ww1.microchip.com/downloads/jp/DeviceDoc/70328A_JP.pdfDS70328A_JP - ページ ii 2009 Microchip Technology

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.

Page 57: dsPIC DSC Speex 音声 エンコーディング デコーディング ...ww1.microchip.com/downloads/jp/DeviceDoc/70328A_JP.pdfDS70328A_JP - ページ ii 2009 Microchip Technology

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

Page 58: dsPIC DSC Speex 音声 エンコーディング デコーディング ...ww1.microchip.com/downloads/jp/DeviceDoc/70328A_JP.pdfDS70328A_JP - ページ ii 2009 Microchip Technology

dsPIC® DSC Speex 音声エンコーディング / デコーディング ライブラリのユーザー ガイド

ノート :

DS70328A_JP - ページ 54 2009 Microchip Technology Inc.

Page 59: dsPIC DSC Speex 音声 エンコーディング デコーディング ...ww1.microchip.com/downloads/jp/DeviceDoc/70328A_JP.pdfDS70328A_JP - ページ ii 2009 Microchip Technology

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

Page 60: dsPIC DSC Speex 音声 エンコーディング デコーディング ...ww1.microchip.com/downloads/jp/DeviceDoc/70328A_JP.pdfDS70328A_JP - ページ ii 2009 Microchip Technology

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