Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

굴착기 내부 소음 dB과 비슷한 데시벨의 소음에서 STT 가 어떻게 동작하는지 확인 #18

Open
Moon-janggon opened this issue May 26, 2023 · 9 comments
Assignees
Labels
documentation 문서 작업

Comments

@Moon-janggon
Copy link
Contributor

Moon-janggon commented May 26, 2023

소음속인식테스트.txt

테스트 환경
Yotube에서 공사장 현장 영상의 소리를 60dB~70dB 사이로 설정한 환경에서 진행하였습니다.
명령어 집합중 같은 넘버에서 하나씩을 선택해 버그없이 기동된 10번의 테스트를 통해 정확도 판단을 진행하였습니다.
위 파일은 결과를 기술한 자료입니다.

버그 증상
종합적으로 테스트를 진행 해보았을때
버그들로 인한 진행에 어려움이 있었습니다.
현재 크게 발생하는 버그는 다음과 같습니다.

1.'hey volvo' 기동어 인식후 'yes' 대답이 나온 뒤 바로 꺼지는 증상

  • 테스트 상황에서 가장 많이 발생하는 버그로 진행에 어려움이 큰 주요 버그입니다.

2.yes대답이 두번 나오면서 꺼지는 증상
-위와 비슷한 증상으로 yes 대답이 두번 나오면서 꺼지는 증상이 발생하는데
제 개인적인 견해로는 기동어 인식 단어를 여러가지로 설정하면서 충돌이 발생하는게 아닌가 생각합니다.

3.음성인식 tts에 'yes'대답이 들어가는 증상
-txt자료에서도 나타나 있듯 음성인식된 명령어에 기기에서 나오는 기동어 인식 대답인 'yes' 가 포함되는 증상이 발생했습니다.
yes는 현재 저희 앱에서 사용자가 말할 상황은 없으므로 필터링을 한다면 인식되지 않게 할 수 있을것으로 보입니다.

눈에 띄는 버그는 크게 3가지로 수정이 필요해 보입니다.

테스트 결과 분석
각 명령어 마다 정확도의 차이가 큰 편으로 나타났고
동일한 사용자가 일관된 dB로 명령어를 사용했음에도 같은 명령어 집합에서 tts가 다양하게 나타났습니다
이는 소음이 없는 상황에서 진행 했을때와는 큰 차이가 있는 것으로 나타나
소음 상황에서 나온 stt들의 문장을 학습시킬 필요성이 확인됩니다.

@jujuwon @ParkJeongmiin @KDW03 확인 해주시고 피드백 부탁드립니다.

@Moon-janggon Moon-janggon added the documentation 문서 작업 label May 26, 2023
@Moon-janggon Moon-janggon self-assigned this May 26, 2023
@KDW03
Copy link
Contributor

KDW03 commented May 26, 2023

@Moon-janggon님 고생하셨습니다
1,2 번은 확인해보고 수정해보겠습니다.
3번은 wakeup_word_detection 후 playback time 조정을 통해 쉽게 해결할 수 있을 것 같습니다.

소음속에서 명령어 정확도 향상

stt를 이용해야하는 상황이기 때문에 모델을 텍스트 처리 모델로 설계하였습니다
따라서 소음속의 음성데이터를 활용한 해결을 어렵습니다.
생각해본 방안으로는 소음속에서 추출되는 잘못된 텍스트를 구해서 학습시키는 방향으로 진행해보는게 좋을 것 같은데
혹시 이전에 진행하셨던 Random Word Delete 데이터 증강 기법 코드와 유사하게
Random한 단어 사전을 구해서
Random Word Replace로 문장의 단어를 랜덤으로 하나씩 다른 단어로 바꿔서 새로운 문장을 만들거나
Random Word Append 로 기존 문장에서 새로운 단어를 새로운 위치에 아예 하나 추가해줘서 새로운 문장을 만들어 주시는 것 가능하실까요?

이러한 방법이 소음속에서 정확도를 높이는 방법으로 효과가 있을 것으로 예상됩니다.

학습 데이터가 추가로 확보가 된다면 Epoch 수를 현재 50으로 진행했는데 에포크수를 조정해서 정확도를 높이는 방안도 진행해보겠습니다.

@jujuwon
Copy link

jujuwon commented May 29, 2023

고생하셨습니다 !
우선 도우 학생 말처럼 소음속 추출되는 텍스트를 이용해서 학습 시키는 것 외에는 별다른 방안이 없을 듯 싶습니다 !
@Moon-janggon 추가적으로 소음 속 텍스트 추출해주실 수 있는지, 가능하시다면 그대로 진행해주시면 좋겠습니다 !

@Moon-janggon
Copy link
Contributor Author

@jujuwon @KDW03
도우님이 말씀해주신 replace기능을 생각해 보았는데 이 기능은 대체 단어와 원 단어가 발음이 유사한 단어가 아니라면 효과적이진 않을거라 생각 됩니다. 따라서 명령어들과 유사한 발음을 가진 단어들의 집합이 필요할꺼라 생각됩니다
이 사전이 구축된다면 replace나 append의 기능을 구현할 수 있을거라 생각되기에
단어사전의 구축이 최우선인데
소음속 추출되는 텍스트라 함은 제가 올린 txt파일에 포함된 문장들이 소음속에서 테스트 했을때 나온 stt인데 이 문장들을 의미하는게 맞는것 인지 확인 바랍니다.
맞다면 이 데이터들을 활용해서 단어 사전을 구축하고 소음속 문장 데이터를 생성 하는 방향으로 진행하겠습니다

@KDW03
Copy link
Contributor

KDW03 commented May 31, 2023

@Moon-janggon
stt로 추출된 텍스트를 말하는 것 맞습니다.
이렇게 추출된 텍스트를 학습시키는게 가장 효과적일 것이라 생각되나 이러한 방식으로
하나하나 구하는 것은 어려움이 있을 수도 있으니 유사한 발음의 단어 사전을 구하는 방법도 고려해보세요

@Moon-janggon
Copy link
Contributor Author

@KDW03
rhymezone의 발음이 유사한 단어를 찾아주는 사이트를 활용해
명령어 시트의 단어와 매칭되는 단어 사전을 구축하였고
결과적으로 문장 마다 하나의 단어를 비슷한 발음의 단어로 대체해 문장을 출력하는 알고리즘을 구현하였습니다.
예를들어 "Turn on the Front worklight" 라는 문장을 입력하면
burn on the Front worklight, Turn on the shunt worklight,Turn on the Front work quite등으로 단어가 바뀐 문장들을 출력하는 형식입니다.
초기 목표는 burn on toff shunt walk quite 같이 모든 단어들이 바뀌는 문장 까지도 출력을 하는것 이였으나 기술적으로 한계가 있었고 실제로 그렇게 구현한다면 경우의 수가 현재 알고리즘에서는 1문장당 약 50개 이상의 문장이 나오는 형식인데 모든 단어들을 바꾸게 된다면 한 문장당 1만개 이상의 파생 문장이 나와 학습 해야될 데이터양이 기하급수적으로 늘어날 것으로 예상되기에 현재 진행방식을 선택하였습니다.

남은 것은 파일에 저장될 형식인데
지난 Random Word Deletion 처럼 index sentence label 형식으로 진행 하면 될지 알려주신다면 맞게 수정하여 공유 드리겠습니다. 각 명령어 문장의 레이블 넘버를 알려주시면 그에 맞게 저장하여 제공할 예정입니다.

@KDW03
Copy link
Contributor

KDW03 commented Jun 3, 2023

@Moon-janggon
레이블 넘버 이전과 동일하게 진행하시면됩니다.

@KDW03
Copy link
Contributor

KDW03 commented Jun 4, 2023

@Moon-janggon
추가로 생각해본 데이터 증강 방법으로 사람이 항상 똑같은 문법으로 명령어를 입력할 것 같다는 생각이 들지 않습니다.
이러한 경우를 보안하면서 데이터를 증강하는 방법으로 한 문장 내 임의의 두 단어의 위치를 바꿔서 새로운 문장을 만들어 내는 방법도 추가로 구현해주시면 좋을 것 같습니다.

추가로 분류 레이블 입니다


Machine_Front_Worklight_On: 0
Machine_Front_Worklight_Off: 1
Machine_Boom_Worklight_On: 2
Machine_Boom_Worklight_Off: 3
Machine_Side_Worklight_On: 4
Machine_Side_Worklight_Off: 5
Machine_Rear_Worklight_On: 6
Machine_Rear_Worklight_Off: 7
Machine_Workmode_ECO: 8
Machine_Workmode_Power: 9
Machine_Workmode_Lifting: 10
Machine_Wiper_On: 11
Machine_Wiper_Off: 12
Machine_Level_Status: 13
Machine_Service_Status: 14
Machine_Operating_Info_Status: 15
Climate_Temperature_Up: 16
Climate_Temperature_Down: 17
Climate_Mode_Auto: 18
Climate_Mode_Manual: 19
Media_Music_On: 20
Media_Music_Off: 21
Media_Radio_On: 22
Media_Radio_Off: 23

@Moon-janggon
Copy link
Contributor Author

@KDW03 넵 우선적으로 유사발음 단어 증강법을 먼저 구현하고 위치를 바꾸는 방법을 진행해보겠습니다. 제가 월/화 가족여행 때문에 시간을 내기가 어려워서 위치 변경 기법까지 구현할 수 있을지는 정확하게 얘기해드리기 어렵지만 될수 있도록 해보겠습니다

@Moon-janggon
Copy link
Contributor Author

similar_sentences.txt

@KDW03 유사 발음 단어 대체 명령어 파일입니다. 약 1600문장의 학습데이터가 만들어 졌습니다.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
documentation 문서 작업
Projects
None yet
Development

No branches or pull requests

3 participants