한국어 음성 -> 텍스트 변환해보기
구글 Speech API가 공개된 지 꽤 오래되었는데, 정말 인식률이 쉬리나 안드로이드 음성인식보다 나을까? 유튜브 음성을 가져다가 주면 이를 분석해서 문맥에 맞도록 텍스트로 번역할 수 있을까? 그보다도 회의나 인터뷰 진행할 때 상대 음성을 그대로 텍스트로 변환만 잘 해주어도 훨씬 기록 작성할 때 편할 텐데.. 하는 생각이 들었습니다. 이런저런 것들이 궁금해서, 한번 해 봤습니다.
구글 Speech API 기능을 검증해보고 어느 수준인지 알아보자.
1) 한국어 인식률이 얼마나 될까?
2) 별도 라이브러리 설치는 최소로(동시에, 프로그래밍 언어도 최소로 적용)
- 만약 아두이노나 라즈베리 파이, 사물 인터넷을 사용하게 된다면 음성 녹음은 별도 모듈을 붙이고 url로만 보내야 하는 상황도 발생할 수 있으니, 이를 감안해본다.
3) 장문(문어체), 단문(구어체) 두 가지로 진행해서 두 유형에 특이점이나 감안할 사항이 있는지 알아본다.
얼마나 제대로 인식하는지? 를 궁금해하실 것 같아 결론부터 이야기드립니다.
최근 읽고 있는 굿워크에서 일부를 낭독했습니다.
녹음한 내용 : EF 슈마허는 이렇게 이야기했습니다. 노동의 세 가지 목적은 첫째는 인간 삶에 꼭 필요하고 유용한 상품이나 서비스를 제공하기 위해서입니다. 둘째는 선한 청지기처럼 신이 주신 재능을 잘 발휘하여 타고난 각자의 재능을 완성하기 위해서입니다. 셋째는 태생적인 자기중심주의에서 해방될 수 있도록 다른 사람들에게 봉사하고 협력하기 위해서입니다.
녹음 파일 : https://storage.googleapis.com/speech-lim/goodwork-kr.flac
결과 : 대부분 잘 표현했지만, 띄어쓰기가 좀 문제입니다. 문장이 길어지니, 문맥을 이해하는데 다소 어려울 정도로 단어 구분이 안되어 있습니다.
한번 치킨 주문을 한다.라고 생각하고 접근해보았습니다.
녹음한 내용 : 치킨 주문할게요. 후라이드 치킨 두 개 하고 양념치킨 하나, 그리고 콜라는 하나만 가져다주셔도 될 것 같아요. 여기 위치는 올림픽공원 평화의 문 부근이고, 만나서 결제할게요.
녹음 파일 : https://storage.googleapis.com/speech-lim/baedal-kr.flac
결과 : 숫자를 말할 때 한글과 아라비아 숫자가 섞이고, 잠시 쉴 때에 문장으로 끊어내는군요. 주문의 주요 맥락을 놓치지 않고 있어서, 인식하는데 큰 무리가 없어 보입니다. 물론 띄어쓰기나 문장부호(쉼표, 마침표)가 없어서 어색한 부분도 있지만, 단문 구어체를 변환하는데 큰 문제없어 보입니다.
1) 한국어 인식률: 띄어쓰기를 제외하고 고유명사나 숫자도 잘 인식하고 있음.
2) 별도 라이브러리 : 다음에 좀 더 상세하게 작성하겠지만, cloud SDK 이외에 추가 설치 없이 실행 가능
3) 장문(문어체), 단문(구어체) : 단문/구어체가 상대적으로 인식하기 쉽다.
추가적으로 소음이 많은 경우, 한국식 영어단어 발음을 얼마나 잘 인식하는지도 검토해보면 좋을 것 같네요.
다음의 순서로 진행해보았습니다.(그 이유는 다음 편에서 기술 요소를 좀 더 상세하게 설명하면서 덧붙여보겠습니다.)
각 단계를 간단하게 설명한다면,
1. 녹음/ 파일로 저장 : 맥북에서 audacity를 통해 FLAC으로 저장.
2. 구글 클라우드 저장 : 구글 Speech API로 분석하는 가장 빠른 방법(사실 quick guide에 있는 내용을 따라 하려면) 구글 클라우드 Storage에 올려놓고 그 url을 전달하는 것.
3. 구글 API 호출 : 드디어 구글 API를 호출한다. 단, 그전에 클라우드 엔진을 가동해야 하고, 관련 세팅을 할 부분들이 일부 존재. 여기서는 curl으로 호출. 상세 내용은 json으로 저장함.(물론, 이렇게 사용한 이유는 quick guide에 나온 내용을 따라 하다 보니.)
4. 텍스트 회신 : json형태로 transcript(내용)과 confidence(확신)을 담아 응답.
입니다. 간단하죠?
다음 편(https://brunch.co.kr/@sunghyunlim/24)에는 기술적으로 준비할 사항, 제가 진행한 내용을 정리해보겠습니다.