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
672 stars 112 forks source link

squeezeformer 모델 학습 및 추론 #226

Open sangheonEN opened 1 month ago

sangheonEN commented 1 month ago

❓ Questions & Help

안녕하세요? 컴퓨터 비전만 하다가 음성인식쪽은 처음인 음성ai어린이입니다. 혼자 음성인식 프로젝트를 맡아 정말 막막하여 이렇게나마 질문을 드립니다. 우선 TUNiB의 김수환님의 유튜브 영상을 보면서 openspeech에 알게되었고, 해당 프레임워크를 활용해서 STT 모델을 개발하려합니다.

제가 활용할 모델은 Squeezeformer 입니다. 또한 모델 성능 목표는 이와 같습니다.

Details

활용 pc 사양 : 3060 rtx, window 10

질문 1. 도메인 지식이 아예 없다보니 상기와 같은 목표를 달성하기에 Squeezeformer의 STT 모델만(언어모델 미적용)을 활용해서 성능을 달성할 수 있을지에 대한 질문을 우선적으로 드립니다.

질문 1-1. 언어 모델을 적용해야한다면, hydra_lm_train.py 소스코드를 활용하여 학습을하고 hydra_train.py 소스코드를 활용하여 STT 모델을 학습을 해야하는 것으로 알고 있습니다. 그런데 혹시 두 모델을 학습한 뒤 통합해서 evaluation하거나 inference 하는 코드는 보이지 않더라구요. 혹시 제가 직접 구현하려면 어떻게 해야할까요? 참고할만한 자료가 있으면 추천 부탁드립니다.

질문 2. Squeezeformer를 학습하는 config file의 파라미터를 알 수 있는 방법이 있을까요? 소스코드에서는 아무런 정보가 제공되지 않는 것 같아서요. EX (https://github.com/openspeech-team/openspeech/blob/main/openspeech/configs/train.yaml)

질문 3. 한국어 데이터셋인 KsponSpeech을 활용하려는데, Annotation 라벨 데이터는 kospeech에서 제공해주신 전처리 코드를 이용해서 Option1 : phonetic transcript형식으로 TEXT를 전처리하려합니다. 그러면 Character-Unit 형식으로 OUTPUT이 나올까요? 또한 squeezeformer 모델의 output은 어떻게 나오는지 궁금합니다.

질문 4. 최종적인 목표는 음성인식 모델을 만든 다음 python script를 통해 실시간 마이크 스트리밍으로 5초간 음성을 인식하여 2초내에 추론된 text를 기반으로한 이벤트 기능을 개발하는 것입니다. openspeech 프레임워크를 활용한다면 이러한 프로젝트 목표를 달성할 수 있을까요?

sooftware commented 1 month ago

안녕하세요. 해당 프로젝트는 현재 중단되어 많이 outdate 한 프레임워크입니다. 2021년 이후 추가 개발이 이루어지지 않고있으므로 2024년인 지금은 다른 프레임워크를 이용하시는걸 추천드립니다.

LM과 음성인식 모델을 결합해서 디코딩하는걸 추가하려고 했으나 메인 개발자인 저랑 하상천님이 바빠서 추가를 못해놓은 상황입니다.

OpenAI의 Whisper, SpeechBrain 등 현재는 이 프레임워크보다 더 좋으면서 편한 툴이 많이 있으니, 한 번 살펴보시면 좋을 것 같습니다 :)

upskyy commented 1 month ago

KsponSpeech로 모델을 쉽게 학습해볼 수 있는 SpeechBrain 코드 를 참고해보시면 좋을 것 같습니다.

sangheonEN commented 1 month ago

수환님, 답변 감사드립니다.

추가적으로 궁금한 점이 있습니다.

  1. 향후에 LM과 음성인식 모델을 결합해서 디코딩하는걸 추가를 진행할 예정이신지 궁금합니다.

  2. whisper, speechbrain에는 LM과 STT 모델을 결합하는 코드를 제공하는지, 한국어 데이터셋으로 파인튜닝을 할 수 있는지 궁금합니다.

  3. STT 모델의 성능이 아래와 같이 나올 수 있을까요?

    • cer : 0.1
    • 추론 속도 : 2초 (5초 음성 입력)
  4. 한국어 STT 모델을 학습하기 위해서는 토크나이저와 같은 개념이 있는데, 한국어 데이터셋에 맞게 좀 전처리 할 수 있는 방법을 알려주는 서적이나 자료들이 있을까요?

  5. 음성인식은 처음이다보니, E2E 모델을 기준으로 전체적인 모델 학습 프로세스를 알려주는 유튜브 강의나 서적이 있을까요?

  6. 데이터 가공 (전처리 방법, 증강 방법, 토크나이저(현재 토크나이저가 뭔지도 정확히 모르는 수준)) -> 학습 모델 선정 및 학습 -> 추론 -> 최적화(추론 속도, 정확도) 이렇게 좀 음성인식 모델을 개발하는데 필요한 내용을 알려주는 자료가 없을까요?

예를들어 ASR 모델 중에 E2E는 음성, 텍스트 WAV PAIR TEXT 데이터만으로도 학습이 가능하다. 왜 그런지에 대한 설명이나 그런것들이죠!

답변 주시면, 정말 도움이 될 것 같습니다.

바쁘신 와중에 답변 감사합니다!

2024년 8월 2일 (금) 오후 1:41, Soohwan Kim @.***>님이 작성:

안녕하세요. 해당 프로젝트는 현재 중단되어 많이 outdate 한 프레임워크입니다. 2021년 이후 추가 개발이 이루어지지 않고있으므로 2024년인 지금은 다른 프레임워크를 이용하시는걸 추천드립니다.

LM과 음성인식 모델을 결합해서 디코딩하는걸 추가하려고 했으나 메인 개발자인 저랑 하상천님이 바빠서 추가를 못해놓은 상황입니다.

OpenAI의 Whisper https://github.com/openai/whisper, SpeechBrain https://github.com/speechbrain/speechbrain 등 현재는 이 프레임워크보다 더 좋으면서 편한 툴이 많이 있으니, 한 번 살펴보시면 좋을 것 같습니다 :)

— Reply to this email directly, view it on GitHub https://github.com/openspeech-team/openspeech/issues/226#issuecomment-2264537235, or unsubscribe https://github.com/notifications/unsubscribe-auth/AQPM73TQFH6AUB4I3UJT3ODZPMEV3AVCNFSM6AAAAABL3ZNIEOVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDENRUGUZTOMRTGU . You are receiving this because you authored the thread.Message ID: @.***>

sooftware commented 1 month ago
  1. 본 프로젝트는 오래됐고, 현재 저랑 메인테이너인 저랑 상천님 모두 바쁘고 최근에는 더 좋은 프레임워크가 많기 때문에 개발이 더 되지는 않을 것 같습니다. (사용자분들이 PR 해주시면 될 수도 있겠지만요)

  2. 이 부분은 직접 살펴보셔야 될 것 같습니다 :)

  3. 이것도 직접 살펴보셔야 될 것 같습니다.

  4. 한국어 STT가 워낙 마이너한 분야여서 서적까지는 모르겠지만, 제가 학생때 정리해놓은 자료 한 번 살펴보시면 도움이 되지 않을까 싶네요.

  5. https://ratsgo.github.io/speechbook/ 한 번 살펴보시면 좋을 것 같습니다. 이 외에도, 음성인식 유명한 논문들을 읽다보면 자연스럽게 이해가 되실거라 생각됩니다.

  6. 위 5번 답변과 같습니다.

sangheonEN commented 1 month ago

답변 정말 감사드립니다.

4번에 답변해주신 정리된 자료를 보면, 특수기호 전처리 및 LABEL TEXT 데이터를 토큰화를 하시는 과정을 상세히 알려주신 것 같습니다.

제가 아직 잘 모르지만, 이 토큰화의 역할이 두 가지인 것 같습니다.

첫째로, STT 모델에 입력되기 전 음성 데이터를 숫자로 인코딩하여 음성, 토큰 숫자를 같이 입력하기 위한 역할 둘째로, STT 모델에서 출력된 토큰 숫자를 활용해 TEXT로 변환하는 역할

질문 1. 제가 생각하는게 맞을까요?

질문 2. 여러가지 자료를 찾아보니 이 토큰화를 학습을 시켜서 만드는 방법도 있어보이던데, 혹시 이러한 자료를 좀 더 상세하게 알 수 있을까요?

질문 3. https://github.com/google/sentencepiece 여기 사이트에서 제공하는 토큰화 방법이 있는데, 이 토큰화 방법은 수환님이 알려주신 정리해놓은자료에 나와 있는 전처리(b/, n/, / .. 등의 잡음 레이블 삭제, 제공된 (철자전사)/(발음전사) 중 발음전사 사용, 간투어 표현 등을 위해 사용된 '/', '*', '+' 등의 레이블 삭제)를 모두 마친 후에 토큰화를 적용하면 될까요?

WHISPER 모델은 토큰화된 언어 사전을 공개해놓진 않았더라구요. 그래서 더욱 더 이 토큰화가 중요하다고 생각이 들어서요.

2024년 8월 12일 (월) 오후 1:57, Soohwan Kim @.***>님이 작성:

1.

본 프로젝트는 오래됐고, 현재 저랑 메인테이너인 저랑 상천님 모두 바쁘고 최근에는 더 좋은 프레임워크가 많기 때문에 개발이 더 되지는 않을 것 같습니다. (사용자분들이 PR 해주시면 될 수도 있겠지만요) 2.

이 부분은 직접 살펴보셔야 될 것 같습니다 :) 3.

이것도 직접 살펴보셔야 될 것 같습니다. 4.

한국어 STT가 워낙 마이너한 분야여서 서적까지는 모르겠지만, 제가 학생때 정리해놓은 자료 https://github.com/sooftware/kospeech/wiki/Preparation-before-Training 한 번 살펴보시면 도움이 되지 않을까 싶네요. 5.

https://ratsgo.github.io/speechbook/ 한 번 살펴보시면 좋을 것 같습니다. 이 외에도, 음성인식 유명한 논문들을 읽다보면 자연스럽게 이해가 되실거라 생각됩니다. 6.

위 5번 답변과 같습니다.

— Reply to this email directly, view it on GitHub https://github.com/openspeech-team/openspeech/issues/226#issuecomment-2283113365, or unsubscribe https://github.com/notifications/unsubscribe-auth/AQPM73UGJEZ4CG4HGWRAVEDZRA6D7AVCNFSM6AAAAABL3ZNIEOVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDEOBTGEYTGMZWGU . You are receiving this because you authored the thread.Message ID: @.***>