새소식

AI LAB/🦜 TTS

6. [음성합성] IndexError list index out of range 해결

728x90

음성합성을 진행하다보면 alignment.json에 음성과 텍스트를 쌍을 저장하기 위해서 아래의 명령어를 실행할 때가 있다.

python -m recognition.alignment --recognition_path "./datasets/son/recognition.json" --score_threshold=0.5 --recognition_encoding="utf-8"

 

상황에 따라 다를 수도 있겠지만, 인코딩 이슈 또는 IndexError list index out of range에러를 만날 것이다.

 

 

인코딩 이슈를 만났을 경우

에러명 : UnicodeDecodeError: 'cp949' codec can't decode byte 0xec in position 51: illegal multibyte sequence

해결방법 : recognition/alignment.py 106번째 줄에서 encoding 부분을 cp949대신 utf-8로 바꿔준다.
candidates = [strip_fn(line) for line in open(news_path, encoding='utf-8').readlines()]

alignment.py
0.01MB

 

IndexError 이슈를 만났을 경우

에러명 : IndexError list index out of range

해결방법 : recognition.json파일을 열어서 아래의 정보를 지워준다.

제거해야하는 텍스트 정보는 아래와 같다.
NB11653121 
NB11663681 
NB11684780 
NB11702006 
NB11722589 
NB11740377 
NB11771397

아래의 사진을 참고해서 지워보자.

추가로 설명을 하자면, 해당 정보들은 ./son/assets/ 경로에 저장된 .txt 파일들 중에서 줄바뀜이 되어 있지 않은 것들이다. 다시말해 파이썬으로 읽어들였을때 1줄짜리 파일때문에 오류가 발생하는 것으로 짐작된다. 이런 작업들이 귀찮을 때엔 alignment.py에 IndexError Exception처리를 해주면 된다.

 

추가로 질문사항이 있다면 댓글에 남겨주세요. 감사합니다.

 

반응형
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.