티스토리 뷰

728x90

「일정한 양식을 가진 문장이 여러 개 필요할 때, 쉽게 제작하는 방법을 설명하겠습니다.」


-이번 포스팅은 tacotron 데이터 정리를 위한 양식 제작에 사용된 코드를 설명하겠습니다.-

따로 필요한 라이브러리는 없습니다. 

- 내장 라이브러리인 sys만을 사용합니다.(메모장에 저장용)

작업 내용은 다음과 같습니다.

 

"./datasets/monn ~ "",  이런 형식을 500개씩 12세트 , 총 6000개의 문장을 만들어야 합니다.

 

- 6000만개를 손으로 직접 쓰실 분은 없겠죠?


제작 코드 순서:

  • 1.저장될 제목을 입력받습니다.
  • 2.for문으로 1개씩 증가시켜 500개의 문장을 만든다.
  • 3. 위 작업을 12번 반복합니다.

제작 방법 3가지:

1. 함수를 만들어 그 함수를 12번 반복

2. 1세트, 즉 500개의 문장만을 출력하는 프로그램을 12번 반복해서 합침

3. 그냥 for문을 12번 반복


1번 방법:

 

파일이름은 dataset-1로 입력했고, datsets이라는 함수를 만들어 001세트만 저장했습니다.
메모장을 확인해보니 dataset-1이라는 이름으로 위 사진처럼 001.500까지 저장될 것을 확인할 수 있었습니다.

 


2번 방법:

 

이 코드를 12번 실행했습니다. 
각 내용은 위 1번 코드의 내용과 00?.--- ?부분만 다릅니다. 다 열어서 하나로 합쳐줘야 완성입니다!

 

- 코드를 실행할 때 마다 입력한 제목(name)이 다르기에 저장된 메모장의 이름도 다릅니다.


3번 방법:

 

tacotron-fi라는 파일로 12세트 각500문장해서 6000문장이 입력합니다. 차라리 1번 방법에 for문을 하나 더 추가하는데 훨씬 효율적이겠네요
출력 결과 총 001.000부터 12.500까지 완료된 모습을 확인 가능 했습니다.

 


완성된 가장 효율적인 코드:         

-  1번 방법에 for문을 추가

import sys


name = input("파일이름: ")

def datasets(x):
    for i in range(0,501):
        print("\"./datasets/moon/audio1/" + '%03d' % int(x) + "." + '%03d' % int(i) + ".wav\": \"\",")
    
sys.stdout = open(name+'.txt','w')
for a in range(1,13):
    datasets(a)

001.000부터 012.500까지 성공적으로 만들어진 것을 확인하실 수 있습니다.

코드 간단 설명:

 -> '%03d' % int(i)  :  이 부분은 i라는 변수(여기서는 for문에 의해 1개씩 증가되는)를 3자로 맞춰줍니다. [ex)0을 000으로  12를 012로]

->  sys.stdout = open(name+'txt','w') : 이 부분은 맨 처음 입력받은 name의 값을 메모장의 제목으로 하여 이 코드 이후의 내용을 그 메모장에 저장해 줍니다.

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함