728x90
라즈베리파이는 vlc player를 사용하기 때문에 python-vlc를 통해 음성 파일을 실행하는 파이썬 코드를 만들어보겠습니다
https://scv-life.tistory.com/105
https://scv-life.tistory.com/106
https://scv-life.tistory.com/111
굉장히 세세하게 알려주십니다
일단 vlc player가 있는 상황이어야 합니다! 라즈베리파이에는 기본으로 있는 것으로 압니다..
1. python-vlc 패키지를 깔기
pip3 install python-vlc
설치 완.
이제 라즈베리파이의 Thonny로 들어갑니다.
그 전에!!!!!
음성 파일을 만들고 싶다면
2023.10.29 - [라즈베리파이4] - [라즈베리파이4] gtts로 텍스트를 음성으로 변환하기
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
파이썬에서 음성파일을 로드하는 동안(약 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
이렇게 되면 음성이 중복되지 않고 하나씩 출력 됩니다
성공~~~
'라즈베리파이4' 카테고리의 다른 글
라즈베리파이 yolov5 설치 오류 프로파일링 (1) | 2024.01.06 |
---|---|
[라즈베리파이4] GPIO를 이용하여 버튼 입력 받기 (0) | 2023.11.03 |
[라즈베리파이4] gtts로 텍스트를 음성으로 변환하기 (2) | 2023.10.29 |
[라즈베리파이4] 라즈베리파이4에 yolov5 설치하기 업데이트 (0) | 2023.10.28 |
[라즈베리파이4] 라즈베리파이 모니터를 이용하여 VNC 접속하기 (2) | 2023.10.24 |