コンテンツにスキップ

オーディオSDKサンプル

SiFli-SDKのオーディオサンプルは、信号経路全体を検証するための実践的な出発点であり、そのまま製品に組み込めるファームウェアではありません。マイク入力、スピーカー出力、ストレージ、コーデック、複数ストリームの同時処理など、設計上の難所をすでに検証しているサンプルを選びます。サブシステムを一つずつ変更する前に、まずは未変更の状態で対象ボード上で動作させてください。

このページでは、SiFli-SDKの代表的なオーディオサンプルを開発目的ごとに整理しています。公式のオーディオサンプル一覧は入口として利用できます。表の対象ボードは、今回確認したSiFli公式ページに明記された範囲です。シリーズ名は、そのシリーズの全ボードや全SDKリリースでの動作を保証するものではありません。ビルド前に該当バージョンのページと対象ボードの設定を確認してください。

目的に合ったサンプルを選ぶ

表: 開発目的別に見るSiFli-SDKのオーディオサンプル
目的 推奨サンプル 検証できること 公式ページに記載された対象と制約
2本または4本のデジタルマイクで録音する PDMサンプル PDM入力。対応する処理モードでWAV録音と再生 現在のページで明記されているのはsf32lb56-lcd_a128r12n1のみ。PDM配線とピン設定を確認してください。ピン設定の説明ではボード名がf32lb56-lcd_a128r12n1と誤記されています(先頭のsが抜けています)。ビルドコマンドでは正しい名前が使われています。
2本のアナログマイクで録音する ステレオスピーカー向けローカル音楽サンプル(Local Music Example for stereo speaker、デュアルADC/DAC) 2本のマイクを同時に録音して別々のPCMファイルに保存し、どちらか一方をスピーカーでモニター SF32LB58xのカスタムボードが必要で、SiFliモジュールボードでは動作しません。アナログマイク2本とアナログスピーカー2台が必要です。
マイクからスピーカーまでの基本経路を検証する 録音サンプル 5秒間マイク録音してPCMメモリーバッファーに保存し、その後に自動再生 eh-lb525、sf32lb52-lcd、sf32lb56-lcd、sf32lb58-lcd各シリーズ。スピーカーが必要です。
ルートファイルシステムからプリセット音声を再生する ローカル再生サンプル マウントしたFATルートパーティションからプリセットの16k.wavを再生。容量内ならプリセットMP3も利用可能 eh-lb525、sf32lb52-lcd、sf32lb56-lcd、sf32lb58-lcd各シリーズ。FATルートパーティションとスピーカーが必要です。
SDカードの音楽を再生する MP3ローカルプレーヤー SDカードのmusicディレクトリにあるMP3/WAVの再生と、シェルからの音量制御 現在のページで明記されているのはsf32lb52-lchspi-ulpのみ。SPI1、FAT/MSD、スピーカーが必要で、長押し検出には外部バッテリーも必要です。
ロスレス音声を録音、圧縮、デコード、再生する FLACサンプル PCM録音とFLACのエンコード、デコード、再生 sf32lb52-lcd、sf32lb56-lcd、sf32lb58-lcd各シリーズ。FAT、libFLAC、オーディオ関連コンポーネントが必要です。
音声信号を録音、圧縮、デコードして再生する Opusサンプル 16 kHzのマイク入力、Opusのエンコード/デコード、スピーカー再生 現在のページで明記されているのはeh-lb525のみ。FATとオーディオ関連コンポーネントが必要です。スタック設定は下記のサンプル固有の案内に従ってください。
複数のローカルトラックをミキシングする 3チャンネルオーディオミキサー(公式中国語ページ) 3つのローカルファイルを個別にデコードし、必要に応じてリサンプリングしてミキシング 現在のページで検証済みとして列挙されるのはsf32lb52-lcd_n16r8とsf32lb56-lcd_n16r12n1です。ページ記載のファイルシステムイメージとサンプルファイルを使用してください。

共通の前提条件

多くのサンプルに共通する前提条件は、必要なオーディオ回路がボードに実装され、正しく配線されていること、ボード設定で必要なオーディオブロックが有効になっていること、対象ボードがそのサンプルに対応していることです。ファイルを読み書きするサンプルでは、ファイルシステムもマウントしておく必要があります。公式ドキュメントと対象ボードの設定ファイルを確認せずに、別のサンプルからボード名、ピン割り当て、menuconfig設定をコピーしないでください。

既存のファイルシステムのデータを保護する

v2.5.1のOpusサンプルは、ルートファイルシステムのマウントに失敗するとdfs_mkfs()を呼び出します(ソース)。データ保持方針を明確にせず、この自動フォーマット処理を製品に組み込まないでください。マウント失敗は、ユーザーデータを消去してよい理由にはなりません。

最初の検証では、確認範囲を意図的に絞ります。

  1. 対応ボード向けに、未変更のプロジェクトをビルドして書き込みます。
  2. 正常動作を確認済みのオーディオ機器とファイルを使い、想定どおりに録音または再生できることを確認します。
  3. SDKのリビジョン、ボード名、設定、ピン割り当て、シリアルログを記録します。
  4. 製品固有の要素を1つだけ変更し、同じテストを繰り返します。

オーディオ概要では、各サンプルの基礎となるインターフェースとシステム構成を説明しています。バッファーの管理、セッションの終了処理、ディスプレイやBluetoothとの共存については、Audio Serverとバッファリングを参照してください。

PDMによるデジタルマイク録音

アナログ入力ではなくデジタルマイクを使う製品では、PDMサンプルを利用してください。公式サンプルは2本または4本のPDMマイクに対応しますが、録音ファイルの生成と再生の動作は処理モードによって異なります。資料に記載された構成では、2本の場合はPDM1の左右チャンネルを使い、4本の場合はPDM2を追加します。PDMインターフェース1つで最大2本のデジタルマイクを扱えるため、インターフェース数とマイク数を同一視しないでください。実際に使用できる構成は、対象SoCのインターフェースとチャンネルのマッピングを確認してください。

現在の公式ページでは、対応ボードとしてsf32lb56-lcd_a128r12n1が記載されています。pdm open pdm12 4 rawはログだけを出力し、録音ファイルを作りません。Anyka処理モードは4マイク構成でもモノラル出力です。入力が4系統あっても、出力ファイルが4チャンネルになるとは限りません。マイクアレイの検証に使う前に、アルゴリズムの依存関係と出力形式を確認してください。

製品に合わせて変更する前に、次の4点を確認してください。

  • 対象チップとボードから、必要なPDM信号を取り出せること。
  • マイクのクロック、データ線、電源、接地がデータシートの仕様に合っていること。
  • ドライバーを起動する前に、ボードのピン設定でPDM機能が割り当てられていること。
  • 製品で、このサンプルが有効にする録音/再生サービスが必要であること。PDMデータを取り込むだけなら、これらのサービスは必須ではありません。

公式のPDMページには、対応ボードの設定とサンプル用のピン割り当てが記載されています。検証済みの参考情報として利用しつつ、そのまま流用せず、対象ボードの実際の配線に合わせてください。PDMサンプルを参照してください。

アナログ入力と基本的な録音・再生

録音サンプルは、マイク入力からローカル再生までを手早く検証できます。公式ページに記載された対象はeh-lb525、sf32lb52-lcd、sf32lb56-lcd、sf32lb58-lcd各シリーズです。5秒間録音してPCMメモリーバッファーに保存し、その後、自動でスピーカー再生します。ファイルシステム、圧縮、Bluetooth転送、複数マイクを追加する前の確認に適しています。

Local Music Example for stereo speaker(デュアルADC/DACサンプル)は、SF32LB58xカスタムボード向けの応用例です。公式ページによると、SiFliモジュールボードでは動作せず、アナログマイク2本とアナログスピーカー2台が必要です。mic2fileコマンドは2本のマイクを同時に録音し、別々のPCMファイルに保存します。mic2speaker 0またはmic2speaker 1でマイクを選び、スピーカーからモニターできます。製品のアナログ構成が一致する場合にのみ使い、それ以外の場合は、よりシンプルな録音サンプルから始めてください。

どちらの経路でも、ソフトウェア機能を調べる前に、無信号時のノイズレベル、ゲイン、クリッピング、開始・停止時の動作を確認してください。PCMの録音・再生経路を安定させることが、コーデック、ファイル、Bluetoothの実装の土台になります。

ローカル再生とストレージ

ローカル音楽再生サンプルは、ファイル再生の最小構成を確認するためのものです。公式ページの対応対象はeh-lb525、sf32lb52-lcd、sf32lb56-lcd、sf32lb58-lcd各シリーズです。FATルートパーティションをマウントして、プリセットの16k.wavを再生します。MP3もサンプルのdisk/ディレクトリに配置してプリセットできますが、設定されたファイルシステム容量を超えないようにしてください。通知音や製品内蔵の音声メッセージ、スピーカー経路の初期検証に利用できます。

MP3ローカル音楽プレーヤーはリムーバブルストレージに対応し、SDカードのmusicディレクトリからMP3/WAVを再生して、シェルで音量を制御します。どちらのローカル再生サンプルにもファイルシステムが必要ですが、こちらはさらにSPI1とSPI MSDドライバーを使用します。資料に記載されたsf32lb52-lchspi-ulpでは、バッテリーを接続しないとボタンの長押しを検出できません。製品でSDカードを使う場合に選んでください。

どちらのサンプルも再生機能の検証用であり、汎用メディアプレーヤーの構成を示すものではありません。製品のプレーヤー機能に展開する前に、ファイルの索引作成、破損ファイルへの対処、再生中断、電力状態からの復帰、UIの動作を別途設計してください。

FLACとOpusの処理経路

FLACサンプルでは、マイクからPCMを録音し、FLACにエンコード、デコードして再生するまでの一連の処理を検証できます。公式ページの対応対象はsf32lb52-lcd、sf32lb56-lcd、sf32lb58-lcd各シリーズで、FATファイルシステム、オーディオ関連コンポーネント、libFLACが必要です。ファイルに記録する録音経路のテストや、非圧縮PCMとストレージ使用量を比較する場合に適しています。

Opusサンプルは、音声アプリケーション向けの圧縮経路を検証します。現在の公式ページの対応対象はeh-lb525のみです。サンプルは16 kHzでマイク入力をキャプチャし、約16 kbpsで10 ms単位のフレームを処理した後、ストリームをデコードして再生します。エンコーダーモードによって必要なスタックサイズが異なることも、ドキュメントに明記されています。サンプルを基準に製品へ適用する際は、この制約を維持してください。アプリケーション処理を追加した後も、タスクのデフォルトスタックで十分だとは限りません。

SiFli-SDKの公式READMEでは、エンコードモードに応じてOPUS_STACK_SIZEを設定するよう案内しています。opus_test()内でopus_encoder_ctl(encoder, OPUS_SET_FORCE_MODE(MODE_SILK_ONLY))を呼び出す場合は20k、呼び出さない場合は200kです。これはサンプル固有の設定であり、Opus全般の要件ではありません。適用前に使用するSDKリビジョンとエンコード経路を確認し、製品相当の負荷でスタックの高水位を測定してタスクスタックのサイズを決めてください。

どちらのサンプルも、Bluetooth通話やストリーミング製品の全経路を実装するものではありません。まずローカルでのエンコードとデコードを検証し、その後、レイテンシとメモリーの余裕を測定したうえで、転送、バッファリング、セッション制御を統合してください。

3チャンネルのミキシング

3チャンネルオーディオミキサーの現在の公式ページでは、検証済みの対象としてsf32lb52-lcd_n16r8とsf32lb56-lcd_n16r12n1が列挙されています。ローカル音声ファイルを3つ読み込み、各ストリームを個別にデコードします。48 kHz以外の入力は必要に応じてリサンプリングし、モノラルPCMストリームをミキシングして再生します。サンプルとしてMP3ファイル2つとWAVファイル1つが記載されています。任意の音声ファイルがイメージに含まれるとは限らないため、例のファイルシステムイメージとファイル名を確認してください。

確認したミキサーは3つのモノラルサンプルを加算して3で割り、そのままのゲインで加算する方式ではありません。資料に記載された実行時間は約50秒です。このゲイン方針と有限のデモ時間は、製品のミキシング要件とは分けて考えてください。

通知音、効果音、音楽を同時に再生し、どの音を重ねるか製品側で制御する場合の出発点として適しています。ただし、完成したオーディオ制御機能ではありません。ストリームの優先度、音量制御、クリッピング時の動作、メモリー予算、入力ファイルの読み込みやデコードが期限に間に合わない場合の処理を定義してください。実行時の制御境界については、Audio Serverとバッファリングを参照してください。

検証の根拠を保ちながらサンプルを製品に適用する

表: オーディオサンプルを製品に適用する際の確認項目
項目 サンプルから引き継ぐこと 製品向けに再検証すること
ハードウェア 正常動作を確認済みのボード配線と、対応するペリフェラル経路 マイク/スピーカーの部品、ゲイン、電源、ピン設定、基板レイアウト、量産テスト用の接続
設定 必要最小限のSDKコンポーネント 製品で必要となるメモリー、ファイルシステム、コーデック、Audio Manager、機能設定
音声データ サンプル形式と正常動作を確認済みのファイル サンプルレート、チャンネル数、バッファーサイズ、目標レイテンシ、エラー処理
実行時の動作 基本的な録音または再生の手順 UI、Bluetooth、ストレージとの同時動作、省電力状態への遷移と復帰、終了処理
検証記録 公式ドキュメントに記載された想定動作 シリアルログ、録音/再生ファイル、測定電流、再現可能な回帰テスト

最終更新: