초음파 마이크에서 라이브 오디오 스트림을 분할합니다.

초음파 마이크에서 라이브 오디오 스트림을 분할합니다.

초음파를 마이크로 녹음해서 나누어서 이조된 소리를 듣고 싶어요. 일반 마이크로 테스트를 시작했습니다.

지금까지 나는 sox와 Rec and Play를 시도했습니다. 작동하지만 지연 시간은 2초입니다.

rec -r 48000  -c 1 -t wav - pitch -1000  | play -t wav -

이 회선을 개선하고 대기 시간을 줄이려면 어떻게 해야 합니까?

내 오디오 설정은

 # API: ALSA v: k6.1.27-gentoo status: kernel-api
 # Server-1: PulseAudio v: 16.1 status: active

답변1

선택한 매개변수화의 경우 대량의 입력이 통과하기 전에 출력을 제공하는 것은 수학적으로 불가능합니다.

피치 변환(== 주파수 분할)에는 리샘플링 필터와 시간 스트레칭 필터가 필요하므로 이러한 필터에는 다음이 있다고 생각하는 것이 직관적입니다.그룹 지연따라서 인과 관계로 인해 입력 신호와 출력 신호 사이에 상당한 지연이 발생하게 됩니다. 그것은 sox문제가 되지 않습니다. 그것은 단지 수학일 뿐입니다.

솔루션에는 다음이 포함됩니다.

  • 덜 과감한 전환 사용
  • 훨씬 더 높은 입력 샘플링 속도를 사용하세요.
  • 피치 이동(== 크로스오버)을 수행하지 말고 주파수 변환과 같은 다른 작업을 수행하십시오.

Linux/Unix/tool ​​지식은 여기서 도움이 되지 않습니다.

문제는 실제로 출력 샘플링 속도에서 큰 피치 변경을 시도한다는 것입니다. Nyquist 이유로 인해 초음파 레코더가 이미 더 높은 샘플링 속도에서 작동하고 있어야 하므로 실제 응용 프로그램에서는 이 형식에서는 문제가 발생하지 않을 수 있습니다. .

관련 정보