我使用Librosa函数librosa.output.write_wav
输出时间序列作为.wav文件,然后尝试在pydub中打开它,但是pydub正在抛出FileNotFoundError
消息(见下文) )。 * .wav文件肯定与我的Jupyter笔记本(convert_spect_to_wav.ipynb
)位于同一目录中。奇怪的是,如果我输入由Librosa生成的不的* .wav文件,我的代码就可以正常工作。我能够收听Librosa * .wav文件,所以我不知道Librosa正在做什么奇怪的事情让pydub找不到Librosa * .wav文件。
[lashen.lashen-MOBL] ➤ ls -l
total 442
-rwx------ 1 lashen UsersGrp 103566 Feb 17 14:47 bdl_arctic_a0001.wav
-rwx------ 1 lashen UsersGrp 12973 Mar 17 12:56 convert_spect_to_wav.ipynb
drwx------ 1 lashen UsersGrp 0 Mar 17 12:38 generated
-rwx------ 1 lashen UsersGrp 43066 Mar 17 12:55 generated_0.wav
-rwx------ 1 lashen UsersGrp 43066 Mar 17 12:55 generated_1.wav
-rwx------ 1 lashen UsersGrp 43066 Mar 17 12:55 generated_2.wav
-rwx------ 1 lashen UsersGrp 43066 Mar 17 12:55 generated_3.wav
-rwx------ 1 lashen UsersGrp 43066 Mar 17 12:55 generated_4.wav
-rwx------ 1 lashen UsersGrp 43066 Mar 17 12:55 generated_5.wav
-rwx------ 1 lashen UsersGrp 43066 Mar 17 12:48 hello.wav
-rwx------ 1 lashen UsersGrp 103566 Feb 17 14:58 ksp_arctic_a0001.wav
-rwx------ 1 lashen UsersGrp 44530 Mar 17 12:40 ksp_arctic_a0001_0.wav
-rwx------ 1 lashen UsersGrp 1408 Mar 6 20:21 parameters.mat
-rwx------ 1 lashen UsersGrp 25971 Mar 6 19:54 style_transfer.ipynb
-rwx------ 1 lashen UsersGrp 96044 Mar 17 12:40 whole_clip.wav
---------------------------------------------------------------------------
FileNotFoundError Traceback (most recent call last)
<ipython-input-67-6381f1840332> in <module>()
----> 1 convert_spect_to_wav('../dataset_processed/bdl_spectrogram_array.npy')
<ipython-input-66-a201b054f438> in convert_spect_to_wav(file_name)
19
20 # Piece together the wav files
---> 21 stitch_wavs_together(file_names)
<ipython-input-65-63d881a5987a> in stitch_wavs_together(file_names)
7 for file in clip_file_list:
8 print (file)
----> 9 clip = AudioSegment.from_wav(file)
10 wav_clips.append(clip)
11
~\AppData\Local\Continuum\anaconda3\lib\site-packages\pydub\audio_segment.py in from_wav(cls, file, parameters)
542 @classmethod
543 def from_wav(cls, file, parameters=None):
--> 544 return cls.from_file(file, 'wav', parameters)
545
546 @classmethod
~\AppData\Local\Continuum\anaconda3\lib\site-packages\pydub\audio_segment.py in from_file(cls, file, format, codec, parameters, **kwargs)
510
511 with open(os.devnull, 'rb') as devnull:
--> 512 p = subprocess.Popen(conversion_command, stdin=devnull, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
513 p_out, p_err = p.communicate()
514
~\AppData\Local\Continuum\anaconda3\lib\subprocess.py in __init__(self, args, bufsize, executable, stdin, stdout, stderr, preexec_fn, close_fds, shell, cwd, env, universal_newlines, startupinfo, creationflags, restore_signals, start_new_session, pass_fds, encoding, errors)
707 c2pread, c2pwrite,
708 errread, errwrite,
--> 709 restore_signals, start_new_session)
710 except:
711 # Cleanup if the child failed starting.
~\AppData\Local\Continuum\anaconda3\lib\subprocess.py in _execute_child(self, args, executable, preexec_fn, close_fds, pass_fds, cwd, env, startupinfo, creationflags, shell, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite, unused_restore_signals, unused_start_new_session)
995 env,
996 os.fspath(cwd) if cwd is not None else None,
--> 997 startupinfo)
998 finally:
999 # Child is launched. Close the parent's copy of those pipe
FileNotFoundError: [WinError 2] The system cannot find the file specified
我不知道为什么pydub找不到Librosa输出的* .wav文件。使用Librosa * .wav文件的问题是 ,因为其他* .wav文件可以正常工作。有没有其他人遇到过这个?
这里有一些相关代码:write_time_series_to_wav
创建Librosa * .wav文件,stitch_wavs_together
是我尝试使用pydub和{{1}读取Librosa * .wav文件的地方调用这两个函数。
convert_spect_to_wav
感谢任何帮助或意见!!