2016-03-23 24 views
0

WAVファイルの作成に関する質問があります。 は、ここではいくつかの情報である。WAVファイルを作成し、wavファイルのコピーを作成する

は、2つのチャネル、2バイトのサンプル幅、len(sound)サンプルと、framerateによって与えられる フレームレート、圧縮タイプ「NONE」でファイル名命名WAVファイルを書き込み、そして圧縮 名 ' not compressed「ここ

が私のコードです:ここでは

import wave 
import struct 

def loadstereowav(filename): 
    w = wave.open(filename, 'r') 
    nchannels, sampwidth, framerate, nframes, comptype, compname = w.getparams() 
    assert nchannels == 2 and sampwidth == 2 and comptype == 'NONE' 
    frames = w.readframes(nframes * nchannels) 
    sound = struct.unpack_from((str(nframes)+'h') * nchannels, frames) 
    w.close() 
    return framerate, sound 


def savestereowav(filename, framerate, sound): 
    w1 = wave.open(filename, "w") 
    for i in range(0, len(sound)): 
     w1.write(struct.pack('>h', framerate)) 

は、いくつかのテストケースです:

>>> rate, sound = loadstereowav('love.wav') 
>>> savestereowav('love_copy.wav', rate, sound) 

私はsavestereowav(filename, framerate, sound)の機能を書き込む必要があります。ファイルを読み込んで保存するとコピーが作成されます。

例えば、私はWAVファイルに対処する方法についてのアイデアを持っていない、「love.wav」をロードし、「love_copy.wav

とのコピーを作成します。しかし。

誰でもこの質問をお手伝いしますか?

答えて

0

あなたは変更せずにファイルをコピーする必要がある場合(同じnchannels、同じsampwidth、など)、あなたがその内容を理解/分析することなく、ファイルをコピーすることができますが:shutils.copyfile()が一方のトリックに

を行う必要があります(例:変更サンプルレート、チャンネル数、など):

  1. wavファイル形式を理解し、あなたがデータを変換する必要がある場合は、次の2つのものが必要になります。ネット上で "wavファイル形式"を検索してください(ex https://en.wikipedia.org/wiki/WAV)。 waveモジュールはreadframes()メソッドのみを提供しますが、手動でデータを管理する必要があります。

  2. どのような変換が必要かに応じて、何らかの種類の信号処理方法(たとえば、https://en.wikipedia.org/wiki/Sampling_%28signal_processing%29)が必要になります。これは広い質問である可能性があります。

あなたはsavestereowav機能でframerateパラメータが含まれているので、私はあなたがリサンプリングすると仮定。しかし、あなたのテストケースでは、同じrateを使用します。

関連する問題