NI製品ディスカッション

キャンセル
次の結果を表示 
次の代わりに検索 
もしかして: 

高サンプリングレートで録音されたWaveファイル

Waveファイルの読み込みで質問があります。
Waveデータを読み込み→ユーザ指定時間の部分を切り出し→Waveファイルで保存するプログラムを作成しています。

labviewに標準のWaveファイルの読み込みViでは、サンプリングレートが44100Hzであれば長時間のWaveファイルでも動作するのですが、サンプリングレートが256000Hzでを録音された50秒位のWaveファイルはメモリが足りませんと表示されて動作しません。高サンプリングレートで録音された長時間のWaveファイルから指定時間の切り出しが出来る為にアドバイスをお願い致します。

0 件の賞賛
メッセージ1/3
4,014件の閲覧回数

こんにちは。

 

Wav ファイルの読み込みのときにファイル丸ごとを読み込んでいませんか?

256000 Hz で50秒のファイルとなると100 MB ほどのデータになるので最近のパソコンでも、使用状況によっては100MB の連続したメモリが確保できないのかもしれません。

 

Wav ファイル読み取り(関数名はサウンドファイル読み取り?)の関数で読み取り位置のオフセットと、読み取るサンプル数の指定ができると思うので

その辺を調整しながらファイルをまとめて一度に読み取らない様にする必要があるかと思います。

 

プログラムの組み方は用途によって異なると思いますが下記の様な流れを参考にしてみてください。

 

・Wavファイルを一度開き、読み取りは行わないが、サイズのみを把握

・上記のサイズをもとに数値スライドなどのUI の上限を設定

・ユーザーがUI で指定した範囲が、メモリ不足のエラーを発生させない程度の範囲であれば切り出してスピーカーに出力、もしくはファイル保存

・ユーザーがUI で指定した範囲が、メモリ不足のエラーを発生させる様な範囲であれば、分割して切り出してスピーカーに出力、もしくはファイルに保存

0 件の賞賛
メッセージ2/3
3,986件の閲覧回数

doradorachanさん

 

アドバイスありがとうございました。Waveメモリ不足を見極めてプログラムを作成してみます。

0 件の賞賛
メッセージ3/3
3,925件の閲覧回数