전통문화대전망 - 전통 미덕 - 기본_8. 오디오 인코딩 MP3\AAC

기본_8. 오디오 인코딩 MP3\AAC

학습 관련 장 링크:

기본_1. 오디오 및 비디오 학습 프레임워크

기본_2 RBG, YUV, HSV p> 기본_3. 이미지 코딩의 BMP

기본 오디오 개념

기본_5. 오디오 데이터 수집

오디오 인코딩 PCM

기본_7. 오디오 인코딩 WAV

기본_8. 오디오 인코딩 MP3\AAC

mp3 인코딩에 대한 자세한 내용은 다음 링크를 참조하세요.

/p/58df71a19901

AAC는 Advanced Audio Coding의 약어로 1997년에 등장했으며 원래는 MPEG-2 오디오 코딩 기술을 기반으로 했습니다. MP3 형식을 대체할 목적으로 Fraunhofer IIS, Dolby Laboratories, AT&T, Sony 및 기타 회사가 공동으로 개발했습니다. 2000년에 MPEG-4 표준이 발표되었고, AAC는 다른 기술(PS, SBR)을 재통합하여 기존 MPEG-2 AAC와 구별하기 위해 SBR 또는 PS 기능을 포함하는 AAC를 MPEG-4 AAC라고도 합니다.

AAC는 차세대 오디오 손실 압축 기술(PS, SBR 등)을 통해 LC-AAC, HE-AAC 및 세 가지 주요 유형을 파생했습니다. HE-AACv2 인코딩, LC-AAC는 상대적으로 중간 및 높은 코드 속도(>=80Kbps)에 주로 사용되며, HE-AAC(AAC+SBR과 동일)는 주로 중간에 사용됩니다. 및 낮은 코드 속도(<=80Kbps) 새로 출시된 HE-AACv2(AAC+SBR+PS와 동일)는 주로 낮은 비트 속도(<=48Kbps)에 사용됩니다. <=48Kbps, 그러나 >48Kbps인 경우는 아님, 일반 HE-AAC와 동일

AAC***에는 다양한 경우의 요구 사항을 충족하는 9가지 사양이 있습니다.

MPEG-2 AAC LC 낮은 복잡도 사양(Low Complexity) - 상대적으로 간단하고 게인 제어가 없지만 코딩 효율성을 향상시키며 중간 비트 전송률에서 코딩 효율성과 음질 측면에서 균형점을 찾을 수 있습니다.

MPEG-2 AAC 주요 주요 사양

MPEG-2 AAC SSR Variable Sample Rate 사양(Scalable Sample Rate)

MPEG-4 AAC LC Low Complexity 사양(Low Complexity)------ 최신 휴대폰 보다 일반적인 MP4 파일의 오디오 부분에는 이 사양의 오디오 파일이 포함됩니다.

MPEG-4 AAC 주요 주요 사양 ------ 게인 제어를 제외한 모든 기능과 음질이 포함됩니다.

MPEG-4 AAC SSR 확장 가능한 샘플링 속도

MPEG-4 AAC LTP 장기 예측

MPEG-4 AAC LD 저지연 사양(Low Delay)

MPEG-4 AAC HE 고효율 사양(High Efficiency) -----이 사양은 낮은 비트 전송률 인코딩에 적합하며

Nero ACC 인코더 지원

현재 가장 일반적으로 사용되는 것은 LC와 HE입니다(낮은 비트 전송률에 적합). 널리 사용되는 Nero AAC 인코딩 프로그램은 LC, HE 및 HEv2의 세 가지 사양만 지원합니다. 인코딩된 AAC 오디오의 사양은 모두 LC입니다. HE는 실제로 AAC(LC) + SBR 기술이고, HEv2는 AAC(LC) + SBR + PS 기술입니다.

** Hev1과 HEv2는 간단히 이 그림으로 표현됩니다. **

** (사진 속 AAC는 원본 AAC-LC를 의미합니다.)**

** HE: "고효율". HE-AAC v1(AACPlusV1, SBR이라고도 함)은 컨테이너 방식을 사용하여 AAC(LC) + SBR 기술을 구현합니다.

SBR은 실제로 스펙트럼 대역 복제**를 나타냅니다. 간단히 설명하면, 음악의 주요 스펙트럼은 저주파 대역에 집중되어 있습니다. 고주파 대역은 진폭이 작지만 음질을 결정하는 매우 중요합니다. 전체 주파수 대역을 인코딩하는 경우 고주파를 보호하기 위해 저주파 대역의 인코딩이 너무 세밀해지고 저주파의 주요 구성 요소를 보존하고 고주파 구성 요소를 압축하면 파일 크기가 커집니다. 손실되면 음질이 손실됩니다. SBR은 스펙트럼을 자르고, 주요 구성 요소를 보존하기 위해 저주파 인코딩을 분리하고, 음질을 보존하기 위해 고주파 증폭과 인코딩을 분리합니다. 이는 "올인올" 접근 방식입니다. 이러한 모순을 완벽하게 해결한 음질입니다.

** HEv2: **컨테이너 방식을 사용하는 HE-AAC v1 및 PS 기술이 포함되어 있습니다. PS는 "파라메트릭 스테레오"를 나타냅니다. 원본 스테레오 파일의 파일 크기는 한 채널의 두 배입니다. 그러나 두 채널의 사운드에는 어느 정도 유사점이 있습니다. Shannon의 정보 엔트로피 코딩 정리에 따르면 파일 크기를 줄이려면 상관 관계를 제거해야 합니다. 따라서 PS 기술은 한 채널의 모든 정보를 저장한 다음 매우 적은 바이트를 사용하여 매개변수를 사용하여 다른 채널과 해당 채널 간의 차이점을 설명합니다.

(1) AAC는 압축률이 높은 오디오 압축 알고리즘입니다. 그러나 압축률은 AC-3, MP3 등과 같은 기존 오디오 압축 알고리즘보다 훨씬 높습니다. 그리고 그 품질은 압축되지 않은 CD 음질과 비슷합니다.

(2) 다른 유사한 오디오 코딩 알고리즘과 마찬가지로 AAC도 변환 코딩 알고리즘을 사용하지만 AAC는 더 높은 해상도의 필터 뱅크를 사용하므로 더 높은 압축률을 달성할 수 있습니다.

(3) AAC는 임시 노이즈 재형성, 역방향 적응형 선형 예측, 결합 스테레오 기술 및 양자화된 허프만 코딩과 같은 최신 기술을 사용하여 압축률을 더욱 향상시켰습니다.

(4) AAC는 더 많은 샘플링 속도와 비트 전송률을 지원하고, 1~48개의 오디오 트랙을 지원하고, 최대 15개의 저주파 오디오 트랙을 지원하고, 다중 언어 호환성을 제공하며, 최대 15개의 내장 데이터 스트림을 지원합니다. .

(5) AAC는 MP3의 16KHz~48kHz 범위보다 훨씬 넓은 최대 96kHz, 최저 8KHz까지 더 넓은 사운드 주파수 범위를 지원합니다.

(6) AAC는 MP3, WMA와 달리 소리의 주파수 중 초고주파 성분과 극저주파 성분을 거의 잃지 않으며, WMA보다 스펙트럼 구조에서 원음에 더 가깝기 때문에 사운드 충실도가 떨어집니다. 학위가 더 좋습니다. 전문가의 평가에 따르면 AAC 사운드는 WMA보다 더 선명하고 원음에 가깝습니다.

(7) AAC는 최적화된 알고리즘을 사용하여 더 높은 디코딩 효율성을 달성하므로 디코딩 중에 더 적은 처리 능력이 필요합니다.

ADIF: 오디오 데이터 교환 형식 오디오 데이터 교환 형식. 이 포맷의 특징은 오디오 데이터 스트림의 중간에서 디코딩을 시작하지 않고도 이 오디오 데이터의 시작을 결정적으로 찾을 수 있다는 것입니다. 즉, 명확하게 정의된 시작에서 디코딩이 수행되어야 합니다. 따라서 이 형식은 디스크 파일에서 일반적으로 사용됩니다.

ADTS: 오디오 데이터 전송 스트림 오디오 데이터 전송 스트림. 이 형식의 특징은 동기화 단어가 있는 비트 스트림이고 디코딩은 이 스트림의 어느 위치에서나 시작할 수 있다는 것입니다. 그 특성은 mp3 데이터 스트림 형식과 유사합니다.

간단히 말해서 ADTS는 어떤 프레임에서든 디코딩할 수 있습니다. 즉, 모든 프레임에 헤더 정보가 있다는 의미입니다. ADIF에는 통합 헤더가 하나만 있으므로 모든 데이터를 획득하고 디코딩해야 합니다. 그리고 이 두 헤더의 형식도 다릅니다. 현재 일반적으로 인코딩되어 추출되는 오디오 스트림은 ADTS 형식의 오디오 스트림입니다. 둘의 구체적인 조직 구조는 다음과 같습니다.

AAC의 ADIF 형식은 아래 그림과 같습니다.

AAC의 ADTS의 일반적인 형식은 아래 그림과 같습니다. :

그림 가운데 표는 ADTS 프레임의 간결한 구조를 보여주며, 양쪽의 빈 직사각형은 프레임 전후의 데이터를 나타냅니다.

ADIF 헤더 정보:

ADIF 헤더 정보는 AAC 파일의 시작 부분에 위치하며 그 뒤에 연속적인 원시 데이터 블록이 옵니다.

ADIF 헤더 정보를 구성하는 필드는 다음과 같습니다.

ADTS의 고정 헤더 정보:

ADTS의 가변 헤더 정보:

(1) 프레임 동기화의 목적은 비트 스트림에서 프레임 헤더의 위치를 ​​찾는 것입니다. 13818-7은 aac ADTS 형식의 프레임 헤더 동기화 워드가 12비트 "1111 1111 1111"이라고 규정합니다. p>

(2) ADTS의 헤더 정보는 고정 헤더 정보와 가변 헤더 정보 두 부분으로 구성됩니다. 고정 헤더 정보의 데이터는 프레임마다 동일하지만 가변 헤더 정보는 프레임마다 변경됩니다.

AAC에서 원본 데이터 블록은 6개의 서로 다른 요소로 구성될 수 있습니다.

SCE: 단일 채널 요소. 단일 채널 요소는 기본적으로 단 하나의 ICS로 구성됩니다. 원시 데이터 블록은 대부분 16개의 SCE로 구성됩니다.

CPE: 이중 채널 요소인 채널 쌍 요소는 부가 정보와 일부 공동 스테레오 코딩 정보를 공유할 수 있는 두 개의 ICS로 구성됩니다.

CCE: 커플링 채널 요소 커플링 채널 요소. 다국어 프로그램에 대한 다중 채널 결합 스테레오 정보 또는 대화 정보 블록을 나타냅니다.

LFE: 저주파 요소. 낮은 샘플링 주파수를 향상시키는 채널이 포함되어 있습니다.

DSE: 데이터 스트림 요소 오디오에 속하지 않는 일부 추가 정보를 포함하는 데이터 스트림 요소입니다.

PCE: 프로그램 구성 요소 프로그램 구성 요소입니다. 채널 구성 정보가 포함되어 있습니다. ADIF 헤더 정보에 나타날 수 있습니다.

FIL: 채우기 요소 채우기 요소입니다. 일부 확장된 정보가 포함되어 있습니다. SBR, 동적 범위 제어 정보 등

AAC 디코딩 과정

[이미지 업로드 실패...(image-eaf24c-1543569949388)]

그림과 같습니다:

In 메인 제어 모듈이 실행을 시작한 후, 메인 제어 모듈은 AAC 비트 스트림의 일부를 입력 버퍼에 넣고 동기화 단어를 검색하여 프레임의 시작을 얻은 후 다음과 같이 Noisless를 시작합니다. ISO/IEC 13818-7에 설명된 구문 디코딩(무잡음 디코딩), 무잡음 디코딩은 실제로 역양자화(DeQuantize), 결합 스테레오(Joint Stereo), 지각 잡음 대체(PNS), 순간 잡음 성형(TNS)을 통해 허프만 디코딩입니다. , IMDCT(역 이산 코사인 변환) 및 SBR(주파수 대역 복사) 모듈을 통해 왼쪽 및 오른쪽 채널의 PCM 코드 스트림을 얻은 후 메인 제어 모듈이 이를 출력 버퍼에 넣어 사운드 재생 장치로 출력합니다. .

기술적 분석:

1. 주 제어 모듈:

소위 주 제어 모듈의 주요 임무는 입력 및 출력 버퍼를 작동하고 다른 함수 호출 모듈은 함께 작동합니다.

그 중 입력 및 출력 버퍼는 DSP 제어 모듈에서 제공됩니다. 출력 버퍼에 저장될 데이터는 사운드의 진폭을 나타내는 디코딩된 PCM 데이터입니다. 고정 길이 버퍼로 구성되어 있으며 DSP 제어 모듈의 인터페이스 기능을 호출하여 헤드 포인터를 얻습니다. 출력 버퍼 채우기가 완료된 후 인터럽트 처리를 호출하여 오디오 ADC 칩(스테레오 오디오)으로 출력합니다. DAC 및 DirectDrive 헤드폰 앰프)는 아날로그 사운드를 출력합니다.

2. 무잡음 디코딩:

무잡음 코딩은 스케일 팩터와 양자화된 스펙트럼의 중복성을 더욱 줄이는 것입니다. 스케일팩터와 양자화된 스펙트럼 정보에 대해 허프만 코딩을 수행하는 것이다. 전역 이득은 8비트 부호 없는 정수로 인코딩되며, 첫 번째 스케일 팩터와 전역 이득 값은 차등 인코딩된 후 스케일 팩터 코딩 테이블이 허프만 코딩에 사용됩니다. 각 후속 스케일 팩터는 이전 스케일 팩터를 사용하여 차등적으로 인코딩됩니다. 양자화된 스펙트럼의 무잡음 코딩에는 스펙트럼 계수가 두 부분으로 나뉩니다. 하나는 4-튜플과 2-튜플의 분할이고, 다른 하나는 섹션의 분할이다. 전자의 경우 허프만 테이블 조회에서 찾은 값이 4인지 2인지 판단한다.

후자의 경우 어떤 허프만 테이블을 사용해야 하는지가 결정됩니다. 한 섹션에는 여러 스케일 팩터 밴드가 포함되어 있으며 각 섹션에는 하나의 허프만 테이블만 사용됩니다.

——분할

잡음 없는 코딩은 입력된 1024개의 양자화된 스펙트럼 계수를 여러 섹션(섹션)으로 나누고 섹션의 각 지점을 사용합니다.

동일한 허프만 테이블에서 코딩 효율성을 고려하면 각 세그먼트의 경계는 스케일 팩터 밴드의 경계와 일치하는 것이 바람직합니다. 따라서 각 세그먼트에서 전송되는 정보에는 세그먼트 길이, 스케일 팩터 대역 및 사용된 허프만 테이블이 포함되어야 합니다.

——그룹화 및 교대

그룹화란 스펙트럼 계수가 위치한 창을 무시하고, 동일한 scalefactor 대역을 갖는 연속적인 스펙트럼 계수를 그룹으로 나누어 배치하는 것을 의미합니다. 한 그룹에서

함께, 그들은 더 나은 코딩 효율성을 위해 배율을 공유합니다. 그렇게 하면 필연적으로 교대가 발생합니다. 즉, 원래 c[그룹][창][스케일 인자 대역][계수 인덱스] 순서의 계수 배열이 동일한 스케일 인자 대역을 갖는 계수 배열이 됩니다. c[group][scale Factor band][window][coefficient index]

이로 인해 동일한 창에 대한 계수가 교대로 나타납니다.

——대규모 값 처리 ​​

AAC에서 대규모 값을 처리하는 방법에는 허프만 코딩 테이블의 이스케이프 플래그를 사용하거나 다음을 사용하는 두 가지 방법이 있습니다. 펄스

탈출 방법. 전자는 mp3 인코딩 방식과 유사하며 수량화된 값이 많이 나타날 때 특수 허프만 테이블을 사용한다. 이 테이블은 허프만 뒤에 한 쌍의 이스케이프 값과 기호 쌍이 따라온다는 것을 의미한다. 부호화. 펄스 이스케이프 방식을 사용하는 경우 차이에서 큰 값을 빼서 작은 값으로 만든 후 허프만 테이블을 사용하여 인코딩한 후 펄스 구조를 사용하여 차이를 복원하는 데 도움을 줍니다.

3. 스케일. 인자 디코딩 및 역양자화

AAC 코딩에서 역양자화된 스펙트럼 계수는 비균일 양자화기에 의해 구현되며, 그 역연산은 디코딩 중에 수행되어야 합니다. 즉, 부호를 지키고 4/3승 동작을 하게 됩니다. 주파수 영역에서 양자화 잡음을 조정하는 기본 방법은 잡음 성형을 위해 스케일링 인자를 사용하는 것입니다. 스케일 팩터는 스케일 팩터 대역의 모든 스펙트럼 계수를 변경하는 데 사용되는 진폭 게인 값입니다. 스케일링 인자를 사용하는 메커니즘은 비균일 양자화기를 사용하여 주파수 영역에서 양자화 잡음의 비트 분포를 변경하는 것입니다.

——Scalefactor-band

주파수 선은 인간 귀의 청각 특성에 따라 여러 그룹으로 나누어집니다. 각 그룹은 여러 스케일 팩터에 해당합니다. 스케일 팩터 밴드라고 합니다. 짧은 윈도우를 포함하는 정보의 부가 정보를 줄이기 위해 연속된 짧은 윈도우를 하나의 그룹으로 그룹화할 수 있습니다. 즉, 여러 개의 짧은 윈도우를 하나의 윈도우로 함께 전송한 후 그룹화된 모든 윈도우에 스케일 인수를 적용합니다.

4. 조인트 스테레오

조인트 스테레오는 사운드를 더욱 "아름답게" 만들기 위해 원본 샘플에 대한 특정 렌더링 작업입니다.

5. 지각적 잡음 대체(PNS)

지각적 잡음 대체 모듈은 잡음을 매개변수 인코딩 형태로 시뮬레이션하는 모듈입니다. 오디오 값에서 잡음을 식별한 후

잡음은 양자화 및 인코딩되지 않지만 일부 매개변수는 디코더에 이것이 일종의 잡음임을 알리는 데 사용됩니다. 그런 다음 디코더는 이를 처리합니다. 잡음 이러한 유형의 잡음을 생성하려면 임의의 코딩을 사용하십시오.

구체적인 작동 측면에서 PNS 모듈은 각 scalefactor band에 대해 4kHz 미만의 주파수를 가진 신호 성분을 감지합니다. 이

신호가 음조도 아니고 시간에 따른 강한 에너지 변화도 없으면 잡음 신호로 간주됩니다. 신호의 음조와 에너지 변화는 심리 음향 모델에서 계산됩니다.

디코딩 시 허프만 테이블 13(NOISE_HCB)이 사용된 것으로 확인되면 PNS를 사용함을 의미한다. M/S 스테레오 디코딩과 PNS 디코딩은 상호 배타적이므로 ms_used 매개변수를 사용하여 두 채널이 동일한 PNS를 사용하는지 여부를 나타낼 수 있습니다. ms_used 매개변수가 1이면 동일한 무작위 벡터가 두 채널 모두에 대한 노이즈 신호를 생성하는 데 사용됩니다. PNS의 에너지 신호는 Noise_nrg로 표시됩니다. PNS를 사용하는 경우 해당 스케일 팩터 대신 에너지 신호가 전송됩니다. 잡음 에너지 인코딩은 차등 인코딩을 사용하는 스케일 팩터와 동일합니다. 첫 번째 값은 전역 게인 값이기도 합니다. 강도 스테레오 위치 값과 스케일 팩터를 교대로 배치하지만 차등 디코딩에서는 무시됩니다. 즉, 다음 노이즈 에너지 값은 강도 스테레오 위치나 스케일 팩터가 아닌 이전 노이즈 에너지 값과 차등적으로 디코딩된다. 무작위 에너지는 스케일 팩터 대역 내에서 Noise_nrg에 의해 계산된 평균 에너지 분포를 생성합니다. 이 기술은 MPEG-4 AAC에서만 사용됩니다.

6. TNS(Transient Noise Shaping)

이 마법같은 기술은 주파수 영역 예측을 통해 시간 영역에서 양자화 잡음의 분포를 수정할 수 있습니다.

일부 특수한 음성과 급격하게 변화하는 신호의 정량화에 있어 TNS 기술은 음질 향상에 큰 기여를 했습니다! TNS 일시적인 잡음 형태는 변환 창 내에서 일시적인 잡음 형태를 제어하는 ​​데 사용됩니다. 단일 채널에 대한 필터링 프로세스를 사용하여 구현됩니다. 전통적인 변환 코딩 방식은 시간 영역, 특히 음성 신호에서 매우 급격한 신호 변화 문제에 직면하는 경우가 많습니다. 이 문제는 양자화된 잡음 분포가 주파수 영역에서 제어되지만 시간 영역 내에서는 상수로 분포되기 때문입니다. 변환 블록. 이러한 블록의 신호가 짧은 블록으로 전환되지 않고 급격하게 변경되면 이 일정한 분산 소음이 들립니다. TNS의 원리는 시간 영역과 주파수 영역의 이중성과 LPC(선형 예측 코딩)의 시간-주파수 대칭성을 활용합니다. 즉, 어느 한 영역의 코딩은 다른 영역의 예측 코딩과 동일합니다. 한 도메인의 예측 코딩은 다른 도메인의 해상도를 높일 수 있습니다. 주파수 영역에서는 양자화 잡음이 발생하여 시간 영역의 분해능이 감소하므로 여기서는 주파수 영역에서 예측부호화를 수행한다. AACplus에서는 AAC 프로파일 LC를 기반으로 하기 때문에 TNS의 필터 차수는 12차수로 제한됩니다.

7. 역 이산 코사인 변환(IMDCT)

오디오 데이터를 주파수 영역에서 시간 영역으로 변환하는 과정은 주로 주파수 영역 데이터를 IMDCT 집합에 채우는 것으로 구성됩니다. 필터를 실현했습니다. IMDCT 변환 후 출력값에 윈도우화 및 중첩을 거쳐 최종적으로 시간 영역 값을 얻습니다.

8. 주파수 대역 복제(SBR)

간단히 설명하면, 음악의 주요 스펙트럼은 저주파 대역에 집중되어 있고 고주파 대역의 진폭은 매우 작습니다. 하지만 이는 매우 중요하고 결정적인 요소입니다.

음질. 전체 주파수 대역을 인코딩하는 경우 고주파를 보호하기 위해 저주파 대역의 인코딩이 너무 세밀해지고 저주파의 주요 구성 요소를 보존하고 고주파 구성 요소를 압축하면 파일 크기가 커집니다. 손실되면 음질이 손실됩니다. SBR은 스펙트럼을 자르고, 저주파는 별도로 인코딩하여 주요 구성 요소를 보존하고, 고주파는 별도로 증폭하고 인코딩하여 음질을 유지하는 "올인올" 접근 방식입니다. 파일 크기를 줄이면서

완벽한 솔루션 이 모순.

9. 파라메트릭 스테레오(PS)

기존 스테레오 파일의 경우 파일 크기가 모노의 2배이나 ​​두 채널의 사운드가 모두 존재함

p>

Shannon의 정보 엔트로피 코딩 정리에 따르면 일부 유사점은 파일 크기를 줄이려면 상관 관계를 제거해야 한다는 것입니다. 따라서 PS 기술은 한 채널의 모든 정보를 저장한 다음 매우 적은 바이트를 매개변수로 사용하여 다른 채널과 해당 채널 간의 차이점을 설명합니다.