2014-07-25 6 views
1

pydub에서 2 개의 오디오 wav 파일을 하나의 wav 파일로 믹싱하려고합니다. 여기Raise_child 예외 출력

from pydub import AudioSegment 

sound1 = AudioSegment.from_wav("Test_1.wav") 
sound2 = AudioSegment.from_wav("Test_2.wav") 

# mix sound2 with sound1, starting at 5000ms into sound1) 
output = sound1.overlay(sound2, position=5000) 

# save the result 
output.export("mixed.wav", format="wav") 

정확한 오류 로그입니다 : 여기에 내 현재 코드는

Traceback (most recent call last): 
    File "heterodyning.py", line 10, in <module> 
    output.export("mixed.wav", format = "wav") 
    File "build/bdist.linux-armv6l/egg/pydub/audio_segment.py", line 234, in export 
    File "/usr/lib/python2.7/subprocess.py", line 493, in call 
    return Popen(*popenargs, **kwargs).wait() 
    File "/usr/lib/python2.7/subprocess.py", line 679, in __init__ 
    errread, errwrite) 
    File "/usr/lib/python2.7/subprocess.py", line 1259, in _execute_child 
    raise child_exception 
OSError: [Errno 2] No such file or directory 

그러나, 어떤 이유로, 나는 이것을 실행하려고 할 때마다, 그것은 raise_child 예외를 제기하기위한, 그리고 하더군요 그러한 파일이나 디렉토리가 없으며 내보낼 것을 말한 마지막 행을 참조하십시오. 나는 이유를 모른다. 아무도 왜 이것이 일어나고 있는지 말해 줄 수 있습니까?

답변

0

현재 작업 디렉토리는 어떤 모양입니까? 거기에 "mixed.wav"파일이 없으면 오버레이 된 사운드를 넣을 위치를 모르기 때문에 output.export("mixed.wav", format="wav")이 실패합니다. 다음을 통해 파이썬에서 파일을 열 수 있습니다.

mixed_file = open("mixed.wav", "wb") 

파일로 내보내기 전에 이렇게하십시오.

mixed_file = open("mixed.wav", "wb") 
output.export(mixed_file, format="wav") 
+0

내가 그 현재, 내 코드가 mixed.wav 파일을 생성합니다 확인할 수 있지만, 실제로 그 안에 혼합 된 오디오를 넣어하지 않습니다

는이 같은 결과가 발생해야한다. 여기에 파일을 열어 코드의 비트를 추가 작동하지 않았다, 그것은 나에게 똑같은 오류를 주었다. –

+0

오케이. 'wave'파이썬 라이브러리를 살펴본 후 https://docs.python.org/2/library/wave.html을 가져 오는 것이 좋습니다. 그런 다음'mixed_file = wave.open ("mixed.wav", "w")'및'mixed_file.writeframes (output)' – The2ndSon

+0

@PhilipR과 같은 것을 할 수 있습니다. 당신은 바이너리 파일'mixed_file = open ("mixed.wav", "wb")'로 열어야하고 파일을 내보내기 방법으로 전달해야한다 :'output.export (mixed_file, format = "wav")' – Jiaaro