PGR21.com
- PGR21 관련된 질문 및 건의는 [건의 게시판]을 이용바랍니다.
- (2013년 3월 이전) 오래된 질문글은 [이전 질문 게시판]에 있습니다.
통합 규정을 준수해 주십시오. (2015.12.25.)
Date 2024/05/06 13:33:15
Name 삭제됨
Subject [삭제예정] 파이썬으로 구글 tts 사용 시 에러 (간단, 파일입출력 관련)
작성자가 본문을 삭제한 글입니다.

통합규정 1.3 이용안내 인용

"Pgr은 '명문화된 삭제규정'이 반드시 필요하지 않은 분을 환영합니다.
법 없이도 사는 사람, 남에게 상처를 주지 않으면서 같이 이야기 나눌 수 있는 분이면 좋겠습니다."
24/05/06 13:45
수정 아이콘
안녕하세요! 말씀하신 문제는 파일을 덮어쓰는 과정에서 발생하는 "Permission denied" 에러로, 이미 열려 있는 파일을 다른 프로세스에서 수정하려 할 때 나타나는 문제입니다. 몇 가지 해결 방법을 제시해 드릴게요.

1. 명시적인 파일 닫기:
playsound 라이브러리가 파일을 자동으로 닫아주지 않을 수 있습니다. playsound.playsound() 함수 호출 후에 명시적으로 파일을 닫는 코드를 추가해 보세요.

Python
from gtts import gTTS
import playsound

def play_text(text, lang):
tts = gTTS(text=text, lang=lang, slow=False)
tts.save("voice.mp3")
playsound.playsound("voice.mp3")

# 파일 명시적으로 닫기
import os
os.close(os.open("voice.mp3", os.O_RDONLY)) # 파일 열고 파일 디스크립터 얻기

# 사용 예시
play_text("안녕하세요! 반갑습니다!", 'ko')
play_text("hello! nice to meet you!", 'en')
Use code with caution.
play_circleeditcontent_copy

2. 컨텍스트 관리자 활용 (with open):

with open 구문을 사용하면 파일을 자동으로 닫아주는 장점이 있습니다. 다만, gTTS.save() 메서드는 파일 경로를 직접 받지 않고 내부적으로 파일을 처리하기 때문에, with open과 직접적으로 사용하기 어려울 수 있습니다. 다음과 같이 임시 파일을 활용하는 방식으로 해결할 수 있습니다.

Python
from gtts import gTTS
import playsound
import tempfile

def play_text(text, lang):
with tempfile.NamedTemporaryFile(delete=False, suffix=".mp3") as temp_file:
tts = gTTS(text=text, lang=lang, slow=False)
tts.save(temp_file.name)
playsound.playsound(temp_file.name)

# 사용 예시
play_text("안녕하세요! 반갑습니다!", 'ko')
play_text("hello! nice to meet you!", 'en')
Use code with caution.
play_circleeditcontent_copy
3. 다른 라이브러리 활용:

playsound 대신 pygame.mixer와 같은 다른 라이브러리를 사용하는 것도 방법입니다. pygame.mixer는 파일을 자동으로 닫아주는 기능이 있어, 파일 관련 문제를 피할 수 있습니다.

Python
from gtts import gTTS
import pygame

def play_text(text, lang):
tts = gTTS(text=text, lang=lang, slow=False)
tts.save("voice.mp3")

pygame.mixer.init()
pygame.mixer.music.load("voice.mp3")
pygame.mixer.music.play()
while pygame.mixer.music.get_busy(): # 음악 재생이 끝날 때까지 대기
pygame.time.Clock().tick(10)

# 사용 예시
play_text("안녕하세요! 반갑습니다!", 'ko')
play_text("hello! nice to meet you!", 'en')
Use code with caution.
play_circleeditcontent_copy
주의 사항:

pygame 라이브러리를 사용하려면 pip install pygame 명령으로 설치해야 합니다.
위 예시 코드에서는 음악 재생이 끝날 때까지 대기하는 로직이 포함되어 있습니다. 필요에 따라 수정하여 사용하세요.
위 방법들을 시도해 보시고, 궁금한 점이 있다면 언제든지 다시 질문해주세요!


제미나이에게 본문 내용을 복사했더니 위와 같이 답변하네요. 이중 2번을 써보니 잘 됩니다.
뻥치시네
24/05/06 14:35
수정 아이콘
와 2번 써보니까 잘되네요. 직접 돌려도 봐주시고 정말 감사해요.
생성AI도 여러개 돌려야 하나 싶네요.
chatGPT에 제 질문글을 통으로 넣고 다시 돌려 보니, 한번은 위 2번과 같은 수준으로 정확하게 알려주는데,
한 번 외 다수 번은 계속 헛소리를 하네요.
생성AI 교차 검증 필수!
감사합니다!
목록 삭게로! 맨위로
번호 제목 이름 날짜 조회
176237 [질문] 과태료 위반 통지서가 연락도 없이 체납처리되는 경우가 많은가요? [12] Infrapsionic6316 24/05/16 6316
176236 [질문] 학술 발표 PPT 제작/수정 업체 추천 부탁드립니다... [5] 해바라기5633 24/05/16 5633
176235 [질문] 용량이 다른 램 추가 관련하여 [4] 공룡5872 24/05/16 5872
176234 [질문] ISA 및 연금저축펀드에 대한 질문입니다. [5] 국힙원탑뉴진스6516 24/05/16 6516
176233 [질문] 간단한 판자? 사려고 하는데 검색어를 뭐로해야하나요 [2] Alfine5980 24/05/16 5980
176232 [질문] 혹시 모친상이나 부친상일 때 부고문자는 누가 보내주나요? [15] 부처8156 24/05/16 8156
176231 [질문] 2~3만원대 남자 직장상사 선물? [9] 아이시스 8.06311 24/05/16 6311
176230 [삭제예정] 정찬성 주최 ZFN 가시는분 있을까요? 엔지니어5017 24/05/16 5017
176229 [질문] 향수 추천 부탁드립니다. [1] Nothing Phone(1)4985 24/05/16 4985
176228 [질문] 약 30여 년 전 사극 드라마를 찾습니다. [1] 칠상이5549 24/05/16 5549
176227 [질문] C타입 이어폰을 3.5로 사용할 수 없을까요 [8] 사이오닉6246 24/05/16 6246
176226 [질문] 카카오톡 톡서랍관련 질문입니다 시오냥5202 24/05/16 5202
176225 [삭제예정] 첫차로 새 차 사는게 과한가요? [69] 삭제됨7774 24/05/16 7774
176224 [질문] 4살 딸과 7월 말 제주도 여행 추천하시나요? [9] 기억의습작6071 24/05/15 6071
176223 [질문] 와우 그래픽 질문입니다 [3] 길갈6154 24/05/15 6154
176222 [질문] 엑셀 vlookup에서 lookup_value에 관한 질문입니다. [6] 영웅의신화5900 24/05/15 5900
176221 [질문] 요즘은 핸드폰을 어떻게 바꾸나요? [11] Rsunny6378 24/05/15 6378
176220 [질문] 이 식물 이름이 쇠뜨기일까요? [1] Aiurr5250 24/05/15 5250
176219 [질문] 청주에 좋은 한정식집 있나요? [1] onDemand6159 24/05/15 6159
176218 [질문] 중고차는 어디서 사야 할까요? [7] 시지프스5510 24/05/15 5510
176217 [질문] 면적대비 HOLE 개구율 계산하는법 부탁드립니다. [4] 영길7231 24/05/15 7231
176216 [질문] 배틀그라운드 모바일 할만한가요? [3] Garnett216949 24/05/15 6949
176215 [질문] 강백호 선수는 올해 포수 골든글러브 후보가 될 수 있나요? [5] 及時雨7358 24/05/15 7358
목록 이전 다음
댓글

+ : 최근 1시간내에 달린 댓글
+ : 최근 2시간내에 달린 댓글
회원정보 보기
닫기
회원정보 보기
닫기
회원정보 보기
닫기
회원정보 보기
닫기
회원정보 보기
닫기
회원정보 보기
닫기
회원정보 보기
닫기
회원정보 보기
닫기
회원정보 보기
닫기
회원정보 보기
닫기
회원정보 보기
닫기
회원정보 보기
닫기
회원정보 보기
닫기
회원정보 보기
닫기
회원정보 보기
닫기
회원정보 보기
닫기
회원정보 보기
닫기
회원정보 보기
닫기
회원정보 보기
닫기
회원정보 보기
닫기
회원정보 보기
닫기
회원정보 보기
닫기
회원정보 보기
닫기
회원정보 보기
닫기
회원정보 보기
닫기
회원정보 보기
닫기