2011-02-08 4 views
6

저는 앱을 개발 중이며 2 개의 음성을 비교하는 방법이 필요합니다. 음성 인식기는 그 방법이 있지만 (내가 생각하기에) 음성을 먼저 문자열로 변환해야하기 때문에 음성 인식기가 지원하는 언어와는 다른 언어에 적합하지 않습니다 .... 어떤 생각입니까? 오래된 일 전화, 그것은 그냥 설치안드로이드 또는 음성 태그 (음성 명령) API의 voice wav를 비교하십시오.

+0

두 녹음 내용이 동일한 스피커 (음성 인증 또는 화자 식별) 였음을 인식하려고합니까? 아니면 같은 단어가 사용 된 것을 확인하려고합니까? 뭐가 일치하니? 화자의 정체 또는 그가 말한 단어? –

+0

안녕하세요. 어떻게 해결할 수 있니? –

답변

5

이 FFT를 사용하는 것입니다 할 수있는 상대적으로 간단한 방법 중에 이전에 기록 된 음성과 음성 입력을 비교 음성 태그를 수행하는 데 사용되는 것처럼 (고속 푸리에 변환)를 사용하여 원본 WAV 파일의 시간 도메인 데이터를 변환 된 배열의 각 값이 특정 주파수 대역의 상대적인 크기/강도를 나타내는 주파수 도메인 데이터로 변환합니다.

같은 사람이 같은 단어를 두 번 말하면 두 개의 WAV 파일에서 결과 시간 영역 데이터가 수치상으로 매우 다릅니다. 두 WAV 파일을 주파수 영역으로 변환하면 (두 파일의 길이가 약간 다른 경우에도 동일한 크기의 FFT 창을 사용하여) 원본 WAV 파일보다 훨씬 더 유사한 주파수 배열이 생성됩니다.

안타깝게도 Android 용 FFT 라이브러리를 찾을 수 없었습니다.

Signal processing library in Java?

+0

고마워요,하지만 정말 놀랐어요. 내 오래된 모토폰이 그것을 할 수있는 이유는 무엇입니까?이 새로운 바보 같은 안드로이드는 할 수 없습니다. 나는 단지 내 목소리를 녹음하고 다시 말하고 싶습니다. 나는이 복잡한 일을하고 싶지 않다. 만약 그들이 정확히 똑같은 문제는 없지만, 그것이 근원인지 아닌지를 결정할 많은 알고리즘이있다. 나는 바퀴를 재발 명하고 싶지 않다. – rami

+0

예, Android에 구운 음성 인식 기능이 원하는대로 작동하지 않는 것 같습니다. 제조업체가 실제로 음성 인식을 수행 한 방식에서 멀어지고 있다고 생각합니다. 그 오래된 방법은 특정 음성을 인식하도록 휴대 전화를 "훈련"해야하기 때문입니다. 이것은 물론 당신이 원하는 것입니다,하지만 그것은 심각한 약점으로 여겨져 왔고 아마 아무도 그것을 좋아하지 않는 이유 일 것입니다. – MusiGenesis

+0

MusiGenesis가 옳습니다. 음성 인식을하는 오래된 방법은 장치 자체에 모든 라이브러리 및 처리 소프트웨어가있는 전화였습니다. Androids가 Google에 스트림을 열면 실제로 휴대 전화가 아닌 Google 서버에 '말하고 있습니다.' 그런 다음 서버는 해석을 다시 전화로 보냅니다. 더 정확하고 더 많은 기능을 지원하며 이런 식으로 전화 공간을 절약합니다. 그러나, 당신이하려는 일에 해롭다. 불행한 일이다. : – Brandon

1

아이디어가 spectograms의 목소리의 유사성을 비교한다 : 여기에 몇 가지 Java 기반 라이브러리를 참조하는 질문입니다. 스펙트로 그램의 기능은 강하고 두 소리를 분석하는 데 좋은 참조 인 잡음에 저항합니다. 이 방법을 사용하면 먼저 음색의 특징을 알아야하며 두 개의 스펙트로 그램에서 피쳐를 비교하는 방법을 알아야 할 때보다는 패턴 인식을 참조하십시오.

이 api http://code.google.com/p/musicg-sound-api/은 자바로 작성되었으며 Android에서 사용할 수 있습니다. 그것은 파 스펙트로 그램을 포착합니다.