웹사이트 검색

과학적 오디오 처리, 2부 - Octave 4.0과 함께 Ubuntu를 사용하여 오디오 파일에서 기본적인 수학적 신호 처리를 수행하는 방법


이 페이지에서

  1. 신호 추가\n
    1. 1단계: 서로 다른 주파수의 두 신호 생성(ogg 파일)\n
    2. 2단계: 두 신호 추가\n
    3. 3단계: 두 개의 실제 신호 추가(두 개의 음악 트랙이 있는 예)\n

    1. 결과 제품 신호의 플롯\n
    2. 기본 주파수 차이가 큰 두 신호를 곱한 그래픽 효과(변조 원리)\n

    이전 튜토리얼에서는 오디오 파일을 읽고, 쓰고, 재생하는 간단한 단계를 보았습니다. 코사인 함수와 같은 주기 함수에서 오디오 파일을 합성하는 방법도 보았습니다. 이 튜토리얼에서는 신호를 추가하고, 신호를 곱하고(변조), 몇 가지 기본 수학 함수를 적용하여 원래 신호에 미치는 영향을 확인하는 방법을 살펴봅니다.

    신호 추가

    두 신호 S1(t) 및 S2(t)의 합은 신호 R(t)를 생성하며 그 값은 임의의 시점에서 해당 시점에 추가된 신호 값의 합입니다. 다음과 같이:

    R(t)=S1(t) + S2(t)

    Octave에서 두 신호의 합을 다시 생성하고 그 효과를 그래픽으로 확인합니다. 먼저 서로 다른 주파수의 두 신호를 생성하여 합산 결과 신호를 확인합니다.

    1단계: 서로 다른 주파수의 두 신호 생성(ogg 파일)

    >> sig1='cos440.ogg';                  %creating the audio file @440 Hz
    >> sig2='cos880.ogg';                  %creating the audio file @880 Hz
    >> fs=44100;                           %generating the parameters values (Period, sampling frequency and angular frequency)
    >> t=0:1/fs:0.02;
    >> w1=2*pi*440*t;
    >> w2=2*pi*880*t;
    >> audiowrite(sig1,cos(w1),fs);        %writing the function cos(w) on the files created
    >> audiowrite(sig2,cos(w2),fs);

    여기서는 두 신호를 모두 플로팅합니다.

    신호 1의 플롯(440Hz)

    >> [y1, fs] = audioread(sig1);
    >> plot(y1)

    신호 2의 도표(880Hz)

    >> [y2, fs] = audioread(sig2);
    >> plot(y2)

    2단계: 두 개의 신호 추가

    이제 이전 단계에서 생성된 두 신호의 합을 수행합니다.

    >> sumres=y1+y2;
    >> plot(sumres)

    결과 신호의 플롯

    옥타버 효과

    옥타버에서 이 효과가 제공하는 사운드는 음악가가 연주하는 음을 원래 음과 결합하여 낮은 옥타브 또는 높은 옥타브(프로그래밍된 대로)로 에뮬레이트하기 때문에 특징적입니다. 즉, 두 개의 음이 나타납니다. 동일하게 들립니다.

    3단계: 두 개의 실제 신호 추가(두 개의 음악 트랙이 있는 예)

    이를 위해 Gregorian Chants(음성 샘플링)의 두 트랙을 사용합니다.

    아베마리아 트랙

    먼저 Avenaria 트랙을 읽고 플로팅합니다.

    >> [y1,fs]=audioread('avemaria_.ogg');
    >> plot(y1)

    찬송가 트랙

    이제 찬송가 트랙을 읽고 구성합니다.

    >> [y2,fs]=audioread('hymnus.ogg');
    >> plot(y2)

    아베마리아 + 찬송가 트랙

    >> y='avehymnus.ogg';
    >> audiowrite(y, y1+y2, fs);
    >> [y, fs]=audioread('avehymnus.ogg');
    >> plot(y)

    두 신호의 곱


    두 개의 신호를 곱하려면 합계에 유사한 방법을 사용해야 합니다. 이전에 만든 동일한 파일을 사용합시다.

    >> sig1='cos440.ogg';                  %creating the audio file @440 Hz
    >> sig2='cos880.ogg';                  %creating the audio file @880 Hz
    >> product='prod.ogg';                 %creating the audio file for product
    >> fs=44100;                           %generating the parameters values (Period, sampling frequency and angular frequency)
    >> t=0:1/fs:0.02;
    >> w1=2*pi*440*t;
    >> w2=2*pi*880*t;
    >> audiowrite(sig1, cos(w1), fs);      %writing the function cos(w) on the files created
    >> audiowrite(sig2, cos(w2), fs);
    >> [y1,fs]=audioread(sig1);
    >> [y2,fs]=audioread(sig2);
    >> audiowrite(product, y1.*y2, fs);    %performing the product
    >> [yprod,fs]=audioread(product);
    >> plot(yprod);                        %plotting the product


    참고: 이 제품은 인수 파일에서 값 대 값으로 만들어지기 때문에 피연산자 .*를 사용해야 합니다. 자세한 내용은 Octave의 매트릭스를 사용한 제품 작동 설명서를 참조하십시오.

    결과 제품 신호의 플롯

    기본 주파수 차이가 큰 두 신호를 곱한 그래픽 효과(변조 원리)

    1 단계:

    주파수가 220Hz인 오디오 주파수 신호를 생성합니다.

    >> fs=44100;
    >> t=0:1/fs:0.03;
    >> w=2*pi*220*t;
    >> y1=cos(w);
    >> plot(y1);

    2 단계:

    22000Hz의 더 높은 주파수 변조 신호를 생성합니다.

    >> y2=cos(100*w);
    >> plot(y2);

    3단계:

    두 신호를 곱하고 플로팅합니다.

    >> plot(y1.*y2);

    신호에 스칼라 곱하기

    함수에 스칼라를 곱하는 효과는 해당 범위 및 경우에 따라 위상의 부호를 수정하는 것과 같습니다. 스칼라 K가 주어지면 스칼라에 의한 함수 F(t)의 곱은 다음과 같이 정의됩니다.

    >> [y,fs]=audioread('cos440.ogg');        %creating the work files
    >> res1='coslow.ogg';               
    >> res2='coshigh.ogg';
    >> res3='cosinverted.ogg';
    >> K1=0.2;                                %values of the scalars
    >> K2=0.5;
    >> K3=-1;
    >> audiowrite(res1, K1*y, fs);            %product function-scalar
    >> audiowrite(res2, K2*y, fs);
    >> audiowrite(res3, K3*y, fs);
    >> plot(y)

    진폭이 0.2 감소한 신호 플롯

    >> plot(res1)

    진폭이 0.5 감소한 신호 플롯

    >> plot(res2)

    위상이 반전된 신호 플롯

    >> plot(res3)

    결론


    대수 합, 곱, 스칼라에 의한 함수 곱과 같은 기본 수학 연산은 스펙트럼 분석, 진폭 변조, 각도 변조 등 고급 연산의 중추입니다. 다음 튜토리얼에서 , 우리는 그러한 작업을 수행하는 방법과 오디오 신호에 미치는 영향을 볼 것입니다.