wlsdml1114/diff-svc

dataset의 샘플레이트 전처리

MoorDev opened this issue · 10 comments

자체적으로 만든 데이터셋으로 학습 진행중입니다

다만 데이터셋의 포맷이 좀 뒤죽박죽이라 어떤건 Mono 44100kHz고 어떤건 Stereo 48000kHz등의 뒤죽박죽이고 그렇습니다.
다만 인터넷 찾아보니 Mono 44100kHz로 만들어서 올리라는 내용이 있어서 혹시나 하고 묻습니다.

전처리과정에서 포맷 통일같은걸 해주나요? 아니면 전처리를 미리 다시 해주고 다시 재학습을 진행하고자 합니다. 약 2시간 분량의 데이터셋에 320 epoch 80000step으로 (total loss 0.0238정도)웅웅거리는 소리가 많아 문제를 찾고 있던 중 데이터셋 생태부터 확인 하고자 합니다.

전처리 단계에서 해주는 작업은 크게 4가지입니다
mp4로 된 데이터가 있을 때 wav로 변경해주는 것
wav를 15초 간격으로 잘라주는 것
잘라진 wav에서 demucs로 배경음을 지워주는 것(optional)
wav normalize & binarize 해주는 것

샘플레이트는 변경하지 않기 때문에 미리 통일해주시면 될 것 같습니다.

전처리 단계에서 해주는 작업은 크게 4가지입니다 mp4로 된 데이터가 있을 때 wav로 변경해주는 것 wav를 15초 간격으로 잘라주는 것 잘라진 wav에서 demucs로 배경음을 지워주는 것(optional) wav normalize & binarize 해주는 것

샘플레이트는 변경하지 않기 때문에 미리 통일해주시면 될 것 같습니다.

아직 학습이 끝나지 않아 확실히는 알 수 없지만 샘플레이트를 Mono 44100으로 통일하니 학습 수렴속도가 빨라졌습니다
이전에는 이틀정도 걸려서 dataloss가 0.02정도 들어왔는데 8시간정도 지났는데 해당수준으로 진입하는군요.

샘플레이트 통일이 좋은 의미로 효과가 있는것 같습니다. 결과물은 몰라도 학습속도에 좋은 영향이 있네요

@MoorDev
샘플레이트 통일은 코드로 진행하셨나요? 아니면 별도의 프로그램을 사용하셨나요?

@MoorDev 샘플레이트 통일은 코드로 진행하셨나요? 아니면 별도의 프로그램을 사용하셨나요?

wav 있는곳에 mono라는 폴더를 만든 다음
find . -name '*.wav' -exec ffmpeg -i '{}' -ac 1 -ar 44100 './mono/{}' ;
이 명령어로 처리했습니다. (리눅스에서 작업중이라 bash를 썼습니다 powershell도 되는지는 모르겠습니다)
이러면 mono폴더 안에 Mono 44100hz 16bit PCM으로 통일 된 wav들이 만들어집니다.

ffmpeg에서
-ac 1 -ar 44100
이 옵션만 추가하면 샘플레이트 통일이 되니까 노말라이징 하는 부분에 이 옵션을 넣으면 될 것 같습니다.

샘플레이트를 44100정도로 통일하고 Mono로 다운믹싱하는 것만으로도 학습성능이 꽤 오릅니다.

sep_wav할때 해당 과정을 추가하면 좋을 듯 합니다

@MoorDev
학습 수렴이 빨리되는거와 별개로 결과물 퀄리티도 좋았나요?

결과물 퀄리티는 동일한 step이 아니기에 1대1 비교는 안 됩니다.
거의 속도가 1.5배에서 2배차이나다보니 이미 이전 모델의 step을 넘어섰거든요.

어찌됐건 많이 학습한만큼 퀄리티는 확실히 나아졌습니다. loss도 확실히 줄었고요. 지금 0.008정도 되는데 확실히 웅얼대는 것이 줄었습니다.

@MoorDev
감사합니다 pydub에 smaplerate와 channel을 바꿔주는 함수가 있어서 추가해보겠습니다.
도움 감사합니다.

2023-05-23 23 20 19

binarize에서 막힙니다. 애러화면이 계속뜨는데 구글링 해봐도 어디서 잘못 되었는지 알 수 없네요.

2023-05-23 23 20 19

binarize에서 막힙니다. 애러화면이 계속뜨는데 구글링 해봐도 어디서 잘못 되었는지 알 수 없네요.

preprocess_out에 만들어진 파일들을 raw_data_dir에 넣으셨나요?
그리고 여긴 이미 closed된 이슈라서 저 말곤 알림이 안오니 새로 이슈하나 열고 질문하시는걸 추천합니다. 그래야 다른분들도 보고 답해줄겁니다