2016-11-06 2 views
0

문자열을 읽고 음성으로 변환하여 mp3로 재생하는 프로그램을 작성 중입니다. 그러나 프로그램이 음악을 재생하지 않습니다. 나는 mp3 파일이 만들어지고 표준 mp3 플레이어로 재생되지만 스크립트는 재생할 수 없다는 것을 확인하고 발견했습니다. gtts 모듈 (음성 변환) 및 vlc 모듈 (mp3 재생) 코드는 다음과 같습니다. 'm'은 소리로 변환하려는 텍스트입니다.무한 루프없이 파이썬에서 mp3를 재생하는 방법은 무엇입니까?

tts = gTTS(text=m, lang='en') 
tts.save("greeting.mp3") 
p = vlc.MediaPlayer("greeting.mp3") 
p.play() 

내가 더 내가 플레이 command.Like 후 무한 루프를 제공 할 때 MP3가 재생되는 것을 발견이

tts = gTTS(text=m, lang='en') 
tts.save("greeting.mp3") 
p = vlc.MediaPlayer("greeting.mp3") 
p.play() 
while True: 
    pass 

내가 무한 loop.I가 이미 가져온 것을 피할 수있는 방법이 있습니까 프로젝트에 필요한 모든 모듈.

+1

은 프로그램의 마지막 문장'p.play()'입니까? 그렇다면 문제는 mp3를 재생할 기회가 있기 전에 종료 될 수도 있습니다 –

+0

그래도 그렇게 생각합니다 ... 어떻게 해결할 수 있습니까? –

+0

사용중인 vlc 모듈에 대해 잘 모릅니다 만 is_playing() 메서드가있는 것 같습니다. 그래서, while true :를 while while p.is_playing()으로 대체하고 바쁜 대기를 피하기 위해'pass'를'sleep' 함수로 바꿀 수 있습니다. –

답변

0

vlc lib로 서브 프로세스를 시작하면 프로그램이 닫히고 서브 프로세스가 닫힙니다.

import time 

tts = gTTS(text=m, lang='en') 
tts.save("greeting.mp3") 
p = vlc.MediaPlayer("greeting.mp3") 
p.play() 
time.sleep(120) # number of seconds in 

그러나, 수면 기간이 코드에서 설정 될 수 있도록 용지의 길이를 찾는이 solution이 : 그래서 (제대로 프로세스를 처리하는 방법을 학습없이) 가장 빠른 해결책은 슬립 타이머를 설정하는 것입니다.

관련 문제