2017-03-28 5 views
1

mcisendstring을 사용하여 무음 기간 (마이크 입력 없음)에 도달하면 녹음을 중지하고 싶습니다. 나는 타이머가 포함될 것이라는 것을 이해한다. 그래서 x 초 후에 수표를 만들어야하지만 정확히 확인해야 할 것은 무엇인가?마이크에서 무음 감지

현재 내가 사용 기록 :

i = mciSendString("record capture", Nothing, 0, 0) 

감사합니다.

+1

진폭 데이터를 푸리에 변환하여 주파수를 얻고 주파수가 많지 않은지 확인 했습니까? –

+0

Fourier Transform은 솔직히 말해서이 작업과 관련이 없습니다. 친절하게도 추천서를 제안 해 주시겠습니까? 고마워. – NoChance

+1

샘플링 속도, 데이터 형식, 많은 것들이 도움이 될 수 있지만 필터를 사용하여 백그라운드 노이즈를 제거하려고 할 수 있습니다. 나는 레퍼런스가 없다. –

답변

2

녹음이 진행되는 동안 녹음 버퍼에 액세스 할 수있는 오디오 라이브러리가 필요합니다. MCI가 그렇게 할 것이라고 생각하지 않습니다. 오디오 라이브러리가 더 뉘앙스가있는 것처럼 보입니다.

여기에 StackOverflow question that lists several digital audio libraries에 대한 링크가 있습니다.

NAudio과 같은 오픈 소스 .NET 프레임 워크를 사용해보십시오.이 프레임 워크는 이미 많은 작업을 수행했습니다.

녹음을하려면 대개 기본 버퍼와 필요할 때 보조/영구 버퍼를 할당하는 콜백 (예 : 녹음 시간이 길어지고 길어질수록)을 할당해야합니다. 침묵을 탐지하기 위해, 기본 버퍼에 바이트가 추가 될 때 일종의 신호 처리를 수행해야합니다.

"신호 처리"는이 경우 매우 간단 할 수 있습니다. 이동 평균 (기본적으로 저역 통과 필터)을 사용하고 평균 진폭이 녹음 시작 부분의 묵음 중에 조정될 수있는 특정 임계 값 아래인지 결정할 수 있습니다 (이는 적절한 기준을 제공 할 것입니다).

고급 처리는 주변 소음 또는 라인 노이즈 (예 : 가정용 AC로 인한 윙윙 거리는 소리를 제거하기 위해 60Hz 필터)를 필터링하려고 시도합니다. 당신이 원한다면 이것으로 꽤 깊이 갈 수 있습니다.

+0

자세한 설명을 가져 주셔서 감사합니다. 삶이 더 쉬워지기를 바랬지 만 결코 그렇게되지 않았습니다 ... 다시 한번 감사드립니다. – NoChance