라즈베리파이4

[라즈베리파이4] python-vlc를 사용하여 파이썬으로 음성 출력

왕초보코딩러 2023. 10. 31. 23:10
728x90

라즈베리파이는 vlc player를 사용하기 때문에 python-vlc를 통해 음성 파일을 실행하는 파이썬 코드를 만들어보겠습니다

 

https://scv-life.tistory.com/105

 

파이썬과 VLC 미디어 플레이어

VLC 미디어 플레이어 VLC 미디어 플레이어를 아시나요? VLC는 VideoLAN 프로젝트에서 개발한 무료 오픈소스 크로스플랫폼의 미디어 플레이어 입니다. www.videolan.org/vlc/index.ko.html VLC 미디어 재생기 공

scv-life.tistory.com

https://scv-life.tistory.com/106

 

파이썬으로 VLC미디어플레이어를 컨트롤 하기 기초편

이전글: scv-life.tistory.com/105 파이썬과 VLC 미디어 플레이어 VLC 미디어 플레이어 VLC 미디어 플레이어를 아시나요? VLC는 VideoLAN 프로젝트에서 개발한 무료 오픈소스 크로스플랫폼의 미디어 플레이어

scv-life.tistory.com

https://scv-life.tistory.com/111

 

파이썬으로 VLC미디어플레이어 컨트롤하기 고급편

2021.05.03 - [강의강좌 정리/파이썬 YouTube 뮤직 플레이어 개발강좌] - 파이썬으로 VLC미디어플레이어를 컨트롤 하기 scv-life.tistory.com/106 파이썬으로 VLC미디어플레이어를 컨트롤 하기 이전글: scv-life.t

scv-life.tistory.com

굉장히 세세하게 알려주십니다

 

 


일단 vlc player가 있는 상황이어야 합니다! 라즈베리파이에는 기본으로 있는 것으로 압니다..

1. python-vlc 패키지를 깔기

pip3 install python-vlc

 

설치 완.

 


이제 라즈베리파이의 Thonny로 들어갑니다.

 

그 전에!!!!!

음성 파일을 만들고 싶다면

2023.10.29 - [라즈베리파이4] - [라즈베리파이4] gtts로 텍스트를 음성으로 변환하기

 

[라즈베리파이4] gtts로 텍스트를 음성으로 변환하기

gtts 패키지를 사용하여 텍스트를 음성으로 변환시켜보겠습니다. https://happylie.tistory.com/137 [Python] 파이썬 gtts 모듈을 이용한 텍스트 음성 변환 방법 파이썬 gtts 모듈을 이용한 텍스트 음성 변환 방

dogfoot1.tistory.com

 

2. 파이썬 코드를 통해 음성 파일을 트는 코드 만들기

import vlc

p = vlc.MediaPlayer("/home/kimlab/Music/hello.mp3")
p.play()

아니 이렇게 간단할 수가!!

 

하지만 문제가 있었습니다.

import vlc

p = vlc.MediaPlayer("/home/kimlab/Music/hello.mp3")
p.play()
m = vlc.MediaPlayer("/home/kimlab/Music/hi.mp3")
m.play()

이렇게 하면, 두 음성 파일이 중복되어서 나옵니다

 

소리가 많이 작습니다..소리를 크게 틀고 들어보세요

어떻게 해야 하나의 음성 파일이 끝나면 다음 음성 파일이 나오게 할 수 있을까요?


바로 is_playing()과 time.sleep()와 리스트를 이용합니다.

1. is_playing() 

음성 파일이 출력 되고 있다면 1을 반환, 출력 되지 않았다면 0을 반환

 

2. time.sleep(숫자)

숫자 초 만큼 기다립니다.

만약 time.sleep(1)이라면 1초동안 중지합니다

https://devpouch.tistory.com/35

 

[Python] 파이썬 일시정지 sleep 함수 사용법

Python sleep 함수 사용법 time 라이브러리의 sleep 함수를 사용하면 일정 시간동안 프로세스를 일시정지할 수 있다. sleep(10)이라고 하면, 10초간 프로세스를 중지한다라는 의미다. 실수단위로도 지정

devpouch.tistory.com

파이썬에서 음성파일을 로드하는 동안(약 1초 정도) is_playing()이 0이 나오기 때문에 1초 중지 해야 합니다.

 

3. list 형태

리스트 안에 음성 파일의 제목을 입력해서 리스트의 인덱스를 1씩 더하면서 사용합니다.

 


 

이 세가지를 이용하면

import vlc
import time

arr = ['hi', 'hello','goodbye']
cnt = 0
p = vlc.MediaPlayer(f"/home/kimlab/Music/{arr[cnt]}.mp3")

while(cnt<len(arr)):
    if p.is_playing() == 1:
        pass
    else:
        p = vlc.MediaPlayer(f"/home/kimlab/Music/{arr[cnt]}.mp3")
        p.play()
        time.sleep(1)
        cnt += 1

이렇게 되면 음성이 중복되지 않고 하나씩 출력 됩니다

 

소리가 많이 작습니다..소리를 크게 틀고 들어보세요

성공~~~