Как читать аудио на питоне с помощью Librosa?

Я пытаюсь прочитать аудиофайл в Librosa, но получаю следующую ошибку

FileNotFoundError: [WinError 2] The system cannot find the file specified

Упоминается, что где-то мне нужно установить ffmpeg, но это не решило проблему. У меня ffmpeg установлено на ffmpeg in c:\programdata\anaconda3\lib\site-packages (1.4).

Вот пример кода, который я использую для чтения образца аудиофайла.

import librosa
filename = librosa.util.example_audio_file()
print(filename)
y, sr = librosa.load(filename)

Выдает эту ошибку в строке номер 4

C:\ProgramData\Anaconda3\lib\site-packages\librosa\util\example_data\Kevin_MacLeod_-_Vibe_Ace.ogg
---------------------------------------------------------------------------
FileNotFoundError                         Traceback (most recent call last)
<ipython-input-7-0780b3498898> in <module>
      1 filename = librosa.util.example_audio_file()
      2 print(filename)
----> 3 y, sr = librosa.load(filename)

C:\ProgramData\Anaconda3\lib\site-packages\librosa\core\audio.py in load(path, sr, mono, offset, duration, dtype, res_type)
    117 
    118     y = []
--> 119     with audioread.audio_open(os.path.realpath(path)) as input_file:
    120         sr_native = input_file.samplerate
    121         n_channels = input_file.channels

C:\ProgramData\Anaconda3\lib\site-packages\audioread\__init__.py in audio_open(path, backends)
    105     """
    106     if backends is None:
--> 107         backends = available_backends()
    108 
    109     for BackendClass in backends:

C:\ProgramData\Anaconda3\lib\site-packages\audioread\__init__.py in available_backends()
     84 
     85     # FFmpeg.
---> 86     if ffdec.available():
     87         result.append(ffdec.FFmpegAudioFile)
     88 

C:\ProgramData\Anaconda3\lib\site-packages\audioread\ffdec.py in available()
    106         stdout=subprocess.PIPE,
    107         stderr=subprocess.PIPE,
--> 108         creationflags=PROC_FLAGS,
    109     )
    110     proc.wait()

C:\ProgramData\Anaconda3\lib\site-packages\audioread\ffdec.py in popen_multiple(commands, command_args, *args, **kwargs)
     92         cmd = [command] + command_args
     93         try:
---> 94             return subprocess.Popen(cmd, *args, **kwargs)
     95         except OSError:
     96             if i == len(commands) - 1:

C:\ProgramData\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, text)
    767                                 c2pread, c2pwrite,
    768                                 errread, errwrite,
--> 769                                 restore_signals, start_new_session)
    770         except:
    771             # Cleanup if the child failed starting.

C:\ProgramData\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)
   1170                                          env,
   1171                                          os.fspath(cwd) if cwd is not None else None,
-> 1172                                          startupinfo)
   1173             finally:
   1174                 # Child is launched. Close the parent's copy of those pipe

FileNotFoundError: [WinError 2] The system cannot find the file specified

Я не уверен, что здесь может быть не так. Librosa и ffmpeg установлены, но не работают вообще. Дайте мне знать, если вам нужна дополнительная информация.


person Samual    schedule 24.05.2019    source источник
comment
возможно, папку с ffmpeg добавить в переменную PATH, чтобы вы могли запустить ее в терминале, не используя полный путь к ffmpeg, и тогда у скрипта может не возникнуть проблем с ее запуском.   -  person furas    schedule 24.05.2019


Ответы (1)


Это решается следующим образом. Откройте приглашение anaconda с разрешением admin и выполните следующую строку.

conda install -c conda-forge librosa

В чем проблема Похоже, pip install librosa работало неправильно. Мне нужно было установить с librosa по conda install.

Надеюсь, это поможет будущему посетителю.

person Samual    schedule 24.05.2019
comment
Вы можете создать новую пользовательскую среду и установить ее там. Это также, безусловно, предпочтительный вариант. Имейте в виду, что ваши разные проекты могут иметь противоречивые требования. Складывать все в один мешок – напрашиваться на неприятности. - person Lukasz Tracewski; 24.05.2019
comment
Неа. Это для macOS, а у меня для Windows. - person Samual; 25.05.2019