アプリ版:「スタンプのみでお礼する」機能のリリースについて

質問させていただきます。

大学の課題で、ある楽器の入力音声を録音し、ドレミの音階を判定するプログラムを作ることになりました。

プログラムの流れとしては、
入力音声 → フーリエ変換 → 周波数特性により識別
という流れになると思います。

そこで、まず入力音声を録音するソフトを探しています。
音声波形を数値としてのデータを取りたいのです。
録音した音声ファイルを、テキストエディタで見たとき
0.00000
13.0034
268.344



のように数値化したファイルを作りたいです。

MATLABの場合、その機能があるようですが、
家で作れる範囲で作成したいです。
何かいいソフトはないでしょうか??

Windows、Linux(家はUbuntu)どちらで構いません。

よろしくおねがいします。 

A 回答 (2件)

たんに波形をテキスト化するであれば


WAVファイルは、WAVヘッダ+べたPCMです。

これのバイナリになっている値をテキストの文字列であれば
( CSV変換などしたいのであれば )
WAVヘッダの部分を読み込んで(mono/2ch, big/little)を意識して
取り出していった値をテキスト化、文字列化すればいいです。

----

それはさておき、録音自体は必須です。
ライン入力やマイク入力経由で録音するソフトであれば
Audacity というソフトを提案します。 (Windows and Linux)
ちなみに $ sudo apt-get install audacity です。

いじっていればわかりますが
単に情報の可視化(波形として)であれば、ファイルを読み込んだり
録音したりすれば、デフォルトで波形表示してくれます。

解析-スペクトル表示すると、おそらくお望みの「グラフ表示」が可能です。
それを書き出しで、spectrum.txtに保存したもの例です。

周波数 (Hz) レベル (dB)
86.132812 -32.616058
172.265625 -28.212019
258.398438 -25.235647
・・・省略・・・
21877.734375 -95.532463
21963.867188 -95.540146

おそらく何かをCSVテキスト化して、Calc/Excelなどの表計算ソフトで
(記録として)グラフ表示したいのだと思うのですが、そのへんですよね?

--
ある楽器の入力音声=MIDIである場合は
Audacity というよりMIDIソフトで対応した方が柔軟です。

--
フーリエ変換あたりの学習でしたら
mp3なんかであればフォーマットが……それ自体勉強内容みたいなものです。
エンコーダ/デコーダのソフトの類としてフォーマットチェック機能が
付いたものがあります。

その中には「フレーム単位でばらした状態」程度のモノの連続データを
可視化してグラフ表示するソフトもありますよ。
# glame , mp3splt  , mp3check , mp3gain のどれかだったような気がします。
# 今ちょっと時間がないので詳細確認はご容赦。

--
周波数特性というのが、オーディオの性能測定なんかの類でしたら (DA , AD)
・周波数ジェネレータなどでのこぎり波などを生成しファイルに保存
・ファイルを再生して、サウンドカードでライン出力する
・出力したモノを折り返しのループバック接続で、アナログのライン入力経由で録音・計測する
http://park21.wakwak.com/~eyp/jk1eyp/amp/measure …

--
ある楽器の入力音声がケーブル品質のような「音は魔物」の
ピュア系に近い世界であれば、
奥津電工の「AirCable比較試聴プロジェクト」などが
入門になるかもしれません。
http://www.okutsu.co.jp/download/index.html

脱線しすぎました。
「音声波形のサンプルの取り方」の回答画像2
    • good
    • 0

Linux は知らないので Windows だけ:


その数値の意味が分からないのですが,
・WAVE で録音できる適当な録音ソフトを調達する (Windows にサウンドレコーダーはあるけど機能がちょっと微妙)
・WAVE ファイルをそのように「数値化」するプログラムを作る
のが, コストが最もかからない方法かと.
あるいは, ウインドウプログラムが作れるコンパイラ (たとえば VisualStudio) があれば DirectX SDK のサンプルに「録音する」というのがあるので, そこにちょっと手を加えればできます.
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!