ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 내 목소리로 TTS 만들기 - (2) mimic recording studio 실행, 저장 안되는 에러 해결
    Projects/TTS 제작 2023. 9. 5. 12:58
    728x90
    반응형

    내 목소리로 TTS를 만들어볼 예정입니다.

     

    아래 사이트에 내용이 전부 나와있으니 해당 내용을 보면서 만들었구요,

     

    진행하면서 막히는 부분에 대해 블로그에 정리하려 합니다.

     

     

    SCE-TTS: 내 목소리로 TTS 만들기

    문서를 불러오고 있습니다...

    sce-tts.github.io

     

     

     

     

    오늘은mimic recording studio 를 설치하여 녹음을 하려고 했습니다.

     

    mimic recording studio 설치 자체는 어렵지 않았지만, 음성을 저장하고 다음으로 넘어가는 과정에서 에러가 발생합니다.

     

    에러 내용

    크롬 브라우저에서 녹음 후, 다음으로 넘어갑니다.

    두번째 녹음 파일부터 저장에 실패했다고 나옵니다.

     

     

     

    에러 분석

     

    에러가 나는 이유는 아래와 같습니다.

     

    크롬 웹 브라우저에서 녹음을 한 후, 저장파일을 로컬저장소의 audio_files 폴더에 저장합니다.

     

    이때, 유저별로 다른 헥사값으로 이루어진 폴더 내에,

    헥사값-metadata.TXT 파일에 저장합니다.

     

     

    metadata 텍스트 파일의 내용을 열어보면,

    녹음파일이름 | 녹음 텍스트 내용 | 숫자

    형식으로 이루어져 있습니다.

    반응형

     

    그런데, 크롬 브라우저에서 저장할때, 첫번째 라인은 잘 저장하고

    두번째 라인부터 저장이 안됩니다.

     

    cp949 에 대한 에러는 아래와 같은 상황에서 발생한다고 합니다.

     

    * 파일을 읽을 때 파일의 인코딩이 'cp949'가 아닌데 'cp949'로 디코딩하려고 할 때.
    * 웹에서 데이터를 가져올 때, 데이터의 인코딩과 디코딩 방식이 다를 때.
    * 문자열을 처리하는 과정에서 잘못된 인코딩을 사용할 때.

     

    에러 해결

    audio_files에 생성되는 metadata.txt 파일이 있는지 체크하여, 매번 생성될 때마다 값을 읽어서 새로운 txt파일에 추가하는 방식으로 코드를 구현했습니다.

     

     

    아래는 코드 전문입니다.

     

    import os
    
    # 모니터링할 디렉토리 경로 설정
    directory_path = r'F:\mimic-recording-studio\audio_files\2c8d247d-7e7f-e6c0-a427-4ee3bea53ef9'
    
    # "temp.txt" 파일 경로 설정
    temp_file_path = 'temp.txt'
    
    # 디렉토리를 모니터링하는 함수
    def monitor_directory(directory):
        for filename in os.listdir(directory):
            if filename == '2c8d247d-7e7f-e6c0-a427-4ee3bea53ef9-metadata.txt':
                file_path = os.path.join(directory, filename)
                # 파일 내용을 읽어와 "temp.txt" 파일에 추가 (UTF-8 인코딩 사용)
                with open(file_path, 'r', encoding='utf-8') as source_file, open(temp_file_path, 'a', encoding='utf-8') as temp_file:
                    temp_file.write(source_file.read())
                # 원본 파일 삭제
                os.remove(file_path)
    
    # 디렉토리 모니터링 시작
    while True:
        monitor_directory(directory_path)

     

    먼저 directory_path 에 본인의 audio_files가 저장되는 폴더를 입력합니다.

     

    그리고 temp_file_path를 설정합니다.

    위처럼 파일명만 입력할 경우, 파이썬 실행파일 디렉토리에 생깁니다.

     

    monitor_directory 함수에서는,

    계속해서 생성되는 metadata.txt 파일을 찾고,

    만약 찾아지면 uth-8 인코딩으로 읽어와 temp 파일에 씁니다.

    그리고 metadata.txt 파일을 삭제합니다.

     

    metadata.txt 파일이 삭제되어야 다음 녹음을 저장할 수 있게 됩니다.

     

    아래 파일을 다운로드 받아서 쓰셔도 됩니다.(위의 소스코드와 동일함)

    audio_files_name_changer.py
    0.00MB

     

     

    녹음이 완료된 후

    녹음이 완료된 후 학습을 위해 다시 metadata.txt 파일을 구성해야합니다.

     

    temp.txt파일을 매번 새로 생기는 metadata.txt 이름으로 변경하여 [audio_files\헥사이름폴더] 안에 넣어야 합니다.

    728x90
    반응형

    댓글

Designed by Tistory.