2017-12-18 12 views
0

私はいくつかの.wavファイルから1秒を60秒の長さに切断して、いくつかのデータを生成するためにlibrosaを使用しようとしています。librosaはlibrosaによって作成された.wavを開けませんか?

この部分の作品は、私はすべての私のファイルを作成して、私はまた、任意のプレーヤー経由でそれらを聞くことができますが、私はlibrosa.loadでそれらを開こうとする場合、私は、このエラーが表示されます。

>>> librosa.load('.\\train\\audio\\silence\\0doing_the_dishes.wav', sr=None) 
Traceback (most recent call last): 
File "<stdin>", line 1, in <module> 
File "C:\Users\gionata\AppData\Local\Programs\Python\Python36\lib\site\packages\librosa\core\audio.py", line 107, in load 
with audioread.audio_open(os.path.realpath(path)) as input_file: File "C:\Users\gionata\AppData\Local\Programs\Python\Python36\lib\site-packages\audioread\__init__.py", line 116, in audio_open 
raise NoBackendError() 
audioread.NoBackendError 

あなたが持っていますかなにか提案を?私はこの機能をfile.wavを作成します。

def create_silence(): 
    path=DB+"_background_noise_/" 
    sounds = [x[len(DB):] for x in glob.glob(path+ '*.wav')] 
    for elem in enumerate(sounds): 
     sound=elem.split('\\')[1] 
     print(sound) 
     for j,i in enumerate(np.arange(0.0, 59.0, 0.3)): 
      y, sr=librosa.load(DB+elem, sr=None, offset=i, duration=1.0) 
      librosa.output.write_wav(DB+'silence/'+str(j)+sound, y, sr=sr, norm=False) 

問題がlibrosaによって作成されたファイルで自身を提示し、librosa.loadは全く問題なく、他のファイルと協力してきました。

答えて

0

そのまま私はこれをsolvede、Librosaはのfloat32が、標準の各値のために16ビットがそうタイプを変更するトリックを行い、あるnp.array私の場合には、値を出力:

def create_silence(): 
path=DB+"_background_noise_/" 
maxv = np.iinfo(np.int16).max 
sounds = [x[len(DB):] for x in glob.glob(path+ '*.wav')] 
for elem in sounds: 
    sound=elem.split('\\')[1] 
    print(sound) 
    for j,i in enumerate(np.arange(0.0, 59.0, 0.3)): 
     y, fs=librosa.load(DB+elem, sr=None, offset=i, duration=1.0, mono=False) 
     librosa.output.write_wav(DB+'silence/'+str(j)+sound, y=(y*maxv).astype(np.int16), sr=fs, norm=False) 
関連する問題