2010-08-24 5 views
0

VB.NET으로 작성하려고하는 프로그램을 도와 줄 수 있기를 바랍니다.WMA 스트림의 버퍼에서 오디오의 무음을 감지하는 방법은 무엇입니까?

인터넷을 통해 지속적으로 스트리밍되는 표준 WMA 스트림이 있습니다. 이 오디오를 스트리밍 할 응용 프로그램을 작성하고 '침묵'기간을 찾습니다. 침묵을 감지하면 이벤트를 실행합니다.

무음은 3 초의 제로 레벨 오디오로 정의됩니다. 스트림은 계속 기술적 인 의미로 진행되지만 가청 소음이 없습니다.

그러나 '버퍼'에있는 동안 침묵을 감지하기를 원합니다. 즉, 사용자는 프로그램이 거기에 있음을 감지하기 전에이 묵음을 듣지 않습니다.

오디오는이 묵음을 분석 할 때 멈추지 않아야합니다. 오디오를 계속해서 사용자에게 계속 재생해야합니다.

BASS 나 dot net 플랫폼에 내장 된 Windows Media 확장과 같은 적합한 API를 사용해도됩니다.

감사합니다.

답변

0

글쎄, 나는 내 제품에서 정확히 이것을하고있다. 여러 개의 인터넷 오디오 스트림을 캡쳐하여 PCM으로 디코딩 한 다음, 다양한 분석을 수행하여 그 중 하나가 무음 감지이다. 그런 다음

http://windowsmedianet.sourceforge.net/

을 IWMReader를 사용하고 당신을 위해 PCM 데이터를 제공합니다 OnSample 콜백 : 당신이 스스로 뭔가를 만들려면

, 여기에서 .NET 용 Windows Media 형식 SDK를 사용합니다.

그런 다음 작은 버퍼의 최대 입력 레벨을 계산하고 3 초 동안 해당 레벨을 확인한 다음 임계 값보다 낮 으면 이벤트를 시작하십시오.

1

PCM 데이터가있는 경우 평균 몇 개의 샘플을 취할 수 있으며 임계 값보다 낮 으면이를 고려해야합니다. 압축되지 않은 데이터에 액세스 할 수있는 오디오를 재생하는 중이라고 가정합니다.

불행히도 WMA 코덱의 세부 사항을 모르지만 가장 쉬운 방법은 몇 가지 샘플의 평균을 취하는 것입니다.

관련 문제