Tensorflow Aduio Recognition 기행 2

Audio Recognition 과 관련된 모든 튜토리얼을 마쳤다.
이젠 실시간 음성인식을 구현할 수도 있다.
그런데 주어진 데이터에 비해 인식할 수 있는 단어의 개수가 턱없이 모자르다.
이유를 확인해보니, 역시 알 수 없는 이유로 12개의 단어를 대상으로만
학습을 시킨 모양이다.

이 confusion matrix에 등록이 되어 있는, 'silence'를 포함하는 총 12개의 단어만 인식할 수 있다는 이야기다. 이 단어들은 conv_labels.txt 에 등록이 되어있다.

그러면 conv_labels 의 내용을 수정해서, 남은 단어들-예를 들면 happy, house, one~nine 등등을 추가해주면 되는 것 아닌가? 실행해보았더니 그렇게 쉽게 해결되는 문제는 아니었다.

 질문자가 올렸듯이 따로 원하는 단어들을 대상으로 학습을 시켜줘야 하고, 이것을 바탕으로 분석 결과를 얻어내야 하는 모양이다. 더 큰 문제는 질문자가 이 코드를 돌리다가 에러를 발견하여 질문을 올렸다는 사실이다.

질문의 내용에 따르면 오디오 데이터 중에는 1초보다 짧은 것들이 포함되어 있는 모양이다. 튜토리얼 코드는 학습자료가 정확히 1초일 때만 학습가능하고, 그보다 짧을 경우에는 학습이 불가능하다. 애초에 왜 1초짜리 학습자료를 만들지 않았냐 하면 이 코드가 다음과 같은 링크를 통해 사용자의 참여를 바탕으로 데이터를 수집했기 때문이다.
 https://aiyprojects.withgoogle.com/open_speech_recording

분명히 참여한 사용자들 중에는 1초보다 길거나 짧게 단어를 말한 사람들이 있을 것이고, 1초보다 길 경우 길이를 조정한 모양이지만 1초보다 짧은 경우에는 데이터 길이 수정을 따로 거치지 않은 모양이다.

실제로, 64000여 개의 학습자료 중에서 58000여개 만이 1초 길이이고, 이외는 1초보다 짧다고 한다. 그래서 원하는 단어들을 모두 학습시키는 과정에서 1초보다 짧은 단어를 사용하게 되고, 오류가 발생하는 것이다.

 
이것에 대한 해결방안은 1초보다 짧은 학습자료의 빈공간에 0을 채워 넣는 것이다. 이론적으로는 가능한 일이지만, 실제로 이렇게 하려면 어떻게 해야 하는지 아직 감이 잡히지 않는다.

댓글

이 블로그의 인기 게시물

아두이노 - 안드로이드 블루투스 연결 및 실시간 그래프 표현 (1)

opencv feature matching 으로 월리 찾기

라즈베리3에 텐서플로 설치 & Python 3.6 설치