プロジェクトの作成と画面レイアウト

プロジェクトの作成と画面レイアウト

XAMLのレイアウトと、アウト・オブ・ブラウザの設定

では、音声保存のプログラムを作成していきましょう。

今回のサンプルは、Silverlight 4アプリケーションとして作成していきます。新規Silverlight 4プロジェクト(SL4_AudioCaptureプロジェクト)を作成し、依存関係を設定してください。この手順については、これまでの連載を参照してください。

XAMLデザイン画面を表示し、TextBlockを2個、レイアウトします。ひとつはタイトル表示用、もうひとつはメッセージ表示用です。また、Buttonを3個レイアウトします。それぞれ、録音、停止、保存のために用います(図4)。

図4:XAMLレイアウト画面(MainPage.xaml)

レイアウトができたら、以前の連載を参照して、Trustedモードのアウト・オブ・ブラウザで実行できるよう、設定してください。以上の作業によって作成されたXAMLコード(MainPage.xaml)については、ダウンロード・ファイルを参照してください。

音声保存のプログラムを書く前に

生成するPCM形式データの内容

キャプチャした音声を保存するには、音声データを生成する必要があります。生成する音声データは、テキストではなく、バイナリです。プログラムを書く前に、その内容を見ておきましょう。

Silvelright 4では、リニアPCMがサポートされています。キャプチャしたデータは、WAV形式に相当する、8ビットまたは16ビットのリニアPCM形式で保存することができます。

PCM形式のデータは、RIFF、FORMAT、DATAの3つのチャンクから成ります。各チャンクのデータを識別する識別子は、それぞれ'RIFF', 'fmt ', 'data'です。それぞれのチャンクの内容は、表1のとおりです。これらのデータを順次生成して書き込む処理を記述するようになります。

表1:PCMフォーマットの内容

RIFFチャンク内に格納されたデータを識別する FOURCC。ASCII Charactersの「RIFF」。 RIFF12
パッケージ全体の長さ。データを除くヘッダ長。36(RIFFチャンクとFORMATチャンクの小計)と、データ長(Length)の合計。  
特定のファイルの型を識別するFOURCC。ここではASCII Charactersの「WAVE」。 WAVE
FORMATチャンク内に格納されたデータを識別するFOURCC。fmt(半角スペース)固定。 fmt(半角スペース)24
ヘッダ長。フォーマットID以降のfmtチャンクのサイズ(単位はバイト)。リニアPCMでは24-8で16。  
オーディオのフォーマットタイプ。Microsoft PCM Audioの場合、フォーマットIDは1。  
チャンネル数。モノラルでは 1 つのチャンネル、ステレオでは 2 つのチャンネル。channels 
サンプリングレート(サンプリング周波数、1秒あたりのサンプル数。単位はHz) 。たとえば音楽CDの44.1kHzなら44100。samplingRate 
平均データ転送速度(Byte/sec)。サンプリングレート*量子化ビット数*チャンネル数を8で除算。  
ブロックサイズ(Byte)。PCM では、チャンネル数と量子化ビット数の積を 8 で除算した値。1は8ビットモノラル、2は8ビットステレオまたは16ビットモノラル、4は16ビットステレオ。  
量子化ビット数。PCMの場合、 8 または 16。samplingBitRate 
フォーマット情報の拡張部分。リニアPCMの場合は不要。  
DATAチャンク内に格納されたデータを識別する FOURCC。ASCII Charactersの「data」。 data 
波形データのデータ長。dataLength 
低レベルPCMデータの場合の、ゼロバイト以上の波形データ。  

表1の中の、FORMATチャンクの「平均データ転送速度(Byte/sec)」については、サンプリングレート×量子化ビット数×チャンネル数/8で算出します。サンプリングレートは、周波数グラフの横軸を何分割してサンプルをとるかです。細かいほど、精度は高くなります。量子化ビット数は読み取りの精度で、周波数グラフの縦軸を何等分するかです。もし8bitなら、2の8乗の256分割、16bitなら2の16乗の65536分割になります。これも、値が大きいほど細かく分割することになります(図5)。

図5:サンプリングレートと量子化ビット数

なお、音声データの各チャンクの情報については、次のURLが参考になるでしょう。

MSDN ライブラリ「RIFF (Resource Interchange File Format)」

MSDN ライブラリ「WAVEFORMATEX」

また、Silvelright 4でサポートされる形式の詳細については、Silvelright 4のヘルプの「サポートされるメディア形式、プロトコル、およびログ フィールド」を参照してください。

この記事のキーワード :

人気記事トップ10

人気記事ランキングをもっと見る

企画広告も役立つ情報バッチリ! Sponsored

ClickHouse Cloudが実現した広告運用SaaS「ATOM」のデータ基盤革新、パフォーマンスを向上しながら、運用負荷とコストを削減 11月11日 6:20 AIで開発が加速する時代、品質保証はどう変わる? Tricentisが示すAIエージェント活用の実像 11月9日 6:45 悪用までの猶予が「1分」に迫るフロンティアAI時代に開発と本番を貫く脆弱性管理が必要 10月29日 8:30 欧州CRA対応とSBOM運用。AI生成コードのOSS混入問題の対策とは ――スニペット単位で検出する「FossID」「Insignary Clarity」によるSBOM運用 9月16日 6:40 PostgreSQLからTiDBへ、稼働中SaaSで進める段階的DB移行の実践と再設計への展望 9月7日 6:30 機能安全開発におけるGoogleTestの活用を支援!「Parasoft C/C++test CT」で実現する効率化&AI連携 4月14日 6:30 【CNDW2025】Grafanaが明かす「オブザーバビリティの哲学」ー最小限の労力で実用的なインサイトを得るには 1月23日 6:30 【CNDW2025】プロダクト急増に備える基盤刷新 ーウェルスナビがECSからEKSへの移行で得た知見とは 1月15日 6:30 【CNDW2025】250環境を5人で運用、構築時間は30分に ーKINTOテクノロジーズが語るインフラ基盤組織の作り方 2025年12月18日 6:30 新たな自動化で熱視線! AIエージェントの「推論能力」を支える2つのコンポーネントとは? 2025年11月28日 6:30