04-07-2015 06:32 AM
Waveファイルの読み込みで質問があります。
Waveデータを読み込み→ユーザ指定時間の部分を切り出し→Waveファイルで保存するプログラムを作成しています。
labviewに標準のWaveファイルの読み込みViでは、サンプリングレートが44100Hzであれば長時間のWaveファイルでも動作するのですが、サンプリングレートが256000Hzでを録音された50秒位のWaveファイルはメモリが足りませんと表示されて動作しません。高サンプリングレートで録音された長時間のWaveファイルから指定時間の切り出しが出来る為にアドバイスをお願い致します。
04-07-2015 11:47 PM
こんにちは。
Wav ファイルの読み込みのときにファイル丸ごとを読み込んでいませんか?
256000 Hz で50秒のファイルとなると100 MB ほどのデータになるので最近のパソコンでも、使用状況によっては100MB の連続したメモリが確保できないのかもしれません。
Wav ファイル読み取り(関数名はサウンドファイル読み取り?)の関数で読み取り位置のオフセットと、読み取るサンプル数の指定ができると思うので
その辺を調整しながらファイルをまとめて一度に読み取らない様にする必要があるかと思います。
プログラムの組み方は用途によって異なると思いますが下記の様な流れを参考にしてみてください。
・Wavファイルを一度開き、読み取りは行わないが、サイズのみを把握
・上記のサイズをもとに数値スライドなどのUI の上限を設定
・ユーザーがUI で指定した範囲が、メモリ不足のエラーを発生させない程度の範囲であれば切り出してスピーカーに出力、もしくはファイル保存
・ユーザーがUI で指定した範囲が、メモリ不足のエラーを発生させる様な範囲であれば、分割して切り出してスピーカーに出力、もしくはファイルに保存
04-16-2015 02:52 AM