openspeech-team / openspeech

Open-Source Toolkit for End-to-End Speech Recognition leveraging PyTorch-Lightning and Hydra.
https://openspeech-team.github.io/openspeech/
MIT License
668 stars 115 forks source link

모델을 테스트할 수 없습니다. #151

Closed tmvkrpxl0 closed 2 years ago

tmvkrpxl0 commented 2 years ago

❓ Questions & Help

모델 훈련을 끝내고, hydra_train.py 에서 trainer.test(model, data_module, ckpt_path="/home/tmvkrpxl0/STT_KO/openspeech/outputs/2022-04-02/04-05-11/None/version_None/checkpoints/0_206666.ckpt") 를 통해 모델을 테스트하려고 하였으나 ValueError 로 인하여 테스트를 진행할 수 없습니다. 또한, hydra_eval.py 를 사용하여도 똑같습니다, ValueError 로 인해 테스트를 진행할 수 없습니다.

hydra_eval.py

python3 openspeech_cli/hydra_eval.py \
audio=melspectrogram \
eval.dataset_path=/home/tmvkrpxl0/KoSpeech_Data/speech \
eval.checkpoint_path="/home/tmvkrpxl0/STT_KO/openspeech/outputs/2022-04-02/04-05-11/None/version_None/checkpoints/0_206666.ckpt" \
eval.manifest_file_path=/home/tmvkrpxl0/STT_KO/openspeech/generated \
model=deepspeech2 \
tokenizer=kspon_character \
tokenizer.vocab_path=/home/tmvkrpxl0/STT_KO/openspeech/aihub_labels.csv

로 실행하였고, hydra_train.py

python3 openspeech_cli/hydra_train.py \
dataset=ksponspeech \
dataset.dataset_path=/home/tmvkrpxl0/KoSpeech_Data/speech \
dataset.manifest_file_path=/home/tmvkrpxl0/STT_KO/openspeech/generated \
dataset.test_dataset_path=/home/tmvkrpxl0/KoSpeech_Data/speech/KsponSpeech_eval/ \
dataset.test_manifest_dir=/home/tmvkrpxl0/KoSpeech_Data/script \
tokenizer=kspon_character \
model=deepspeech2 \
audio=melspectrogram \
lr_scheduler=warmup_reduce_lr_on_plateau \
trainer=gpu-resume \
trainer.max_epochs=1 \
trainer.checkpoint_path="/home/tmvkrpxl0/STT_KO/openspeech/outputs/2022-04-02/04-05-11/None/version_None/checkpoints/0_206666.ckpt" \
trainer.batch_size=6 \
criterion=ctc

로 실행하였습니다.

스스로 문제를 해결하려고 이것저것 시도해 보던 도중, AIHUB 측에서 제공한 모든 테스트용 데이터 파일들의 크기가 (16의 배수) + 1 이더군요... 훈련용 데이터들은 파일의 크기가 전부 16의 배수이지만 테스트용 데이터들은 16의 배수 + 1 입니다.

upskyy commented 2 years ago

안녕하세요 @tmvkrpxl0 ! 혹시 ValueError 로그도 같이 올려주실 수 있으신가요?

tmvkrpxl0 commented 2 years ago

@upskyy PCM 데이터 크기 사이즈가 제공된 dtype과 맞지 않다고 합니다. 지금 당장 오류를 전송하긴 힘듭니다.

tmvkrpxl0 commented 2 years ago
import numpy as np

def main():
    audio_path = "/home/tmvkrpxl0/KoSpeech_Data/evaluation/KsponSpeech_eval/eval_other/KsponSpeech_E04118.pcm"
    np.memmap(audio_path, dtype='h', mode='readonly')

if __name__ == '__main__':
    main()

어제 간단한 스크립트를 작성하여 테스트 해 보았는데 ValueError로 인해 실패합니다.

/home/tmvkrpxl0/STT_KO/bin/python3.9 /home/tmvkrpxl0/STT_KO/openspeech/test.py
Traceback (most recent call last):
  File "/home/tmvkrpxl0/STT_KO/openspeech/test.py", line 8, in <module>
    main()
  File "/home/tmvkrpxl0/STT_KO/openspeech/test.py", line 5, in main
    np.memmap(audio_path, dtype='int16', mode='readonly')
  File "/home/tmvkrpxl0/STT_KO/lib/python3.9/site-packages/numpy/core/memmap.py", line 239, in __new__
    raise ValueError("Size of available data is not a "
ValueError: Size of available data is not a multiple of the data-type size.
tmvkrpxl0 commented 2 years ago

@upskyy 테스트용 데이터의 크기가 맞지 않아서 그런것 같은데, 훈련할때 어떻게 테스트 하셨나요?

upskyy commented 2 years ago

@tmvkrpxl0 저도 아마 pcm파일 읽는데 에러가 나서 wav파일로 바꿔서 읽은 것 같아요!

tmvkrpxl0 commented 2 years ago

@upskyy 어떻게 했는지 알려주실 수 있나요?

upskyy commented 2 years ago
import wave

def convert_to_wav(filepath):
    with open(filepath, "rb") as r:
        data = r.read()
        with wave.open(str(filepath.with_suffix(".wav")), "wb") as w:
            w.setparams((1, 2, 16000, 0, "NONE", "NONE"))
            w.writeframes(data)

@tmvkrpxl0 filepath로 현재 저장되어 있는 pcm파일 경로를 넘겨주시면 됩니다.

upskyy commented 2 years ago

issue close 하겠습니다.