Windowsとサウンドカードによる音声の取り込み実験

神川 定久 大阪府立寝屋川高等学校(大阪府理化教育研究会マイコン部会)


[あらまし] コンピュータを用いた音声の取り込み関してはこれまでも数多く報告されている。 それらは多かれ少なかれ特殊なハードウェアを製作し、それを用いてAD変換、DA変換を行うというものであった。 しかし、このような方法では費用や手間がかかりすぎたり、回路もソフトも互換性がなく同じような物を独自に開発することになり、普及は難しい。 そこで、今回できるだけ標準的な既存の装置で同様な実験を行うプログラムを作成した。

[キーワード]教材開発 サウンドカード コンピュータ Windows FFT 波動 音声取込


はじめに

波動の音の分野では従来からコンピュータで音声を取り込む実験が行われている。 最近は安価なADコンバータも販売されはじめているが、多くの台数分をそろえるにはやはり高価である。 これは自作する場合もほぼ同様であり、回路に関する知識も必要となる。さらに、自作をする場合回路のドライバも独自の物になるため、ソフトも回路にあわせて製作する必要がある。 このような状態は音声の取り込み実験を気軽に行う障害になっていると考えられる。

教材開発について

このような状態を改善し簡単な音声の取込実験をを実現するには次のような条件を満たす回路を用いる必要があるであろう。

  1. ある程度の性能を持った標準化された回路であること。
  2. 回路が簡単に安価に手に入ること。
  3. 回路を扱うAPIも標準化されていて扱いやすいこと。

これらの条件を満たすものの1つとしてSoundBlaster等のサウンドカードが考えられる。 その理由は以下の通りである。

このようにサウンドカードをWindows3.1から操作するプログラムは音声の取込実験を簡単に行うために適している。

プログラムについて

  1. プログラムの概要
    上記の可能性を検証するためにプログラムを作成したところ、以下のような機能を実現することができた。
    • サンプルビット長を16bit毎サンプル、8bit毎サンプルから選択できる。
    • サンプリングレートは11025サンプル毎秒、22050サンプル毎秒、44100サンプル毎秒から選択できる。
    • 選択した条件でモノラルで1秒間AD変換し、波形を表示する。
    • 選択した条件で正弦波、矩形波、三角波、のこぎり波のデータを1秒間作成する。
    • 取り込んだ音声をWAVファイル(Windowsで一般的に音声を記録するために用いられているファイルの形式)としてディスクに書き込む。
    • 既存のWAVファイルを読み込む。
    • 取り込んだりファイルから読み込んだ音声、作成したデータの1波長分を選択し、フーリエ変換(FFT)する。選択した範囲を基本振動と考えたときの振動数を表示する。
    • フーリエ変換して得られた成分を単純に合成して元の波形に戻るか確認する。
    • 音声全体を再生する。フーリエ変換した波形を1秒間再生する。
    • いくつかの波形とAD変換結果を同時に表示することも可能である。
    • Windows3.1が動作し、サウンドカードを持った機種であればどの機械でも動作する。

  2. プログラムで用いたAPI等
    このプログラムはVC++とMFCを用いて作成した。音声の録音と再生のAPIはウエーブフォームオーディオ関数(waveIn×××、waveOut×××)等を用いている。
    これらを使うにはPCMWAVEFORMATと呼ばれる構造体にチャンネル数、サンプリングレート、1サンプルあたりのビット数等を設定してウエーブフォームオーディオデバイスをオープンする。その後WAVEHDRと呼ばれる構造体にバッファの大きさやバッファへのポインタを設定しデバイスに書き込むと音声が再生(DA変換)される。
    録音でも同様にオープンしたデバイスに読み込むと録音(AD変換)が行われる。
    また、デバイスの能力を調べるAPIもあるので、取り付けられているデバイスが指定したフォーマットに対応しているかどうか調べることも可能である。

    このプログラムはWAVファイルと呼ばれるWindows標準のファイル形式を使っている。 WAVファイルはRIFF(Resource Interchange File Format)ファイルの一種でAD変換の結果以外にPCMWAVEFORMAT構造体をデータとして持っているので、ウエーブフォームオーディオ関数を使うのに最適である。 また、Windowsで標準に使われているファイル形式なのでファイルへの出力と読み込みのAPIもマルチメディアファイルアクセス関数(mmio×××)として定められている。 さらに、いろいろな音声のWAVファイルそのものが販売されているので録音しにくい音でも手に入れることができる。 また、市販のソフトでも利用しているのでこのファイル形式が短期間のうちに変化することも少ないだろう。

    ここで述べたようにこのプログラムはできる限り標準的なものを利用するという考え方に立ってプログラムしてある。 この点はこれまであまり重視されていなかったように思うが、重要だと考える。 このプログラムはサウンドカード(Sound Blaster16)を取り付けたAT互換機で作成したが、IBM製のサブノートパソコン、NEC製のパソコン等で動作を確認できた。 この方法ではソフトをフロッピーディスク等で供給するだけで一般的なコンピュータで実験することができる。 たとえば、物理の課題研究の一つとして生徒の家庭のコンピュータで音声の分析をすることも可能になる。 これが標準化することによって得られる大きな利点である。

  3. プログラムで注意すべき事項
    ただし、このプログラムを使用するに当たって注意すべきことがある。 それはサウンドカードの特性の問題である。
    サウンドカードは音声入力を前提としているためマイクのアンプには一般にDCをカットするためのコンデンサーがつながれているようである。 このために、入力波形に歪みが生じ極端な場合には微分されたような波形になる場合がある。 (もっとも、マイクによる入力を扱う以上マイクの段階での波形の変化?は避けられない。 また、シンクロスコープなどでもAC入力では同様の波形の変化がある。)
    したがって、あらかじめサウンドカードの特性を調べておく必要がある。
    ここでは、マイクの特性を除いたいくつかのサウンドカードのアンプの特性を見るために、ファンクションジェネレータの三角波と矩形波をMIC入力又はLINE入力に入力し、どのように波形が変化するかを観察した結果を示す。

    • IBMのサブノートパソコンThinkPad230 Csの内蔵サウンドボードではどのような振動数にしてもほぼ同じように、元の波形を微分したような波形になった。
    • NECのPC9801にSound Blaster16を付けたものではLine入力の特性の悪さは振動数をあげるにしたがって改善された。 400Hzでは三角波に若干歪みが残るが500Hzではほとんど気にならない程度に改善される。矩形波ではおそらくコンデンサーの影響でシンクロスコープのAC入力のように電圧が一定の部分が少しづつ下がる。 若干のオーバーシュートとリンギングがあるようだがやはり500Hzぐらいで我慢できるレベルになった。 マイク端子ではもう少し結果が悪いもののやはり500Hzぐらいで実用になりそうである。
    • SusTeenのWinSUPREME(PC-AT互換機)にSound Blaster16を付けた場合も当然ながら上とほぼ同じ結果であった。
    • NECの98マルチに内蔵された音源ボードではマイク入力も波形の変化は少なかった。
    • Gateway2000 Family PC 4DX-33J付属のサウンドカードのLine入力では100Hzでもあまり波形の変化は気にならなかった。

    理想としては、やはり入力波形が常にそのまま出て欲しいが、測定する音は数百Hz以上の場合が多いのでほとんどの場合は実用になるはずである。 また、100Hzでやや歪んだ三角波のFFT結果とあまり歪みが気にならない500Hzの三角波のFFT結果は成分の大きさに関しては同じであった。 しかし、授業で用いる場合、教師はその時使用するサウンドボードによってどのような変化があるかを調べておく必要があろう。 また、音声以外のデータを扱う場合は特に気を付ける必要がある。

授業での利用例

本校ではまだ本格的にはコンピュータが導入されておらず、物理準備室に1台設置されているものを利用した。 視聴覚の液晶ディスプレイとスキャンコンバータを併用すればスクリーンに画面を投影できるので、このプログラムのように文字をはっきり見せる必要がない場合は実用になる。

授業ではいろいろな音をを録音し波形を見せるとともに再生して、元の音に近い音として聞こえることを示したり、音叉の波形が正弦波であることを見せること等でAD変換によって音波の波形を捉えられることを示す。 また、計算で作った三角波や矩形波、のこぎり波を成分に分解し、成分を合成してゆくと元の波形に近づいてくることを示すことによって、いろいろな波形が正弦波の重ねあわせであらわせることを直感的に捉えさせることもできる。 また、特徴のある楽器の音の成分を示すこともできる。
例えばクラリネット(閉管)とフルート(開管)の波形と成分では、閉管であるクラリネットが奇数倍音を多く含むことがわかる。
授業では吹奏楽部の生徒に吹いてもらった音も利用しているが、そのような録音ができない場合は市販のソフトの音声を利用することもできる。 例えばMicrosoft MUSICAL INSTRUMENTS(CD-ROMの楽器辞典)のWAVファイルが利用できる。 このCD-ROMには各国のいろいろな楽器の音がサンプルとしてWAVファイルの形で納められている。
このように作成するプログラムで標準的なフォーマットを用いることにより、簡単には手に入らない楽器の音などいろいろな音声を利用することが可能になる。

まとめ

今回のプログラムを作成する上で特に注意したのは何度も書いたように標準的なものをできるだけ利用するという事であった。実際にプログラムを組んでみてこの考え方は間違っていなかったと感じている。
本来コンピュータが他の機械と異なるのは「汎用性」という事ではなかっただろうか。 既にある物を利用する事はもっと重視されてよいと考える。

文献、およびプログラムの登録先

このプログラムはこのアーカイブに登録してあります。
ウエーブフォームオーディオを使った音の実験プログラム(207K)
また、NIFTY-Serve FKYOIKUS lib 10 #170 WAVE150.LZHからもダウンロードできます。


私の仕事のページへ

ホームページへ