[vDSP] [신호 처리] 오디오 오디오 분석에 대한 10가지 전략 분석 02

오디오 오디오 분석의 길 10개 분석 02


지난번에는 Cepstrum을 찾는 곳에서 5단계까지 썼다.
이번에는 6단계 이후다.

복습 절차

  • 오디오 데이터에서 FFT 크기에 해당하는 데이터 가져오기
  • 창 함수 가하기
  • FFT
  • 대수 간격
  • iFFT
  • 실행
  • 전치하여 낮은 Quefrency와 높은 Quefrency
  • 를 분리한다.
  • 다시 FT가 낮은 Quefrency를 통해 대중 망토 성분
  • 획득
  • 다시 FFT 고Quefrency를 통해 주파수 성분 획득
  • 6단계 덮개 루프


    iFFT를 통해 획득한 CPT를 대수 간격을 두고 획득한 CPE를 전환합니다.여기서 이른바 리턴 링이란 Cepstrum에 대한 필터링이다.
    또한 Quefrency는 Centers 영역의 Freequency를 나타냅니다.
    간단한 스펙트럼 필터이전 글를 참고하세요.
    이름은 다르지만 요령은 같다.
    Cepstrum은 다음과 같습니다.

    Cepstrum의 가로축은 Quefrency(ms.)입니다.Quefrency는 가로폭이 1.0이라고 생각하기 때문에 종이 상자 번호의 역수에 따라 주파수를 얻을 수 있다.
    음성 신호의 폭스바겐 성분은 Cepstrum의 낮은 Quefrency 부분에 포함된다.우선 처음 20병만 뽑는다.
    후진 루프의 경우 FFT 전체 크기의 데이터를 뒤집어야 합니다.
    셉스트럼은 선이 대칭적이기 때문에 시작한 20칸만 덮을 때 마지막 20칸도 마찬가지로 덮는다.
    낮은 Quefrency 성분과 높은 Quefrency 성분을 저장하는 구역을 확보하고 각각ceptorm의 값을 복사합니다.사이즈는 fftsize 점.
    main.c
    float *liftering_low = malloc(sizeof(float)*fft.fftsize);
    float *liftering_high = malloc(sizeof(float)*fft.fftsize);
    memcpy(liftering_high,cepstrum,fft.fftsize*sizeof(float));
    memcpy(liftering_low,cepstrum,fft.fftsize*sizeof(float));
    
    vDSP_vclr () 는 지정한 데이터 영역에 0을 대입합니다.
    첫 번째 매개변수에 포인터를 입력하고 두 번째 매개변수에 정책을 입력하고 세 번째 매개변수에 데이터 길이를 입력합니다.
    main.c
    //low
    vDSP_vclr(&liftering_low[20],1,(fft.fftsize-40));
    //high
    vDSP_vclr(liftering_high,1,20);
    vDSP_vclr(&liftering_high[2028],1,20);
    
    결과는 낮은 Quefrency 섹션의 Cepstrum(FFT 전체 크기 선 대칭)

    높은 Quefrency 섹션의 Cepstrum(FFT 전체 치수 선 대칭)

    후진 고리는 바로 여기에 있다.

    STEP 7,8 FFT 고저Quefrency를 통해 대중 망토 성분 획득


    변환 루프를 통해 분리된 CPE strum을 다시 스펙트럼으로 복원합니다.
    iFFT에서 Cepstrum을 선택했기 때문에 원상태로 복원하려면 FFT를 해야 합니다.
    상단 덮개 고리에 FFT를 하는 경우 창틀을 진행하지 않습니다.
    하지만 도서관에서 녹인 FFT(斷斷T)에는 창문이 걸려 있었다.음...나는 패배를 인정했다!
    방법이 없기 때문에 vDSP의 FFT 함수를 사용합니다.말은 그렇지만 이미 두 줄을 완성했다.
    main.c
    //low quefrency
    vDSP_ctoz( ( COMPLEX * ) low_quefrency, 2, &splitComplex, 1, ffthalfsize );
    vDSP_fft_zrip(kefftSetup, &splitComplex, 1, log2n,FFT_FORWARD);
    
    main.c
    //high quefrency
    vDSP_ctoz( ( COMPLEX * ) high_quefrency, 2, &splitComplex, 1, ffthalfsize );
    vDSP_fft_zrip(kefftSetup, &splitComplex, 1, log2n,FFT_FORWARD);
    
    덮개 고리 뒤의 스펙트럼은 Commplex형의 실수 부분을 사용합니다.
    실수 부분을 그릴 때 다음과 같다.
    low quefrency(littering 20): 대중 망토 성분

    주파수 성분

    여기서 나는 대수 철자와 비교할 것이다.


    위 두 장의 그림에서 보듯이 대중 망토 성분은 대수 스펙트럼의 윤곽을 대표한다.최초의 세 산의 봉우리를 얻어 대중의 망토 성분으로 삼다.
    그럼 돌림판의 값을 바꿔 보세요.
    지금 20병으로 갈아타세요.
    그리고 50칸, 100칸, 200칸을 차례로 늘려 결과를 그려 보세요.
    low quefrency (littering 50bin)

    low quefrency (littering 100bin)

    low quefrency (littering 200bin)

    그림에서 보듯이 전환환의 위치를 늘리면 고주파 성분이 증가하고 그 결과 윤곽은 대수 간격과 비슷하다.

    총결산


    이상에 따라 소리 신호에서 대중 망토 성분과 주파수 성분으로 분해할 수 있다.공진봉을 분석함으로써 모음의 종류를 판정할 수 있다.폭스바겐 망토 성분을 추출하는 방법으로 LPC 분석법 등도 있다.
    주파수 성분에 따라 대중 망토 성분이 결합돼 소리 합성도 가능하다.
    또 폭스바겐 망토 정보를 우편 척도에 따라 압축해 데이터량을 줄이는 방법도 있다.

    좋은 웹페이지 즐겨찾기