Git Product home page Git Product logo

Comments (17)

jymsuper avatar jymsuper commented on June 15, 2024

안녕하세요. 혹시 verification 결과가 test라고 나오는 건가요?
2019_LG_SpeakerRecognition_tutorial.pdf 파일을 보시면 결과 창이 어떻게 나오는지 제가 수록해놓았는데 비교해보시면 좋을 것 같습니다. 화자의 이름이아니고 test라고 뜬다고 말씀하시는걸보면 identification 말씀하시는건가 싶기도한데, 조금만 더 자세히 알려주실수있나요?
두번째 에러메시지의 경우는 제가 처음보는 문구인데.. 일단 epoch1 자체는 진행이되서 훈련 loss 등이 print되는 것인가요?
가능하시다면 두 경우 모두 출력 결과 사진을 보내주시면 제가 파악하기 편할 것 같습니다.

from speakerrecognition_tutorial.

lee0520-art avatar lee0520-art commented on June 15, 2024

깃허브참고
깃허브참고(identification)
깃허브참고(verification)
위에서부터(train,identification,verification)순입니다. 감사합니다

from speakerrecognition_tutorial.

jymsuper avatar jymsuper commented on June 15, 2024
  1. 'UserWarning' 관련해서는 아마 버젼 문제이지 않을까 싶은데요. 저도 처음 보는 문구라 자세히는 모르겠으나, 훈련 loss 및 acc가 잘 변화하는거로 보아 큰 문제는 없을 것 같습니다.
  2. test라고 나오는건 아마 디렉토리 설정이 잘못되어 있을 것 같은데요. verification 코드에서 test_dir 및 test_speaker가 알맞게 설정되어있는지 확인하셔야 될 것 같습니다. 추가로 verification.py 파일에 보시면 perform_verification 함수가 있는데, 여기서 test_filename라는 변수를 print해보면 뭐라고 출력되는지 확인해주시면 좋을 것 같습니다.

from speakerrecognition_tutorial.

lee0520-art avatar lee0520-art commented on June 15, 2024

답변 감사합니다
깃허브 참조 (위치)
추가적으로 여쭤볼것이 있는데 주소는 이런식으로 작성하는것이 맞나요? 이렇게 하니 에러가 뜨긴 뜹니다.

from speakerrecognition_tutorial.

jymsuper avatar jymsuper commented on June 15, 2024

네 맞습니다. train.py에서 main()을 보시면, log_dir이 있는데 checkpoints가 저장되는 곳입니다. enroll.py의 main()을 보시면 embedding_dir이 있는데 speaker embedding들을 저장하는 곳입니다.
지금 윈도우에서 실험하시는 건가요? verification.py의 perform_verification 함수를 보시면, test_spk = test_filename.split('/')[-2].split('_')[0] 이 부분에서 '/'를 os.sep 혹은 '\'로 바꿔주시면 될 것 같습니다. 저는 우분투만 고려해서 경로명을 나눌 때 '/'로 나누는거라 가정했는데, 윈도우까지 포함하려면 os.sep으로 바꿔주시는게 좋을 것 같습니다. identification.py도 마찬가지구요

from speakerrecognition_tutorial.

lee0520-art avatar lee0520-art commented on June 15, 2024

네 맞습니다 현재 윈도우에서 코드를 실행시키고 있습니다.
덕분에 결과값을 얻기까지는 진행되었어요 정말 감사합니다.
이제 추가적으로 변경을 해보면서 시도해볼것들이 조금 있을까요?

from speakerrecognition_tutorial.

jymsuper avatar jymsuper commented on June 15, 2024

README.md의 4. Change other options에 적어놓았습니다.
혹은 2019_LG_SpeakerRecognition_tutorial.pdf 파일의 제일 마지막 쪽에 위치한 '개별 실습'을 참고하셔도 좋을 것 같습니다.

from speakerrecognition_tutorial.

lee0520-art avatar lee0520-art commented on June 15, 2024

추가적으로 제가 하고 싶은것은 제가 녹음을 한 음성이나 현재 logfbank_nfilt40 폴더 안 train 파일에 있는 많은 화자들을 추가시키는 것입니다. 다른 질문글을 봣는데 test 폴더안에 임의의 화자 폴더를 만들고 거기에 enroll.p파일을 만들라고 하셧는데 그 과정은 어떻게 하는건가요?
그리고 이 train
캡처
폴더 안에 있는 것이 이용되는것이면 수정날짜가 바껴야하는데 작년 12월 로 고정되어 있어서 이건 사용하는 것이 아닌가요?

from speakerrecognition_tutorial.

jymsuper avatar jymsuper commented on June 15, 2024

우선 READMD에 적혀있는 것처럼 python_speech_features 라이브러리를 이용하여 feature를 추출합니다.
그런 다음 아래와 같은 방식으로 ".p" 형식으로 저장합니다.

import pickle

speaker_label = filename.split('/')[-3]
feat_and_label = {'feat':feature, 'label':speaker_label}

with open(output_filename, 'wb') as fp:
pickle.dump(feat_and_label, fp)

혹시 동작을 안한다면, python 코드를 이용하여 ".p file" 저장하는 법을 구글링해보시면 될 것 같습니다.

훈련 파일들은 train 폴더에 저장되며,
등록 및 테스트 파일들은 test 폴더에 저장됩니다. train 폴더안에 있는 폴더들 (ex. 084F2102) 등은 화자 id에 대응됩니다.
따라서 훈련 화자를 추가하고 싶으시다면 train 폴더 안에 '화자명' 폴더를 생성하시고, 그 안에 ".p file"로 feature를 저장하시면 될 것 같습니다. 084F2102 폴더 등을 직접 클릭해보시면 어떤 식으로 파일이 구성되어 있는지 확인할 수 있습니다.

from speakerrecognition_tutorial.

lee0520-art avatar lee0520-art commented on June 15, 2024

주신 코드 덕분에 wav 파일을 .p파일로 변경해서 저장하는것 까지 하였습니다. 그걸 이용해서 제가 직접 여러사람의 목소리를 녹음을 하여 컴퓨터에 wav파일로 생성하고 그것을 .p파일로 변환해서 train에 화자를 추가를 하여 train.py를 실행 시키는 순간 아래와 같은 오류가 떳습니다.
깃헙참고
그리고 추가적으로 train의 파일의 화자들의 이름들의 의미도 의문이고, 추가할때 이름은 무엇으로 지어야할지도 모르겟습니다. 그 폴더 안에 각자 들어가있는 수많은 .p파일은 전부다 짧은 wav파일을 변환한 것인지 여쭤보고 싶습니다.
저는 추가한 화자같은 경우는 각자 enroll용, test용 각각 두개씩만 만들었습니다. 그리고 이름은 그냥 제가 앞에꺼를 참고해서 임의로 적었습니다.
깃헙참고2
답변 주시면 감사하겟습니다.

from speakerrecognition_tutorial.

jymsuper avatar jymsuper commented on June 15, 2024

화자 이름은 영어랑 숫자로 이루어지기만하다면 아무렇게나 지으셔도 상관없습니다. train 폴더의 화자명에서 가운데 M이들어가면 남성이고, F가 들어가면 여성인데 편의상 이렇게 지은 것이지 상관은 없습니다. 제가 업로드한 폴더 중 'test_wavs'라는 폴더가 있는데 그 폴더를 확인해보시면 될 것 같습니다. 그 안에 있는 enroll.wav, test.wav를 이용하여 feature 추출한 파일들을 각각 enroll.p, test.p로 저장한 것입니다. 따라서 .p파일들은 서로 다른 wav파일들을 변환한 것이 맞습니다.
제가 위에서 말씀드린 것처럼,

feat_and_label = {'feat':feature, 'label':speaker_label}

with open(output_filename, 'wb') as fp:
pickle.dump(feat_and_label, fp)

와 같은 방식으로 feature와 label을 둘다 저장하신 것 맞나요? feat이라는 이름으로 feature를 저장하고, label이라는 이름으로 label을 저장하셔야합니다.

from speakerrecognition_tutorial.

lee0520-art avatar lee0520-art commented on June 15, 2024

위에 주신 코드에서 speaker_label은 화자의 이름이 되어야하는건가요? 저장할때 speaker_label이 파일명+'.p'가 되는건가요?
enroll.p,test.p 이렇게 두가지 만들었구요 test_wav에 있는 파일 시간이 대략 14~16초인걸 생각해서 15초로 녹음시간을 맞춰서 진행했습니다.
근데 그럼 제가 feat_logfbank_nfilt40에 있는 test폴더에 있는 화자는 따로 train할때 추가해서 따로 안해도 되는건가요? 그러고 보니 지금 test에 원래 있던 화자들은 train폴더 화자 목록에 없었던것같네요.
제가 생각한건 테스트용에있는 화자들도 train을 다 진행해야 test가 수행이 되는걸로 생각하고 있었습니다.
말씀대로 해보니 결과가 이렇게 나오는데
깃헙참고3
깃헙참고4
970M5201은 제가 제 목소리를 녹음하는데 대사를 다르게 해서 두가지 추가한것입니다.
결과를 보시면 verification 할땐 enroll speaker,test speaker를 970M5201로 했을때만 accept가 떠서 잘되는데 .
identification할땐 엉뚱하게 다른 화자가 뜨고 일치도도 0.64로 엄청 낮은걸 확인할수 있었습니다. 제가 녹음후 따로 잡음 처리는 하지않았는데 따로 해봐야할까요?

from speakerrecognition_tutorial.

jymsuper avatar jymsuper commented on June 15, 2024

네. speaker_label이 화자명입니다.
그리고 폴더명이 화자명이므로, 폴더명+.p가 될 것 같습니다.
train폴더는 훈련용 데이터고, test폴더는 테스트용 데이터이므로 서로 별개입니다.
따라서 test 폴더에 있는 화자를 train할때 추가할 필요가 없으며, 추가해서도 안됩니다.
훈련(train) 과정을 통해 모델(resnet)의 파라미터가 학습되어 저장되며, 그 결과가 model_saved 폴더에 저장됩니다.
잡음이 아주 심하지 않다면 잡음의 영향이라기보다는... 모델 사이즈 및 훈련 데이터의 부족 때문이지 않을까 싶습니다. 제가 올려놓은 훈련 데이터는 소량이며, 모델 사이즈도 상당히 적게 설정되어있으므로 일반화 능력이 부족한 상태입니다. 따라서 훈련 데이터와 많이 이질적인 테스트 데이터가 들어올 경우 잘 동작하지 않을 수 있습니다.

from speakerrecognition_tutorial.

lee0520-art avatar lee0520-art commented on June 15, 2024

그러면 정확성을 높이기 위한 방법은 없을까요?
train에 폴더를 추가하여 정확도를 높이는건 가능한가요? 아니면 readme에도 나와있듯이 hyperparameter를 바꾸는 방법으로 (val_ratio조정,epoch갯수 변경)을 통해서 최적의것을 찾으면 일치도가 증가할까요?

from speakerrecognition_tutorial.

jymsuper avatar jymsuper commented on June 15, 2024

훈련 화자 수 및 데이터를 증가하고, 그에 맞게 모델 사이즈도 키우면 성능이 향상됩니다

from speakerrecognition_tutorial.

lee0520-art avatar lee0520-art commented on June 15, 2024

훈련 화자 수를 증가시켜보고 싶은데 현재 train에 들어있는 밑에 사진과 같은 수많은 파일들은 어떤것인가요? wav파일을 .p로 변환한것인가요? 이것의 type을 확인해보니 dict 라고 되어있었습니다.
깃험참고5
train에 내용을 추가하려면 이거와 비슷한 파일을 넣어야 되지않나요?

from speakerrecognition_tutorial.

jymsuper avatar jymsuper commented on June 15, 2024

폴더 및 파일에 대한 설명은 2019_LG_SpeakerRecognition_tutorial.pdf에 자세히 설명하였으니 참고 부탁드립니다.
그리고 위에서 말씀드린 것처럼

feat_and_label = {'feat':feature, 'label':speaker_label}

with open(output_filename, 'wb') as fp:
pickle.dump(feat_and_label, fp)

와 같은 방식으로 dictionary를 저장한 것이 .p 파일들입니다.

from speakerrecognition_tutorial.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.