KR20200012861A - 디지털 오디오 신호에서의 차분 데이터 - Google Patents

디지털 오디오 신호에서의 차분 데이터 Download PDF

Info

Publication number
KR20200012861A
KR20200012861A KR1020197034809A KR20197034809A KR20200012861A KR 20200012861 A KR20200012861 A KR 20200012861A KR 1020197034809 A KR1020197034809 A KR 1020197034809A KR 20197034809 A KR20197034809 A KR 20197034809A KR 20200012861 A KR20200012861 A KR 20200012861A
Authority
KR
South Korea
Prior art keywords
frame
band
bits
bit stream
audio signal
Prior art date
Application number
KR1020197034809A
Other languages
English (en)
Other versions
KR102615901B1 (ko
Inventor
가디엘 세루씨
파벨 츄바레프
브랜든 스미스
Original Assignee
디티에스, 인코포레이티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 디티에스, 인코포레이티드 filed Critical 디티에스, 인코포레이티드
Publication of KR20200012861A publication Critical patent/KR20200012861A/ko
Application granted granted Critical
Publication of KR102615901B1 publication Critical patent/KR102615901B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS OR SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING; SPEECH OR AUDIO CODING OR DECODING
    • G10L19/00Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis
    • G10L19/005Correction of errors induced by the transmission channel, if related to the coding algorithm
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS OR SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING; SPEECH OR AUDIO CODING OR DECODING
    • G10L19/00Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis
    • G10L19/02Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis using spectral analysis, e.g. transform vocoders or subband vocoders
    • G10L19/0204Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis using spectral analysis, e.g. transform vocoders or subband vocoders using subband decomposition
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/3084Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/3084Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method
    • H03M7/3091Data deduplication
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/60General implementation details not specific to a particular type of compression
    • H03M7/6005Decoder aspects
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/60General implementation details not specific to a particular type of compression
    • H03M7/6011Encoder aspects
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS OR SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING; SPEECH OR AUDIO CODING OR DECODING
    • G10L19/00Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis
    • G10L19/02Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis using spectral analysis, e.g. transform vocoders or subband vocoders
    • G10L19/0212Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis using spectral analysis, e.g. transform vocoders or subband vocoders using orthogonal transformation

Abstract

오디오 인코더는 디지털 오디오 신호를 복수의 프레임으로 파싱할 수 있고 - 각각의 프레임은 특정된 수의 오디오 샘플을 포함함 - 각각의 프레임에 대한 복수의 주파수-영역 계수를 생성하기 위해 각각의 프레임의 오디오 샘플의 변환을 수행할 수 있고, 각각의 프레임에 대한 복수의 주파수-영역 계수를 각각의 프레임에 대한 복수의 대역으로 분할할 수 있고 - 각각의 대역은 대역에 할당된 비트 수를 나타내는 비트 데이터를 가짐 - 디지털 오디오 신호 및 차이 데이터를 비트 스트림(예를 들어, 인코딩된 디지털 오디오 신호)으로 인코딩할 수 있다. 차이 데이터는 비트 스트림에 존재하는 데이터로부터 컴퓨팅될 수 있는 추정 데이터와 결합될 때 전체 비트 데이터를 생성할 수 있다. 차이 데이터는 전체 비트 데이터보다 작은 크기로 압축될 수 있으며, 이는 비트 스트림에 필요한 공간을 감소시킬 수 있다.

Description

디지털 오디오 신호에서의 차분 데이터
관련 출원에 대한 상호 참조
본 출원은 2017년 4월 25일자로 출원된 미국 가출원 제62/489,650호의 이익을 주장하는, 2018년 3월 29일자로 출원된 미국 특허 출원 제15/939,473호에 대해 우선권을 주장하며, 그 내용은 그 전체로 본원에 참조로 통합된다.
개시 분야
본 개시는 오디오 신호를 인코딩 또는 디코딩하는 것에 관한 것이다.
오디오 코덱은 시간-영역 오디오 신호를 디지털 파일 또는 디지털 스트림으로 인코딩하고, 디지털 파일 또는 디지털 스트림을 시간-영역 오디오 신호로 디코딩할 수 있다. 인코딩된 파일 또는 스트림의 크기를 줄이는 것과 같이 오디오 코덱을 개선하기 위한 노력이 계속되고 있다.
인코딩 시스템의 예는: 프로세서; 및 프로세서에 의해 실행 가능한 명령어들을 저장하는 메모리 디바이스로서, 명령어들은 오디오 신호를 인코딩하기 위한 방법을 수행하기 위해 프로세서에 의해 실행 가능한, 메모리 디바이스를 포함하고, 본 방법은: 디지털 오디오 신호를 수신하는 단계; 디지털 오디오 신호를 복수의 프레임들로 파싱(parsing)하는 단계로서, 각각의 프레임은 특정된 수의 오디오 샘플들을 포함하는, 파싱하는 단계; 각각의 프레임에 대한 복수의 주파수-영역 계수들을 생성하기 위해 각각의 프레임의 오디오 샘플들의 변환을 수행하는 단계; 각각의 프레임에 대한 복수의 주파수-영역 계수들을 각각의 프레임에 대한 복수의 대역들로 분할하는 단계; 각각의 프레임에서 각각의 대역에 대해 특정된 수의 비트들을 할당하는 단계; 각각의 프레임에서 각각의 대역에 대한 차이값을 컴퓨팅하는 단계로서, 차이값은 각각의 프레임에서 각각의 대역에 대해 할당된 비트 수와 각각의 프레임에서 각각의 대역에 대해 할당 가능한 대응하는 추정된 비트 수 사이의 차이를 나타내는, 컴퓨팅하는 단계; 비트 스트림을 인코딩하는 단계로서, 비트 스트림은: 디지털 오디오 신호를 나타내는 데이터, 및 차이값을 나타내는 데이터를 포함하지만 각각의 프레임에서 각각의 대역에 대해 할당된 비트 수를 직접 나타내는 데이터를 포함하지 않는, 인코딩하는 단계; 및 비트 스트림을 출력하는 단계를 포함한다.
디코딩 시스템의 예는 프로세서; 및 프로세서에 의해 실행 가능한 명령어들을 저장하는 메모리 디바이스로서, 명령어들은 인코딩된 오디오 신호를 디코딩하기 위한 방법을 수행하기 위해 프로세서에 의해 실행 가능한, 메모리 디바이스를 포함하고, 본 방법은: 복수의 프레임들을 포함하는 비트 스트림을 수신하는 단계로서, 각각의 프레임은 복수의 대역들로 분할되는, 수신하는 단계; 각각의 프레임에서 각각의 대역의 양자화된 놈을 추출하는 단계; 추출된 양자화된 놈들에 기초하여, 각각의 프레임에서 각각의 대역에 대해 할당 가능한 추정된 비트 수를 결정하는 단계; 각각의 프레임의 각각의 대역에 대해, 비트 스트림으로부터 차이값들을 추출하는 단계로서, 차이값들은 각각의 프레임에서 각각의 대역에 대해 할당된 비트 수와 각각의 프레임에서 각각의 대역에 할당 가능한 대응하는 추정된 비트 수 사이의 차이를 나타내는, 추출하는 단계; 각각의 프레임에서 각각의 대역에 대해 할당된 비트 수를 결정하기 위해, 차이값들과 각각의 프레임에서 각각의 대역에 대해 할당 가능한 대응하는 추정된 비트 수를 결합하는 단계; 각각의 프레임에서 각각의 대역에 대해 결정된 비트 수를 할당하는 단계; 및 디코딩된 디지털 오디오 신호를 생성하기 위해 각각의 프레임에서 각각의 대역에 대해 결정된 비트 수를 사용하여 비트 스트림을 디코딩하는 단계를 포함한다.
인코딩 시스템의 다른 예는: 디지털 오디오 신호를 수신하는 수신기 회로; 디지털 오디오 신호를 복수의 프레임들로 파싱하는 프레이머(framer) 회로로서, 각각의 프레임은 특정된 수의 오디오 샘플들을 포함하는, 프레이머 회로; 각각의 프레임에 대한 복수의 주파수-영역 계수들을 생성하기 위해 각각의 프레임의 오디오 샘플들의 변환을 수행하는 변환기 회로; 각각의 프레임에 대한 복수의 주파수-영역 계수들을 각각의 프레임에 대한 복수의 대역들로 분할하는 주파수 대역 분할기 회로; 각각의 프레임에서 각각의 대역에 대해 특정된 비트 수를 할당하는 프레임 비트 할당 회로; 각각의 프레임에서 각각의 대역에 대한 차이값을 컴퓨팅하는 차이 계산 회로로서, 차이값은 각각의 프레임에서 각각의 대역에 대해 할당된 비트 수와 각각의 프레임에서 각각의 대역에 대해 할당 가능한 대응하는 추정된 비트 수 사이의 차이를 나타내는, 차이 계산 회로; 비트 스트림을 인코딩하는 인코더 회로로서, 비트 스트림은: 디지털 오디오 신호를 나타내는 데이터, 및 차이값을 나타내는 데이터를 포함하지만 각각의 프레임에서 각각의 대역에 대해 할당된 비트 수를 직접 나타내는 데이터를 포함하지 않는, 인코더 회로; 및 비트 스트림을 출력하는 출력 회로를 포함할 수 있다.
도 1은 일부 실시예에 따른 인코딩 시스템의 예의 블록도를 나타낸다.
도 2는 일부 실시예에 따른 인코딩 시스템의 다른 예의 블록도를 나타낸다.
도 3은 일부 실시예에 따른 디코딩 시스템의 예의 블록도를 나타낸다.
도 4는 일부 실시예에 따른 디코딩 시스템의 다른 예의 블록도를 나타낸다.
도 5는 일부 실시예에 따라 디지털 오디오 신호를 인코딩하는 것과 관련된 몇몇 양을 나타낸다.
도 6은 일부 실시예에 따른 인코딩/디코딩 시스템의 예의 블록도를 나타낸다.
도 7은 일부 실시예에 따른 인코더의 예의 블록도를 나타낸다.
도 8은 일부 실시예에 따른 디코더의 다른 예의 블록도를 나타낸다.
도 9는 일부 실시예에 따른 인코더의 다른 예의 블록도를 나타낸다.
도 10은 일부 실시예에 따른 디코더의 다른 예의 블록도를 나타낸다.
도 11은 일부 실시예에 따라 오디오 신호를 인코딩하기 위한 방법의 예의 흐름도를 나타낸다.
도 12는 일부 실시예에 따라 인코딩된 오디오 신호를 디코딩하기 위한 방법의 예의 흐름도를 나타낸다.
도 13은 일부 실시예에 따른 인코딩 시스템의 예의 블록도를 나타낸다.
대응하는 참조 문자는 여러 도면에 걸쳐 대응하는 부분을 나타낸다. 도면의 요소가 반드시 스케일대로 도시되는 것은 아니다. 도면에 나타내어진 구성은 단지 예일 뿐이며, 본 발명의 범위를 어떠한 방식으로도 제한하는 것으로 해석되어서는 안 된다.
코덱과 같은 오디오 인코딩 및/또는 디코딩 시스템에서, 각각의 대역에 할당된 비트 수를 나타내는 데이터는 차이 데이터로서 인코딩될 수 있다. 차이 데이터는 각각의 대역에 대해 할당 가능한 추정된 비트 수와의 차이를 나타낼 수 있으며, 여기서 추정된 수는 비트 스트림(예를 들어, 인코딩된 디지털 오디오 신호)에 이미 존재하는 데이터로부터 컴퓨팅될 수 있다. 비트 스트림에 존재하는 데이터로부터 컴퓨팅된 추정 데이터와 결합된 차이 데이터는 각각의 대역에 대해 할당된 비트 수를 생성할 수 있다. 차이 데이터는 풀 비트 데이터보다 작은 크기로 압축될 수 있으며(예를 들어, 각각의 대역에 할당된 비트 수의 값을 명시적으로 인코딩), 이는 비트 스트림에 필요한 공간을 줄일 수 있다.
도 1은 일부 실시예에 따른 인코딩 시스템(100)의 예의 블록도를 나타낸다. 도 1의 구성은 단지 인코딩 시스템의 일례일 뿐이며; 다른 적절한 구성이 또한 사용될 수 있다.
인코딩 시스템(100)은 입력으로서 디지털 오디오 신호(102)를 수신할 수 있고, 비트 스트림(104)을 출력할 수 있다. 입력 및 출력 신호(102, 104)는 각각 로컬로 또는 액세스 가능한 서버 상에 저장된 하나 이상의 이산 파일, 및/또는 로컬로 또는 액세스 가능한 서버 상에서 생성된 하나 이상의 오디오 스트림을 포함할 수 있다.
인코딩 시스템(100)은 프로세서(106)를 포함할 수 있다. 인코딩 시스템(100)은 프로세서(106)에 의해 실행 가능한 명령어(110)를 저장하는 메모리 디바이스(108)를 추가로 포함할 수 있다. 명령어(110)는 오디오 신호를 인코딩하기 위한 방법을 수행하도록 프로세서(106)에 의해 실행될 수 있다. 오디오 신호를 인코딩하기 위한 이러한 방법의 예는 아래에서 상세히 설명된다.
도 1의 구성에서, 인코딩은 통상적으로 컴퓨팅 디바이스에서 추가 작업을 또한 수행할 수 있는 프로세서에 의해 소프트웨어에서 실행된다. 대안으로서, 인코딩은 인코딩을 수행하기 위해 하드웨어에 내장된 전용 칩 또는 전용 프로세서와 같은 하드웨어에서 또한 수행될 수 있다. 이러한 하드웨어-기반 인코더의 예가 도 2에 나타내어져 있다.
도 2는 일부 실시예에 따른 인코딩 시스템(200)의 다른 예의 블록도를 나타낸다. 도 2의 구성은 인코딩 시스템의 단지 일례일 뿐이며; 다른 적절한 구성이 또한 사용될 수 있다.
인코딩 시스템(200)은 입력으로서 디지털 오디오 신호(202)를 수신할 수 있고, 비트 스트림(204)을 출력할 수 있다. 인코딩 시스템(200)은 전용 인코딩 프로세서(206)를 포함할 수 있으며, 이는 특정 인코딩 방법을 수행하도록 하드웨어에 내장된 칩을 포함할 수 있다. 오디오 신호를 인코딩하기 위한 이러한 방법의 예는 아래에서 상세히 설명된다.
도 1 및 도 2의 예는 각각 소프트웨어 및 하드웨어에서 동작할 수 있는 인코딩 시스템을 나타낸다. 일부 예에서, 인코딩 시스템은 소프트웨어 및 하드웨어의 조합을 사용할 수 있다. 도 3 및 도 4는 각각 소프트웨어와 하드웨어에서 동작할 수 있는 필적하는 디코드 시스템을 나타낸다. 유사하게, 디코딩 시스템은 또한 소프트웨어 및 하드웨어의 조합을 사용할 수 있다.
도 3은 일부 실시예에 따른 디코딩 시스템의 예의 블록도를 나타낸다. 도 3의 구성은 디코딩 시스템의 단지 일례일 뿐이며; 다른 적절한 구성이 또한 사용될 수 있다.
디코딩 시스템(300)은 입력으로서 비트 스트림(302)을 수신할 수 있고, 디코딩된 디지털 오디오 신호(304)를 출력할 수 있다. 입력 및 출력 신호(302, 304)는 각각 로컬로 또는 액세스 가능한 서버 상에 저장된 하나 이상의 이산 파일, 및/또는 로컬로 또는 액세스 가능한 서버 상에서 생성된 하나 이상의 오디오 스트림을 포함할 수 있다.
디코딩 시스템(300)은 프로세서(306)를 포함할 수 있다. 디코딩 시스템(300)은 프로세서(306)에 의해 실행 가능한 명령어(310)를 저장하는 메모리 디바이스(308)를 추가로 포함할 수 있다. 명령어(310)는 오디오 신호를 디코딩하기 위한 방법을 실행하도록 프로세서(306)에 의해 실행될 수 있다. 오디오 신호를 디코딩하기 위한 이러한 방법의 예는 아래에서 상세하게 설명된다.
도 3의 구성에서, 디코딩은 통상적으로 컴퓨팅 디바이스에서 추가 작업을 또한 수행할 수 있는 프로세서에 의해 소프트웨어에서 실행된다. 대안으로서, 디코딩은 인코딩을 수행하기 위해 하드웨어에 내장된 전용 칩 또는 전용 프로세서와 같은 하드웨어에서 또한 수행될 수 있다. 이러한 하드웨어-기반 디코더의 예가 도 4에 나타내어져 있다.
도 4는 일부 실시예에 따른 디코딩 시스템(400)의 다른 예의 블록도를 나타낸다. 도 4의 구성은 단지 디코딩 시스템의 일례일 뿐이며; 다른 적절한 구성이 또한 사용될 수 있다.
디코딩 시스템(400)은 입력으로서 비트 스트림(402)을 수신할 수 있고, 디코딩된 디지털 오디오 신호(404)를 출력할 수 있다. 디코딩 시스템(400)은 전용 디코딩 프로세서(406)를 포함할 수 있으며, 이는 특정 디코딩 방법을 수행하도록 하드웨어에 내장된 칩을 포함할 수 있다. 오디오 신호를 디코딩하기 위한 이러한 방법의 예는 아래에서 상세하게 설명된다.
도 5는 일부 실시예에 따라 디지털 오디오 신호를 인코딩하는 것과 관련된 몇몇 양을 나타낸다. 비트 스트림을 디코딩하는 것은 일반적으로 비트 스트림을 인코딩하는 것과 동일한 양을 관련되지만, 수학 연산은 반대로 수행된다. 도 5에 나타내어진 양은 단지 이러한 양의 예일 뿐이며; 다른 적절한 양이 또한 사용될 수 있다. 도 5에 나타낸 각각의 양은 도 1 내지 도 4에 나타내어진 임의의 인코더 또는 디코더로 사용될 수 있다.
인코더는 디지털 오디오 신호(502)를 수신할 수 있다. 디지털 오디오 신호(502)는 시간-영역에 있으며, 시간에 따른 오디오 신호의 전개되는 진폭을 나타내는 정수 또는 부동 소수점 수의 시퀀스를 포함할 수 있다. 디지털 오디오 신호(502)는 스튜디오로부터의 라이브 피드(live feed)와 같은 스트림의 형태(예를 들어, 특정되지 않은 시작 및/또는 종료)일 수 있다. 대안적으로, 디지털 오디오 신호(502)는 서버 상의 오디오 파일, 컴팩트 디스크로부터 리핑된(ripped) 압축되지 않은 오디오 파일, 또는 압축되지 않은 포맷의 노래의 믹스다운(mixdown) 파일과 같은 (예를 들어, 시작과 종료, 및 특정 지속 기간을 갖는) 이산 파일일 수 있다.
인코더는 디지털 오디오 신호(502)를 복수의 프레임(504)으로 파싱할 수 있으며, 여기서 각각의 프레임(504)은 특정 수의 오디오 샘플(506)을 포함한다. 예를 들어, 프레임(504)은 1024개의 샘플(506) 또는 다른 적절한 값을 포함할 수 있다. 일반적으로, 디지털 오디오 신호(502)를 프레임(504)으로 그룹화하면 인코더가 그 프로세싱을 잘 정의된 수의 샘플(506)에 효율적으로 적용할 수 있다. 일부 예에서, 각각의 프레임이 다른 프레임과 독립적으로 프로세싱될 수 있도록 이러한 프로세싱은 프레임별로 다를 수 있다. 다른 예에서, 프로세싱은 인접한 프레임으로부터의 샘플 데이터를 포함할 수 있다.
인코더는 각각의 프레임(504)의 오디오 샘플(506)의 변환(508)을 수행할 수 있다. 일부 예에서, 변환은 수정된 이산 코사인 변환일 수 있다. 이산 단시간 푸리에 변환(Discrete Short-Time Fourier Transform) 등과 같은 다른 적절한 변환이 사용될 수 있다. 변환(508)은 프레임(504)의 샘플(506)과 같은 시간-영역 양을 프레임(504)에 대한 주파수-영역 계수(510)와 같은 주파수-영역 양으로 변환한다. 변환(508)은 각각의 프레임(504)에 대하여 복수의 주파수-영역 계수(510)를 생성할 수 있다. 주파수-영역 계수(510)는 프레임에 특정 주파수의 신호가 얼마나 많이 존재하는지를 설명한다.
일부 예에서, 변환(508)에 의해 생성된 주파수 영역 계수(510)의 수는 1024개와 같이 프레임의 샘플(506)의 수와 동일할 수 있다. 일부 예들에서, 시간-영역 프레임에서 중첩이 있을 수 있다. 예를 들어, 수정된 이산 코사인 변환을 컴퓨팅하기 위해, 시간 영역 프레임은 총 2048개의 샘플을 사용할 수 있으며, 2048개의 샘플 중 1024개는 이웃 프레임으로부터 온 것이다. 이러한 특정 예에서, 변환이 이웃 프레임으로부터의 1024개의 추가 샘플을 사용할 수 있지만, 프레임 크기는 1024개 샘플인 것으로 고려될 수 있다.
인코더는 각각의 프레임(504)에 대한 복수의 주파수-영역 계수(510)를 각각의 프레임(504)에 대한 복수의 대역(512)으로 분할할 수 있다. 일부 예에서, 다른 값이 또한 사용될 수 있지만 프레임(504) 당 22개의 대역(512)이 있을 수 있다. 각각의 대역(512)은 프레임(504)의 주파수 범위(510)의 범위를 나타낼 수 있어, 모든 주파수 범위의 연결은 프레임(504)에 나타내어진 모든 주파수를 포함한다.
코덱의 일반적인 목적은 제한된 데이터 크기가 주어진 소스 신호를 가장 잘 표현하는 것이다. 데이터 크기는 인코딩된 파일의 특정 데이터 레이트 또는 비트 레이트로 표현될 수 있다. 예를 들어, 데이터 레이트는 1411 kbps(초당 킬로비트), 320 kbps, 256 kbps, 192 kbps, 160 kbps, 128 kbps 또는 다른 값을 포함할 수 있다. 일반적으로 데이터 레이트가 높을수록 프레임 표현이 더 정확해진다.
인코더는 각각의 프레임에서 각각의 대역에 대해 특정된 수의 비트(514)를 할당할 수 있다. 일부 예에서, 비교적 많은 양의 주파수 컨텐츠가 있는 대역에 대해, 인코더는 주파수 컨텐츠를 나타내기 위해 비교적 많은 수의 비트를 할당할 수 있다. 주파수 컨텐츠가 비교적 적은 대역의 경우, 인코더는 주파수 컨텐츠를 나타내기 위해 비교적 적은 수의 비트를 할당할 수 있다. 일반적으로 특정 대역에 할당된 비트 수가 많을수록 그 특정 대역의 주파수 표현이 더 정확해진다. 인코더는 비트 할당을 증가시키는 정확도와 프레임당 할당된 비트 수의 상한을 제공할 수 있는 데이터 레이트 간의 균형을 맞출 수 있다.
특정 프레임에서 각각의 대역에 할당된 비트 수(514)는 정수의 벡터로 표현될 수 있으며, 이는 비트-할당 곡선으로 지칭될 수 있다. 프레임(504) 당 22개의 대역(512)이 있는 일부 예에서, 각각의 프레임(504)에 대한 비트 할당 곡선은 22 값 벡터일 수 있다.
디코더가 비트 스트림을 적절히 디코딩하기 위해, 디코더는 비트 스트림으로부터 각각의 프레임에 대한 비트-할당 곡선을 추출해야 한다. 이러한 이유로, 인코더는 비트-할당 곡선의 정보가 비트 스트림에 포함되도록 보장해야 한다.
하나의 가능성은 인코더가 각각의 프레임을 갖는 오디오 정보와 함께 각각의 프레임에 대한 비트-할당 곡선을 인코딩하는 것이다. 구체적으로, 인코더는 각각의 프레임에서 각각의 대역에 할당된 비트 수를 직접 나타내는 데이터를 포함하도록 비트 스트림을 인코딩할 수 있다. 프레임당 22개의 대역이 존재하는 예에서, 인코더는 특정 프레임에 대한 오디오 데이터 내의, 인접한 또는 부근의 특정 프레임에 대한 정수의 전체 22 값 벡터를 인코딩할 수 있다.
비트-할당 곡선을 직접 인코딩하는 것에 대한 단점은 그렇게 하면 비트 스트림에서 비교적 많은 양의 공간을 차지할 수 있다는 것이다. 프레임당 22개의 대역이 있는 예에서, 각각의 프레임에 대한 22개의 정수는 그렇지 않으면 오디오 신호를 코딩하는 데 사용될 수 있는 비트 스트림의 공간을 차지할 수 있다. 이러한 인코딩 및 디코딩 시스템의 예가 도 6에 나타내어져 있다.
비트-할당 곡선을 직접 인코딩하는 것보다 개선된 것은 비트-할당 곡선의 전체 비트 데이터를 직접 인코딩하지 않고 대신 차이 데이터를 비트 스트림으로 인코딩하는 것이다. 차이 데이터는 비트 스트림에 이미 존재하는 데이터로부터 컴퓨팅된 추정 데이터와 결합될 때 전체 비트 데이터를 생성할 수 있다. 차이 데이터는 전체 비트 데이터보다 작은 크기로 압축될 수 있으며, 이는 비트 스트림에 필요한 공간을 감소시킬 수 있다. 일부 예에서, 차이 데이터는 효율적으로 압축될 수 있는 몇몇 제로 값을 포함하는 벡터를 나타낼 수 있다. 이들 개선된 인코딩 및 디코딩 시스템의 예가 도 7 내지 도 10에 나타내어져 있다.
추정 데이터는 비트 스트림에 이미 존재하는 데이터로부터 형성될 수 있다. 일부 예에서, 추정 데이터는 각각의 프레임의 각각의 대역의 컴퓨팅된 양자화된 놈(norm)으로부터 획득될 수 있다. 양자화된 놈은 비트 스트림에서 직접 인코딩될 수 있고, 각각의 프레임에서 각각의 대역에 할당 가능한 비트 수에 대한 대략적인 추정치를 컴퓨팅하는 데 사용될 수 있다. 각각의 양자화된 놈은 아래에서 상세히 설명되는 바와 같이, 대역에서 주파수-영역 계수로부터 도출되고, 복수의 특정된 값 중 하나와 동일하게 되도록 양자화된 값을 가질 수 있다.
일부 예에서, 추정 데이터는 비트 스트림으로 인코딩될 수 있는 하나 이상의 파라미터를 더 포함할 수 있다.
일부 예에서, 파라미터는 비트-할당 곡선의 다중-값 벡터와 다른 구조일 수 있다. 예를 들어, 기울기는 단일 스칼라 값일 수 있다. 적절한 파라미터의 일례는 특정 프레임에서 대역에 대한 기울기(비트 단위) 대 주파수를 포함할 수 있다.
일부 예에서, 파라미터 중 하나는 비트 스트림으로 직접 인코딩될 수 있고 복수의 프레임에 대한 추정치로서의 역할을 할 수 있는 기준 비트-할당 곡선을 포함할 수 있다. 이들 예에 있어서, 한번에 하나의 다중 차이값과 결합된 단일 기준 비트-할당 곡선은 디지털 오디오 신호의 다중 프레임에 적용되는 다중 비트-할당 곡선을 생성할 수 있다. 하나의 비트-할당 곡선(또는 디지털 오디오 신호에서 주어진 시간 주기 동안 하나의 비트-할당 곡선)을 인코딩하는 것은 각각의 프레임에 대한 비트-할당 곡선을 인코딩하는 것보다 작은 공간을 사용할 수 있다.
다음 단락은 도 5에 나타내어진 다양한 양을 컴퓨팅하는 방식의 상세한 예를 제공한다. 컴퓨테이션은 도 1 내지 도 4에 나타내어진 임의의 프로세서에 의해, 또는 다른 적절한 프로세서에 의해 실행될 수 있다. 이것은 단지 하나의 예일 뿐이며; 다른 적절한 컴퓨테이션이 또한 수행될 수 있다.
인코더는 다음과 같이 비트 스트림(예를 들어, 디지털 오디오 신호)을 인코딩할 수 있다.
입력 신호를 프레임으로 분할하며, 각각의 프레임은 고정된 수의 오디오 샘플을 포함한다. 일부 예에서, 오디오 샘플은 인접한다. 일부 예에서, 프레임에 대한 다운스트림 프로세싱은 이웃 프레임으로부터의 샘플을 선택적으로 사용할 수 있다.
프레임을 설명하는 데 사용할 수 있는 비트 수인 비트 예산(budget) C를 각각의 프레임에 할당한다. 이러한 비트 예산은 선택적으로 프레임의 상대적 중요도의 지표와 같은 추가 고려 사항과 함께, 전체 규정된 비트 레이트로부터 적어도 부분적으로 도출될 수 있다.
각각의 프레임에 대해, 오디오 샘플을 주파수 영역으로 변환하는 변환을 적용한다. 다른 변환이 또한 사용될 수 있지만, 적절한 변환은 수정된 이산 코사인 변환을 포함할 수 있다. 변환으로부터, 이하에 따라 계수 xi의 벡터 X를 형성한다:
Figure pct00001
여기서, 각 계수 xi는 특정 주파수에서의 디지털 오디오 신호의 강도를 나타낸다.
각각의 프레임에 대해, 이하에 따라 벡터 X를 M 대역 Bi로 분할한다:
Figure pct00002
각각의 대역 Bi는 다음과 같이 X로부터의 Ni 계수의 하위 시퀀스를 포함한다:
Figure pct00003
여기서, ki는 길이가 Ni인 대역 Bi의 시작 좌표이다.
이하에 따라 각각의 대역 Bi의 유클리드(또는 L2) 놈 wi를 컴퓨팅한다:
Figure pct00004
이하에 따라 놈 wi의 벡터 w를 형성한다:
Figure pct00005
각각의 놈 wi를 근사
Figure pct00006
로 양자화하고, 후속하는 벡터를 비트 스트림으로 인코딩한다:
Figure pct00007
잔여 비트 예산 C'를 대역에 걸쳐 분배하고, ci 비트를 대역 Bi에 할당하며, 여기서 이하에 따라 i = 0, 1,..., M-l이다:
Figure pct00008
이하에 따라 비트 할당 벡터 c를 형성한다:
Figure pct00009
전술한 바와 같이, 비트 할당 벡터 c를 비트 스트림에 직접 기입하기 위해서는 비교적 많은 양의 공간을 차지한다. 비트 할당 벡터 c를 비트 스트림에 직접 기입하는 것에 대한 개선으로서, 차이 벡터 Δc를 나타내는 데이터를 대신 기입한다. 이는 디코더 방법의 이하의 개요에서 상세하게 후술된다.
각각의 대역 Bi에 대해, 이하에 따라 정규화된 대역
Figure pct00010
를 컴퓨팅한다:
Figure pct00011
각각의 정규화된 대역
Figure pct00012
를 양자화되고 정규화된 대역
Figure pct00013
로 양자화한다.
양자화되고 정규화된 대역
Figure pct00014
를 설명하기 위해 최대 ci 비트를 사용하여, 각각의 양자화되고 정규화된 대역
Figure pct00015
를 비트 스트림으로 인코딩한다.
디코더는 디지털 오디오 신호를 유사한 시퀀스로 디코딩하여 인코더의 시퀀스를 반전시킬 수 있다.
양자화된 대역 놈
Figure pct00016
를 판독하고 디코딩한다.
전술한 바와 같이, 비트 할당 벡터
Figure pct00017
Figure pct00018
는 비트 스트림으로 직접 기입될 수 없기 때문에, 디코더는 비트 할당 벡터 c를 비트 스트림으로부터 직접 판독할 수 없다. 대신에, 디코더는 디코더 개요의 완료에 후속하여 아래에 설명되는 바와 같이, 비트 스트림으로부터 차이 벡터 △c를 판독하고 차이 벡터 △c로부터 비트 할당 벡터 c를 컴퓨팅할 수 있다.
양자화되고 정규화된 대역
Figure pct00019
를 판독 및 디코딩한다.
이하에 따라 정규화되지 않은 대역
Figure pct00020
를 재구성한다:
Figure pct00021
이하에 따라, 재구성된 대역
Figure pct00022
를 연결하여 주파수 영역 표현
Figure pct00023
를 재구성한다:
Figure pct00024
주파수 영역 표현
Figure pct00025
에 역변환을 적용하여 프레임에 대해 재구성된 오디오 샘플을 획득한다.
전술한 바와 같이, 인코더는 지각적으로 중요한 오디오 신호의 부분이 더 많은 비트를 할당받고, (예를 들어, 마스킹 현상으로 인해) 덜 지각될 수 있는 부분은 더 적은 비트를 사용하여 인코딩될 수 있도록 프레임 내에서 비트를 할당한다. 비트 할당(비트-할당 곡선으로 지칭됨)을 결정하기 위해, 인코더는 양자화되지 않은 스펙트럼 표현 X, 양자화되지 않은 대역 놈 wi, 각 대역의 내부 구성에 관한 상세 사항 등과 같은 이용 가능한 모든 정보를 사용할 수 있다. 이 정보는 디코더에서 이용 불가능할 수 있다. 디코더는 정규화된 대역
Figure pct00026
를 디코딩하고 재구성하기 전에 얼마나 많은 비트가 각 대역에 할당되었는지를 알아야 한다. 따라서, 비트 할당 벡터 c가 비트 스트림으로 직접 기입되지 않을 수 있기 때문에, 디코더는 비트 할당 벡터 c를 정확하게 재구성하는 방식을 필요로 한다.
비트-할당 곡선의 인코딩된 설명 또는 표현은 압축된 비트 스트림의 일부이기 때문에, 정규화된 대역을 설명하는 데 이용 가능한 비트 예산으로 잠식할 수 있다. 인코더는 값 ci 자체를 결정할 때 비트 할당 벡터 c를 설명하는 비용을 설명할 수 있다. 따라서, 비트 할당 벡터 c의 설명은 재구성된 오디오의 품질에 영향을 줄 수 있다. 설명은 가능한 한 효율적이고, 설명은 가능한 적은 수의 비트를 차지하는 것이 바람직하다.
비트 할당 벡터 c를 비트 스트림으로 직접 인코딩하는 것은 필요한 것보다 더 많은 비트를 차지할 수 있기 때문에, 본원에 논의된 기술은 비트 스트림으로 이미 인코딩된 정보를 사용할 수 있다. 구체적으로, 양자화된 놈
Figure pct00027
는 비트 할당의 설명과 독립적인 비트 스트림으로 인코딩되기 때문에, 인코더 및 디코더는 양자화된 놈
Figure pct00028
를 사용하여 비트 할당을 추정할 수 있다. 양자화된 놈
Figure pct00029
는 이미 비트 스트림에 존재하기 때문에, 양자화된 놈
Figure pct00030
를 추정치로서 사용하는 것은 본질적으로 자유롭다.
디코더는 실제 대역 놈 wi 대신 양자화된 대역 놈
Figure pct00031
을 사용하여 인코더에 의한 비트 할당의 컴퓨테이션을 모방하려고 시도할 수 있다. 디코더는 인코더에 이용 가능한 다른 정보의 영향을 무시할 수 있다. 이는 추정된 비트 할당
Figure pct00032
Figure pct00033
로 귀결될 수 있으며, 이는 진실된 비트 할당 c의 대략적인 근사치로서의 역할을 할 수 있다.
디코더에 이용 가능한 모든 정보가 또한 인코더에 이용 가능하기 때문에, 인코더는 추정된 비트 할당 c'를 생성할 수 있다. 인코더는 이하에 따라 차이 벡터 Δc를 형성함으로써 진실된 비트 할당 c를 설명할 수 있다:
Figure pct00034
요약하면, 인코더는 실제 대역 놈 벡터 w 및 다른 정보를 사용하여 비트 할당 벡터 c를 컴퓨팅할 수 있고, 양자화된 대역 놈 벡터
Figure pct00035
만을 사용하여 추정된 비트 할당 벡터 c'를 컴퓨팅할 수 있고, 차이 벡터
Figure pct00036
를 비트 스트림으로 컴퓨팅, 인코딩 및 기입할 수 있다. 마찬가지로, 디코더는 양자화된 대역 놈 벡터
Figure pct00037
만을 사용하여 추정된 비트 할당 벡터 c'를 컴퓨팅할 수 있고, 비트 스트림으로부터 차이 벡터
Figure pct00038
를 판독 및 디코딩할 수 있고, 추정된 비트 할당 벡터 c'와 차이 벡터
Figure pct00039
의 합으로부터 비트 할당 벡터 c를 컴퓨팅할 수 있다.
추정된 비트 할당 벡터 c'가 실제 비트 할당 벡터 c와 유사하면, 차이 벡터 Δc를 인코딩하는 것은 비트 할당 벡터 c를 인코딩하는 것보다 훨씬 적은 비트를 차지할 수 있다. 차이 벡터 Δc의 많은 엔트리가 제로이거나 다른 비교적 작은 정수일 수 있기 때문에 비트의 이러한 절약이 발생한다. 인코더 및 디코더는 작은 크기의 정수에 대해 더 짧은 코드 워드를 사용하고 큰 크기의 정수에 대해 더 긴 코드 워드를 사용하는 코드를 채용할 수 있으며, 이는 차이 벡터 Δc에 대한 상당한 압축을 달성할 수 있다.
이러한 코드의 예는 Golomb 코드이다. Golomb 코드는 정수를 0과 1의 스트링으로 인코딩할 수 있다. 예를 들어, Golomb 코드는 스트링 01로 0의 값, 스티링 11로 -1의 값, 스트링 01로 +1의 값, 스트링 101로 -2의 값, 스트링 0001로 +2의 값, 스트링 1001로 -3의 값, 스트링 00001로 +3의 값 등을 인코딩할 수 있다. 다른 적절한 코드가 또한 사용될 수 있다.
요약하면, 인코더는 실제 대역 놈 벡터 w 및 다른 정보를 사용하여 비트 할당 벡터 c를 컴퓨팅할 수 있고, 양자화된 대역 놈 벡터만을 사용하여 추정된 비트 할당 벡터 c'를 컴퓨팅할 수 있다. 그 후 인코더는 차이 벡터
Figure pct00040
를 비트 스트림으로 컴퓨팅, 인코딩 및 기입할 수 있다. 마찬가지로, 디코더는 양자화된 대역 놈 벡터
Figure pct00041
만을 사용하여 추정된 비트 할당 벡터 c'를 컴퓨팅할 수 있고, 비트 스트림으로부터 차이 벡터
Figure pct00042
를 판독 및 디코딩할 수 있다. 그 후, 디코더는 추정된 비트 할당 벡터 c'와 차이 벡터
Figure pct00043
의 합으로부터 비트 할당 벡터 c를 컴퓨팅할 수 있다. 일부 예에서, 인코더는 차이 벡터
Figure pct00044
의 엔트리가 작은 정수일 때 더 짧은 인코딩을 사용할 수 있고, 더 큰 정수일 때 더 긴 인코딩을 사용할 수 있다. 일부 예에서, 모든 제로 엔트리를 갖는 차이 벡터 Δc는 단지 하나의 비트를 사용하여 인코딩될 수 있다.
선택적인 대안으로서, 인코더 및 디코더는 비트 할당 벡터 c의 파라미터화된 설명을 사용할 수 있다. 예를 들어, 비트 할당 벡터 c를 명시적으로 인코딩하는 대신에, 인코더는 파라미터의 벡터
Figure pct00045
를 도출하고 설명할 수 있다. 인코더 및 디코더는 결정적 컴퓨테이션을 통해 파라미터 p로부터 비트 할당 벡터 c를 도출할 수 있다. 이러한 예에서, 인코더는 양자화된 대역 놈 벡터
Figure pct00046
만을 사용하여 추정된 파라미터 벡터
Figure pct00047
를 컴퓨팅할 수 있고, 디코더가 아닌 인코더에서만 이용할 수 있는 다른 정보는 무시한다. 그 후 인코더는 차이 벡터를
Figure pct00048
로서 형성할 수 있다. 인코더는 차이 벡터 Δp를 비트 스트림으로 인코딩하고 기입할 수 있다. 디코더는 비트 스트림으로부터 차이 벡터 Δp를 디코딩할 수 있다. 디코더는 추정된 파라미터 벡터 p'와 차이 벡터 Δp의 합으로부터 파라미터 p를 컴퓨팅할 수 있다.
도 6은 일부 실시예에 따른 인코딩/디코딩 시스템(600)의 예의 블록도를 나타낸다. 후술하는 바와 같이, 도 6의 인코딩/디코딩 시스템은 영역(616)에서 비효율을 포함할 수 있다. 이러한 비효율은 후술되고 도 7 내지 도 10에 나타내어진 구성에서 해결된다.
시스템(600)은 비트 스트림(602)을 중심으로 한다. 인코더(604)는 디지털 오디오 신호를 비트 스트림(602)으로 인코딩하기 위해 임의의 이용 가능한 소스로부터 갖는 임의의 정보를 사용할 수 있다. 디코더(606)는 통상적으로 인코더(604)로부터 분리되고, 비트 스트림(602)에 저장된 정보만을 사용하여 디지털 오디오 신호를 디코딩할 수 있다. 결과적으로, 인코더(604)는 비트 스트림(602)이 디코더(606)가 디지털 오디오 신호를 적절히 디코딩하기 위해 필요한 모든 정보를 갖도록 보장해야 한다.
인코더(604)는 대역 놈(608)을 생성할 수 있다. 각각의 대역 놈(608)은 대역의 주파수-영역 계수로부터 도출된 값을 가질 수 있다. 인코더(604)는 양자화된 대역 놈(610)을 생성하기 위해 대역 놈(608)을 양자화할 수 있다. 각 대역 놈은 복수의 특정값 중 하나와 동일하게 되도록 양자화될 수 있다. 인코더(604)는 양자화된 대역 놈(610)을 나타내는 데이터를 비트 스트림(602)에 기입할 수 있다. 디코더(606)는 비트 스트림(602)으로부터 양자화된 대역 놈을 추출할 수 있다.
인코더(604)는 각각의 프레임에 대해 각각의 대역에 대해 비트를 할당할 수 있다. 할당을 수행함에 있어, 인코더는 선택적으로 대역 놈(608)을 포함하고 선택적으로 디지털 오디오 신호의 일부를 나타내는 주파수 신호(612)를 포함하는 임의의 이용 가능한 소스로부터의 정보를 사용할 수 있다. 인코더는 특정 프레임에 대해 비트-할당 곡선(614)을 형성할 수 있으며, 이는 특정 프레임에서 각각의 대역에 대해 얼마나 많은 비트가 할당되는지를 나타낸다.
도 6의 구성에서, 인코더(604)는 비트-할당 곡선(614)을 직접 나타내는 데이터를 비트 스트림(602)에 기입할 수 있고, 디코더(606)는 비트 할당 곡선(614)을 비트 스트림(602)으로부터 직접 추출할 수 있다. 전술한 바와 같이, 비트-할당 곡선(614)을 비트 스트림(602)에 직접 저장하는 것은 비효율적일 수 있다. 이 비효율이 도 6의 영역(616)으로 나타내어져 있다. 도 7 내지 도 10에 나타내어진 시스템 구성이 이러한 비효율을 해결할 수 있다.
인코더(604)는 주파수 신호(612)를 정규화 및 양자화하고 주파수 신호(612)를 나타내는 데이터를 비트 스트림(602)에 기입할 수 있다. 디코더(606)는 비트 스트림(602)으로부터 정규화 및 양자화된 주파수 데이터를 판독할 수 있다. 그 후 디코더(606)는 주파수 데이터를 비양자화 및 비정규화한 다음, 역변환을 수행하여 주파수 데이터를 시간-영역 오디오 데이터로 변환한다.
도 7은 일부 실시예에 따른 인코더(700)의 예의 블록도를 나타낸다. 이 인코더(700) 및 그 대응하는 디코더(도 8)는 도 6의 시스템의 비효율을 해결할 수 있다. 6.
인코더(700)는 전술한 바와 같이 양자화된 대역 놈(704)을 형성할 수 있고, 또한 전술한 바와 같이 양자화된 대역 놈(704)을 나타내는 데이터를 비트 스트림(702)에 기입할 수 있다. 또한, 인코더(700)는 비트-할당 추정기(706)를 적용하여 추정된 비트-할당 곡선(708)을 형성할 수 있다. 디코더(도 8)는 동일한 비트-할당 추정기를 양자화된 대역 놈에 적용할 수 있고, 따라서 비트 스트림(702)을 판독하는 것만으로 정확하게 추정된 비트-할당 곡선(708)이 재생할 수 있음에 유의한다.
인코더(700)는 음향 심리(psychoacoustic) 모델 및 다른 것을 포함하는 임의의 이용 가능한 소스(710)로부터의 데이터를 채용할 수 있고, 비트-할당 곡선(714)을 생성하기 위해 비트-할당(712)을 수행할 수 있다. 도 7에서, 비트-할당 곡선(714)은 "실제" 비트-할당 곡선으로 지칭되는데, 이것이 인코더가 실제로 프레임의 대역에 적용하는 곡선이기 때문이다.
인코더는 실제 비트-할당 곡선(714)과 추정된 비트-할당 곡선(708) 사이의 차이(716)를 컴퓨팅하여 차이 곡선(718)을 형성할 수 있다. 전술한 바와 같이, 차이 곡선(718)은 많은 제로 또는 비교적 작은 정수를 포함할 수 있으며, 이는 실제 비트-할당 곡선(714)의 직접적인 표현보다 더 효율적으로 코딩될 수 있다(예를 들어, 비트 스트림에서 더 적은 공간을 차지함).
도 8은 일부 실시예에 따른 디코더(800)의 다른 예의 블록도를 나타낸다. 이 디코더(800) 및 그 대응하는 인코더(도 7)는 도 6의 시스템의 비효율을 해결할 수 있다.
디코더(800)는 비트 스트림(802)으로부터 양자화된 대역 놈(804)을 추출할 수 있고, 인코더(도 7의 요소(706))에서 사용된 것과 동일한 비트-할당 추정기(806)를 채용할 수 있고, 따라서 인코더에서 사용되는 동일한 추정된 비트-할당 곡선(808)(도 7의 요소(708))을 정확하게 재생할 수 있다.
디코더(800)는 비트 스트림(802)으로부터 차이 곡선(810)을 추출할 수 있다. 디코더(800)는 추정된 비트-할당 곡선(808)과 차이 곡선(810)을 합하여(812) 인코더(700)(도 7)에 의해 사용되는 실제 비트-할당 곡선(714)과 정확하게 매칭되는 재구성된 비트-할당 곡선(814)을 형성할 수 있다.
차이 곡선(도 7의 718 및 도 8의 810)은 비트-할당 곡선에 대한 수치값의 보정에 대응할 수 있다. 예를 들어, 비트-할당 곡선이 22개의 정수의 벡터인 경우, 차이 곡선(압축 이전)은 또한 22개의 정수의 벡터일 수 있다.
도 7 및 도 8의 차이 곡선 대신에 또는 이에 추가하여 사용될 수 있는 대안으로서, 인코더 및 디코더는 추정된 조정을 사용할 수 있으며, 이는 프레임의 다중 대역에 각각 영향을 줄 수 있는 하나 이상의 파라미터를 포함할 수 있다. 파라미터의 예는 주파수 단위당 비트 단위의 기울기일 수 있다. 이러한 기울기는 특정 수의 비트를 대역에 부여할 수 있으며, 여기서 비트 수는 주파수의 함수로서 대역별로 다를 수 있다. 다른 적절한 파라미터가 또한 사용될 수 있다.
도 9는 일부 실시예에 따른 인코더(900)의 다른 예의 블록도를 나타낸다. 이 인코더(900) 및 그 대응하는 디코더(도 10)는 도 6의 시스템의 비효율을 해결할 수 있다.
인코더(900)는 전술한 바와 같이, 양자화된 대역 놈(904)을 형성할 수 있고, 또한 전술한 바와 같이, 양자화된 대역 놈(904)을 나타내는 데이터를 비트 스트림(902)에 기입할 수 있다. 또한, 인코더(900)는 추정된 조정(908)을 형성하기 위해 조정 추정기(906)를 적용할 수 있다. 디코더(도 10)는 양자화된 대역 놈에 동일한 조정 추정기를 적용할 수 있고, 따라서 단지 비트 스트림(902)을 판독하는 것으로부터 추정된 조정(908)을 정확하게 재생할 수 있다.
인코더(900)는 전술한 바와 같이 "실제" 비트-할당 곡선(912)을 생성하기 위해 비트-할당(910)을 수행할 수 있다. 인코더(900)는 타겟(예를 들어, 원하는) 조정(914) 및/또는 기울기(916)를 형성하기 위해 실제 비트-할당 곡선(912)을 추가로 파라미터화할 수 있다. 인코더(900)는 기울기(916) 및/또는 타겟 조정을 나타내는 데이터를 비트 스트림에 기입할 수 있다. 인코더(900)는 차이 곡선(920)을 형성하기 위해 타겟 조정(914)과 추정된 조정(908) 사이의 차이(918)를 취할 수 있다. 인코더(900)는 차이 곡선(920)을 나타내는 데이터를 비트 스트림에 기입할 수 있다.
도 10은 일부 실시예에 따른 디코더(1000)의 다른 예의 블록도를 나타낸다. 이 디코더(1000) 및 그 대응하는 인코더(도 9)는 도 6의 시스템의 비효율을 해결할 수 있다.
디코더(1000)는 비트 스트림(1002)으로부터 양자화된 대역 놈(1004)을 추출할 수 있고, 인코더에서 사용된 것(도 9의 요소(906))과 동일한 조정 추정기(1006)를 채용할 수 있고, 따라서 인코더에서 사용된 것(도 9의 요소(908))과 동일한 추정된 조정(1008)을 정확하게 재생할 수 있다.
디코더(1000)는 비트 스트림(1002)으로부터 차이 곡선(1010)을 추출할 수 있다. 디코더(1000)는 추정된 조정(1008)과 차이 곡선(1010)을 합하여 타겟 조정(1014)을 형성할 수 있다. 디코더(1000)는 비트 스트림(1002)으로부터 기울기(1016)를 추출할 수 있고, 인코더(900)(도 9)에 의해 사용되는 실제 비트-할당 곡선(912)과 정확하게 매칭되는 재구성된 비트-할당 곡선(1020)을 형성하기 위해 기울기(1016)와 타겟 조정(1014)을 결합(1018)할 수 있다.
도 11은 일부 실시예에 따라 비트 스트림(예를 들어, 오디오 신호)을 인코딩하기 위한 방법(1100)의 예의 흐름도를 나타낸다. 본 방법(1100)은 도 1 또는 도 2의 인코딩 시스템(100 또는 200), 또는 임의의 다른 적절한 인코딩 시스템에 의해 실행될 수 있다. 본 방법(1100)은 오디오 신호를 인코딩하기 위한 단지 하나의 방법일 뿐이며; 다른 적절한 인코딩 방법이 또한 사용될 수 있다.
동작 1102에서, 인코딩 시스템은 디지털 오디오 신호를 수신할 수 있다.
동작 1104에서, 인코딩 시스템은 디지털 오디오 신호를 복수의 프레임으로 파싱할 수 있으며, 각각의 프레임은 특정 수의 오디오 샘플을 포함한다.
동작 1106에서, 인코딩 시스템은 각각의 프레임에 대한 복수의 주파수-영역 계수를 생성하기 위해 각각의 프레임의 오디오 샘플의 변환을 수행할 수 있다.
동작 1108에서, 인코딩 시스템은 각각의 프레임에 대한 복수의 주파수-영역 계수를 각각의 프레임에 대한 복수의 대역으로 분할할 수 있다.
동작 1110에서, 인코딩 시스템은 각각의 프레임에서 각각의 대역에 대해 특정 수의 비트를 할당할 수 있다.
동작 1112에서, 인코딩 시스템은 각각의 프레임에서 각각의 대역에 대한 차이값을 컴퓨팅할 수 있으며, 차이값은 각각의 프레임에서 각각의 대역에 대해 할당된 비트 수와 각각의 프레임에서 각각의 대역에 대해 할당 가능한 대응하는 추정된 비트 수 사이의 차이를 나타낸다.
동작 1114에서, 인코딩 시스템은 디지털 오디오 신호 및 차이값을 나타내는 데이터를 포함하지만 각각의 프레임에서 각각의 대역에 대해 할당된 비트 수를 직접 나타내는 데이터를 포함하지 않는 비트 스트림을 인코딩할 수 있다.
동작 1116에서, 인코딩 시스템은 비트 스트림을 출력할 수 있다.
일부 예에서, 본 방법(1100)은 선택적으로 각각의 프레임의 각각의 대역의 양자화된 놈을 컴퓨팅하는 단계로서, 각각의 양자화된 놈은 대역의 주파수-영역 계수로부터 도출되고 복수의 특정된 값 중 하나와 동일하게 되도록 양자화된 값을 갖는, 컴퓨팅하는 단계; 양자화된 놈에 기초하여, 각각의 프레임에서 각각의 대역에 대해 할당 가능한 추정된 비트 수를 결정하는 단계; 및 양자화된 놈을 나타내는 데이터를 비트 스트림으로 인코딩하는 단계를 더 포함한다.
일부 예에서, 각각의 프레임에서 각각의 대역에 대해 할당된 추정된 비트 수는 양자화된 놈에만 기초하여 결정될 수 있다.
일부 예에서, 특정 프레임에서 각각의 대역에 대해 할당된 추정된 비트 수는 특정 프레임에 대한 양자화된 놈에만 기초하여 결정될 수 있다.
일부 예에서, 특정 프레임에서 각각의 대역에 대해 할당된 추정된 비트 수는 디지털 오디오 신호에서 적어도 하나의 다른 프레임에 대한 양자화된 놈에 적어도 부분적으로 기초하여 결정될 수 있다.
일부 예에서, 본 방법(1100)은 선택적으로 적어도 하나의 타겟 파라미터를 결정하는 단계; 적어도 하나의 타겟 파라미터로부터 적어도 부분적으로 각각의 프레임에서 각각의 대역에 대해 할당 가능한 추정된 비트 수를 결정하는 단계; 및 적어도 하나의 타겟 파라미터를 나타내는 데이터를 비트 스트림으로 인코딩하는 단계를 더 포함할 수 있다.
일부 예에서, 적어도 하나의 타겟 파라미터는 각각의 대역에 대해 할당 가능한 기준 비트 수를 포함할 수 있다. 일부 예에서, 본 방법(1100)은 선택적으로, 디지털 오디오 신호의 다중 프레임에 대해, 각각의 대역에 대해 할당 가능한 추정된 비트 수를 각각의 대역에 대해 할당 가능한 기준 비트 수와 동일하게 되도록 설정하는 단계; 및 각각의 대역에 대해 할당 가능한 기준 비트 수를 나타내는 데이터를 비트 스트림으로 인코딩하는 단계를 더 포함할 수 있다.
일부 예에서, 적어도 하나의 타겟 파라미터는 기울기를 포함한다.
일부 예에서, 변환은 수정된 이산 코사인 변환이다.
일부 예에서, 각각의 프레임은 정확하게 1024개의 샘플을 포함한다.
일부 예에서, 각각의 복수의 주파수-영역 계수에서 주파수-영역 계수의 수는 각각의 프레임에서 오디오 샘플의 특정된 수와 동일하다.
일부 예에서, 각각의 프레임에 대한 복수의 주파수-영역 계수는 정확하게 1024개의 주파수-영역 계수를 포함한다.
일부 예에서, 각각의 프레임에 대한 복수의 대역은 정확히 22개의 대역을 포함한다.
일부 예에서, 인코딩 시스템은 코덱에 포함된다.
전술한 예의 각각은 임의의 조합으로 하나 또는 다수의 다른 예와 선택적으로 조합될 수 있다.
도 12는 일부 실시예에 따른 비트 스트림(예를 들어, 인코딩된 오디오 신호)을 디코딩하기 위한 방법(1200)의 예의 흐름도를 나타낸다. 본 방법(1200)은 도 3 또는 도 4의 디코딩 시스템(300 또는 400) 또는 임의의 다른 적절한 디코딩 시스템에 의해 실행될 수 있다. 본 방법(1200)은 비트 스트림(예를 들어, 인코딩된 오디오 신호)에 대한 단지 하나의 방법일 뿐이며; 다른 적절한 디코딩 방법이 또한 사용될 수 있다.
동작 1202에서, 디코딩 시스템은 비트 스트림을 수신할 수 있고, 비트 스트림은 복수의 프레임을 포함하고, 각각의 프레임은 복수의 대역으로 분할된다.
동작 1204에서, 디코딩 시스템은 각각의 프레임에서 각각의 대역의 양자화된 놈을 비트 스트림으로부터 추출할 수 있다.
동작 1206에서, 디코딩 시스템은 추출된 양자화된 놈에 기초하여, 각각의 프레임에서 각각의 대역에 대해 할당 가능한 추정된 비트 수를 결정할 수 있다.
동작 1208에서, 디코딩 시스템은 각각의 프레임의 각각의 대역에 대해, 비트 스트림으로부터 차이값을 추출할 수 있으며, 차이값은 각각의 프레임에서 각각의 대역에 대해 할당된 비트 수와 각각의 프레임에서 각각의 대역에 대해 할당 가능한 대응하는 추정된 비트 수 사이의 차이를 나타낸다.
동작 1210에서, 디코딩 시스템은 각각의 프레임에서 각각의 대역에 대해 할당된 비트 수를 결정하기 위해, 차이값과 각각의 프레임에서 각각의 대역에 대해 할당 가능한 대응하는 추정 비트 수를 결합할 수 있다.
동작 1212에서, 디코딩 시스템은 각각의 프레임에서 각각의 대역에 대해 결정된 비트 수를 할당할 수 있다.
동작 1214에서, 디코딩 시스템은 주파수 영역에서 디코딩된 디지털 오디오 신호를 생성하기 위해 각각의 프레임에서 각각의 대역에 대해 결정된 비트 수를 사용하여 비트 스트림을 디코딩할 수 있다. 디코딩 시스템은 선택적으로 시간 영역에서 디코딩된 디지털 오디오 신호를 획득하기 위해 주파수 영역에서 디코딩된 디지털 오디오 신호에 역변환을 추가로 적용할 수 있다.
일부 예에서, 각각의 프레임에서 각각의 대역에 대해 할당된 추정된 비트 수는 양자화된 놈에만 기초하여 결정될 수 있다.
일부 예에서, 특정 프레임에서 각각의 대역에 대해 할당된 추정된 비트 수는 특정 프레임에 대한 양자화된 놈에만 기초하여 결정될 수 있다.
일부 예에서, 특정 프레임에서 각각의 대역에 대해 할당된 추정된 비트 수는 디지털 오디오 신호에서 적어도 하나의 다른 프레임에 대한 양자화된 놈에 적어도 부분적으로 기초하여 결정된다.
도 13은 일부 실시예에 따른 인코딩 시스템(1300)의 예의 블록도를 나타낸다.
수신기 회로(1302)는 디지털 오디오 신호를 수신할 수 있다.
프레이머(framer) 회로(1304)는 디지털 오디오 신호를 복수의 프레임으로 파싱할 수 있으며, 각각의 프레임은 특정된 수의 오디오 샘플을 포함한다.
변환기 회로(1306)는 각각의 프레임에 대한 복수의 주파수-영역 계수를 생성하기 위해 각각의 프레임의 오디오 샘플의 변환을 수행할 수 있다.
주파수 대역 분할기 회로(1308)는 각각의 프레임에 대한 복수의 주파수-영역 계수를 각각의 프레임에 대한 복수의 대역으로 분할할 수 있다.
프레임 비트 할당 회로(1310)는 각각의 프레임에서 각각의 대역에 대해 특정된 수의 비트를 할당할 수 있다.
차이 계산 회로(1312)는 각각의 프레임에서 각각의 밴드에 대한 차이값을 컴퓨팅할 수 있으며, 차이값은 각각의 프레임에서 각각의 밴드에 대해 할당된 비트 수와 각각의 프레임에서 각각의 밴드에 대해 할당 가능한 대응하는 추정된 비트 수 사이의 차이를 나타낸다.
인코더 회로(1314)는 디지털 오디오 신호를 나타내는 데이터 및 차이값을 나타내는 데이터를 포함하지만 각각의 프레임에서 각각의 밴드에 대해 할당된 비트 수를 직접 나타내는 데이터를 포함하지 않는 비트 스트림을 인코딩할 수 있다.
출력 회로(1316)는 비트 스트림을 출력할 수 있다.
본원에 설명된 것 이외의 많은 다른 변형이 본 문서로부터 명백할 것이다. 예를 들어, 실시예에 따라, 본원에 설명된 방법 및 알고리즘 중 임의의 것의 특정 동작, 이벤트 또는 기능은 상이한 순서로 수행될 수 있거나, 추가, 병합 또는 함께 생략될 수 있다(방법 및 알고리즘의 실시를 위해 설명된 모든 동작 또는 이벤트가 필요한 것은 아님). 또한, 특정 실시예에서, 동작 또는 이벤트는 순차적이 아니라, 멀티-스레드 프로세싱, 인터럽트 프로세싱, 또는 다중 프로세서 또는 프로세서 코어 또는 다른 병렬 아키텍처와 같이 동시에 수행될 수 있다. 또한, 다른 작업 또는 프로세스가 함께 기능할 수 있는 다른 머신 및 컴퓨팅 시스템에 의해 수행될 수 있다.
본원에 개시된 실시예와 관련하여 설명된 다양한 예시적인 논리 블록, 모듈, 방법 및 알고리즘 프로세스 및 시퀀스는 전자 하드웨어, 컴퓨터 소프트웨어 또는 이들의 조합으로 구현될 수 있다. 하드웨어 및 소프트웨어의 이러한 상호 교환성을 명확하게 설명하기 위해, 다양한 예시적인 구성 요소, 블록, 모듈 및 프로세스 동작이 일반적으로 그 기능의 관점에서 상술되었다. 이러한 기능이 하드웨어 또는 소프트웨어로 구현되는지 여부는 전체 시스템에 부과된 특정 어플리케이션 및 설계 제약에 의존한다. 설명된 기능은 각각의 특정 어플리케이션에 대해 다양한 방식으로 구현될 수 있지만, 이러한 구현 결정은 본 문서의 범위를 벗어나게 하는 것으로 해석되어서는 안된다.
본원에 개시된 실시예와 관련하여 설명된 다양한 예시적인 논리 블록 및 모듈은 범용 프로세서, 프로세싱 디바이스, 하나 이상의 프로세싱 디바이스를 갖는 컴퓨팅 디바이스, 디지털 신호 프로세서(DSP), 어플리케이션 특정 집적 회로(ASIC), 필드 프로그래머블 게이트 어레이(FPGA) 또는 다른 프로그램 가능 논리 디바이스, 이산 게이트 또는 트랜지스터 논리, 이산 하드웨어 구성 요소 또는 본원에 설명된 기능을 수행하도록 설계된 이들의 임의의 조합과 같은 머신에 의해 구현되거나 수행될 수 있다. 범용 프로세서 및 프로세싱 디바이스는 마이크로프로세서일 수 있지만, 대안적으로, 프로세서는 컨트롤러, 마이크로컨트롤러 또는 상태 머신, 이들의 조합 등일 수 있다. 프로세서는 또한 DSP 및 마이크로프로세서의 조합, 복수의 마이크로프로세서, DSP 코어와 함께 하나 이상의 마이크로프로세서 또는 임의의 다른 이러한 구성과 같은 컴퓨팅 디바이스의 조합으로서 구현될 수 있다.
본원에 설명된 시스템 및 방법의 실시예는 다양한 유형의 범용 또는 특수 목적 컴퓨팅 시스템 환경 또는 구성 내에서 동작할 수 있다. 일반적으로, 컴퓨팅 환경은 하나 이상의 마이크로프로세서에 기초한 컴퓨터 시스템, 메인프레임 컴퓨터, 디지털 신호 프로세서, 휴대용 컴퓨팅 디바이스, 개인 조직자, 디바이스 컨트롤러, 기기 내 컴퓨팅 엔진, 모바일 전화, 데스크탑 컴퓨터, 모바일 컴퓨터, 태블릿 컴퓨터, 스마트폰 및 내장 컴퓨터가 있는 기기 등을 포함하지만 이에 한정되지 않는 임의의 유형의 컴퓨터 시스템을 포함할 수 있다.
이러한 컴퓨팅 디바이스는 통상적으로 개인용 컴퓨터, 서버 컴퓨터, 휴대용 컴퓨팅 디바이스, 랩탑 또는 모바일 컴퓨터, 셀 폰 및 PDA와 같은 통신 디바이스, 멀티프로세서 시스템, 마이크로프로세서-기반 시스템, 셋톱 박스, 프로그래머블 가전, 네트워크 PC, 미니컴퓨터, 메인프레임 컴퓨터, 오디오 또는 비디오 미디어 플레이어 등을 포함하지만 이에 한정되지 않는 적어도 일부 최소 컴퓨팅 능력을 갖는 디바이스에서 발견될 수 있다. 일부 실시예에서, 컴퓨팅 디바이스는 하나 이상의 프로세서를 포함할 것이다. 각각의 프로세서는 디지털 신호 프로세서(DSP), 매우 긴 명령 워드(VLIW: very long instruction word) 또는 다른 마이크로 컨트롤러와 같은 특수 마이크로프로세서 일 수 있거나, 멀티-코어 CPU의 특수 그래픽 프로세싱 유닛(GPU)-기반 코어를 포함하는 하나 이상의 프로세싱 코어를 갖는 통상의 중앙 처리 장치(CPU)일 수 있다.
본원에 개시된 실시예와 관련하여 설명된 방법, 프로세스 또는 알고리즘의 프로세스 동작은 하드웨어, 프로세서에 의해 실행되는 소프트웨어 모듈, 또는 이 둘의 임의의 조합으로 직접 구현될 수 있다. 소프트웨어 모듈은 컴퓨팅 디바이스에 의해 액세스될 수 있는 컴퓨터-판독 가능 매체에 포함될 수 있다. 컴퓨터-판독 가능 매체는 제거 가능하거나, 제거 불가능하거나, 또는 이들의 일부 조합인 휘발성 및 비휘발성 매체 모두를 포함한다. 컴퓨터-판독 가능 매체는 컴퓨터-판독 가능 또는 컴퓨터-실행 가능 명령어, 데이터 구조, 프로그램 모듈 또는 다른 데이터와 같은 정보를 저장하는 데 사용된다. 예를 들어, 컴퓨터 판독 가능 매체는 컴퓨터 저장 매체 및 통신 매체를 포함할 수 있지만, 이에 한정되는 것은 아니다.
컴퓨터 저장 매체는 블루-레이 디스크(BD), 디지털 다목적 디스크(DVD), 콤팩트 디스크(CD), 플로피 디스크, 테이프 드라이브, 하드 드라이브, 광 드라이브, 솔리드 스테이트 메모리 디바이스, RAM 메모리, ROM 메모리, EPROM 메모리, EEPROM 메모리, 플래시 메모리 또는 기타 메모리 기술, 자기 카세트, 자기 테이프, 자기 디스크 저장소 또는 기타 자기 저장 디바이스 또는 원하는 정보를 저장하는 데 사용될 수 있고 하나 이상의 컴퓨팅 디바이스에 의해 액세스될 수 있는 임의의 다른 디바이스와 같은 컴퓨터 또는 머신 판독 가능 매체 또는 저장 디바이스를 포함하지만 이에 한정되지 않는다.
소프트웨어 모듈은 RAM 메모리, 플래시 메모리, ROM 메모리, EPROM 메모리, EEPROM 메모리, 레지스터, 하드 디스크, 제거 가능 디스크, CDROM, 또는 임의의 다른 형태의 비일시적 컴퓨터-판독 가능 저장 매체, 매체 또는 본 기술 분야에 알려진 물리적 컴퓨터 저장소에 상주할 수 있다. 예시적인 저장 매체는 프로세서가 저장 매체로부터 정보를 판독하고 이에 정보를 기입할 수 있도록 프로세서에 커플링될 수 있다. 대안적으로, 저장 매체는 프로세서와 일체형일 수 있다. 프로세서 및 저장 매체는 어플리케이션 특정 집적 회로(ASIC)에 상주할 수 있다. ASIC는 사용자 단말에 상주할 수 있다. 대안적으로, 프로세서 및 저장 매체는 사용자 단말에서 이산 구성 요소로서 상주할 수 있다.
본 문서에 사용된 "비일시적"이라는 문구는 "지속적이거나 오래 존재하는"을 의미한다. "비일시적 컴퓨터-판독 가능 매체"라는 문구는 일시적인 전파 신호를 단지 제외하고는 임의의 및 모든 컴퓨터-판독 가능 매체를 포함한다. 이것은 한정이 아닌 예로서, 레지스터 메모리, 프로세서 캐시 및 랜덤-액세스 메모리(RAM)와 같은 비일시적 컴퓨터-판독 가능 매체를 포함한다.
"오디오 신호"라는 문구는 물리적 사운드를 나타내는 신호이다.
컴퓨터-판독 가능 또는 컴퓨터-실행 가능 명령어, 데이터 구조, 프로그램 모듈 등과 같은 정보의 보유는 또한 하나 이상의 변조된 데이터 신호, (반송파와 같은) 전자파 또는 다른 전송 메커니즘 또는 통신 프로토콜을 인코딩하기 위해 다양한 통신 매체를 사용함으로써 달성될 수 있으며, 임의의 유무선 정보 전달 메커니즘을 포함한다. 일반적으로, 이들 통신 매체는 신호의 정보 또는 명령어를 인코딩하는 방식으로 설정되거나 변경된 하나 이상의 특성을 갖는 신호를 지칭한다. 예를 들어, 통신 매체는 하나 이상의 변조된 데이터 신호를 반송하는 유선 네트워크 또는 직접-유선 접속과 같은 유선 매체, 및 음향, 무선 주파수(RF), 적외선, 레이저 및 하나 이상의 변조된 데이터 신호 또는 전자파를 송신, 수신하거나 둘 모두를 수행하기 위한 다른 무선 매체와 같은 무선 매체를 포함한다. 전술한 것 중 임의의 조합이 또한 통신 매체의 범위 내에 포함되어야 한다.
또한, 본원에 설명된 인코딩 및 디코딩 시스템 및 방법의 다양한 실시예의 일부 또는 전부를 구현하는 소프트웨어, 프로그램, 컴퓨터 프로그램 제품 또는 그 일부 중 하나 또는 임의의 조합은 컴퓨터 실행 가능 명령어 또는 다른 데이터 구조의 형태로 컴퓨터 또는 머신 판독 가능 매체 또는 저장 디바이스 및 통신 매체의 임의의 원하는 조합으로부터 저장, 수신, 전송 또는 판독될 수 있다.
본원에 설명된 시스템 및 방법의 실시예는 컴퓨팅 디바이스에 의해 실행되는 프로그램 모듈과 같은 컴퓨터-실행 가능 명령어의 일반적인 맥락에서 추가로 설명될 수 있다. 일반적으로, 프로그램 모듈은 특정 작업을 수행하거나 특정 추상 데이터 유형을 구현하는 루틴, 프로그램, 객체, 구성 요소, 데이터 구조 등을 포함한다. 본원에 설명된 실시예는 또한 하나 이상의 원격 프로세싱 디바이스에 의해 또는 하나 이상의 통신 네트워크를 통해 연결된 하나 이상의 디바이스의 클라우드 내에서 작업이 수행되는 분산 컴퓨팅 환경에서 실시될 수 있다. 분산 컴퓨팅 환경에서, 프로그램 모듈은 매체 저장 디바이스를 포함하는 로컬 및 원격 컴퓨터 저장 매체 모두에 위치될 수 있다. 또한, 전술한 명령어는 프로세서를 포함하거나 포함하지 않을 수 있는 하드웨어 논리 회로로서 부분적으로 또는 전체적으로 구현될 수 있다.
달리 구체적으로 언급되지 않거나 사용된 맥락 내에서 달리 이해되지 않는 한, 그 중에서 "할 수 있다(can)", "할 수도 있다(might)", "할 수도 있다(may)", "예를 들어" 등과 같은 본원에서 사용된 조건부 언어는 일반적으로 특정 실시예가 특정 특징, 요소 및/또는 상태를 포함하지만 다른 실시예는 이를 포함하지 않는다는 것을 전달하도록 의도된 것이다. 따라서, 이러한 조건부 언어는 일반적으로 특징, 요소 및/또는 상태가 어떤 방식으로든 하나 이상의 실시예에 대해 필요하거나 하나 이상의 실시예가 저자 입력 또는 프롬프팅으로 또는 이들 없이 이러한 특징, 요소 및/또는 상태가 임의의 특정 실시예에 포함되거나 임의의 특정 실시예에서 수행되어야 할지 여부를 결정하기 위한 논리를 반드시 포함한다는 것을 암시하는 것으로 의도되지 않는다. "포함하는(comprising)", "포괄하는(including)", "갖는(having)" 등의 용어는 동의어이며, 개방형 방식으로 포괄적으로 사용되며, 추가 요소, 특징, 행위, 동작 등을 배제하지 않는다. 또한, "또는"이라는 용어는 포괄적인 의미로(그리고 배타적인 의미가 아닌 것으로) 사용되었으므로, 예를 들어, 요소의 목록을 연결하기 위해 사용될 때 "또는"이라는 용어는 목록의 요소의 하나, 일부 또는 전부를 의미한다.
전술한 상세한 설명은 다양한 실시예에 적용되는 신규한 특징을 나타내고, 설명하고 적시하였지만, 예시된 디바이스 또는 알고리즘의 형태 및 상세 사항의 다양한 생략, 대체 및 변경이 본 개시의 범위를 벗어나지 않고도 이루어질 수 있음을 이해할 것이다. 인식되는 바와 같이, 본원에 설명된 본 발명의 특정 실시예는 본원에 기술된 모든 특징 및 이점을 제공하지 않는 형태 내에서 구현될 수 있는데, 일부 특징은 다른 특징과 별도로 사용되거나 실시될 수 있기 때문이다.
또한, 주제가 구조적 특징 및 방법론적 동작에 특정한 언어로 설명되었지만, 첨부된 청구항에 정의된 주제는 반드시 전술한 특정 특징 또는 동작으로 한정되지 않는다는 것을 이해해야 한다. 오히려, 전술한 특정의 특징 및 동작은 청구항을 구현하는 예시적인 형태로서 개시된다.

Claims (20)

  1. 인코딩 시스템으로서,
    프로세서; 및
    상기 프로세서에 의해 실행 가능한 명령어들을 저장하는 메모리 디바이스로서, 상기 명령어들은 오디오 신호를 인코딩하기 위한 방법을 수행하기 위해 상기 프로세서에 의해 실행 가능한 것인, 상기 메모리 디바이스를 포함하고, 상기 방법은:
    디지털 오디오 신호를 수신하는 단계;
    상기 디지털 오디오 신호를 복수의 프레임들로 파싱(parsing)하는 단계로서, 각각의 프레임은 특정된 수(specified number)의 오디오 샘플들을 포함하는 것인, 상기 파싱하는 단계;
    각각의 프레임에 대한 복수의 주파수-영역 계수들을 생성하기 위해 각각의 프레임의 상기 오디오 샘플들의 변환을 수행하는 단계;
    각각의 프레임에 대한 상기 복수의 주파수-영역 계수들을 각각의 프레임에 대한 복수의 대역들로 분할하는 단계;
    각각의 프레임에서 각각의 대역에 대해 특정된 수의 비트들을 할당하는 단계;
    각각의 프레임에서 각각의 대역에 대한 차이값을 컴퓨팅하는 단계로서, 상기 차이값은 각각의 프레임에서 각각의 대역에 대해 할당된 상기 비트 수와 각각의 프레임에서 각각의 대역에 대해 할당 가능한 대응하는 추정된 비트 수 사이의 차이를 나타내는 것인, 상기 컴퓨팅하는 단계;
    비트 스트림을 인코딩하는 단계로서, 상기 비트 스트림은:
    상기 디지털 오디오 신호를 나타내는 데이터, 및
    상기 차이값을 나타내는 데이터를 포함하지만 각각의 프레임에서 각각의 대역에 대해 할당된 비트 수를 직접 나타내는 데이터를 포함하지 않는 것인, 상기 인코딩하는 단계; 및
    상기 비트 스트림을 출력하는 단계를 포함하는 것인, 인코딩 시스템.
  2. 제1항에 있어서,
    상기 방법은:
    각각의 프레임의 각각의 대역의 양자화된 놈(norm)을 컴퓨팅하는 단계로서, 각각의 양자화된 놈은 상기 대역의 주파수-영역 계수들로부터 도출되고, 복수의 특정된 값들 중 하나와 동일하게 되도록 양자화된 값을 갖는, 상기 컴퓨팅하는 단계;
    상기 양자화된 놈들에 기초하여, 각각의 프레임에서 각각의 대역에 대해 할당 가능한 상기 추정된 비트 수를 결정하는 단계; 및
    상기 양자화된 놈들을 나타내는 데이터를 상기 비트 스트림으로 인코딩하는 단계를 더 포함하는 것인, 인코딩 시스템.
  3. 제2항에 있어서,
    각각의 프레임에서 각각의 대역에 대해 할당된 상기 추정된 비트 수는 상기 양자화된 놈들에만 기초하여 결정되는 것인, 인코딩 시스템.
  4. 제3항에 있어서,
    특정 프레임에서 각각의 대역에 대해 할당된 상기 추정된 비트 수는 상기 특정 프레임에 대한 상기 양자화된 놈들에만 기초하여 결정되는 것인, 인코딩 시스템.
  5. 제3항에 있어서,
    특정 프레임에서 각각의 대역에 대해 할당된 상기 추정된 비트 수는, 상기 디지털 오디오 신호에서 적어도 하나의 다른 프레임에 대한 양자화된 놈들에 적어도 부분적으로 기초하여 결정되는 것인, 인코딩 시스템.
  6. 제1항 내지 제5항 중 어느 한 항에 있어서,
    상기 방법은:
    적어도 하나의 타겟 파라미터를 결정하는 단계;
    상기 적어도 하나의 타겟 파라미터로부터 적어도 부분적으로 각각의 프레임에서 각각의 대역에 대해 할당 가능한 상기 추정된 비트 수를 결정하는 단계; 및
    상기 적어도 하나의 타겟 파라미터를 나타내는 데이터를 상기 비트 스트림으로 인코딩하는 단계를 더 포함하는 것인, 인코딩 시스템.
  7. 제6항에 있어서,
    상기 적어도 하나의 타겟 파라미터는 각각의 대역에 대해 할당 가능한 기준 비트 수를 포함하고; 그리고
    상기 방법은:
    상기 디지털 오디오 신호의 다중 프레임들에 대해, 각각의 대역에 대해 할당 가능한 상기 추정된 비트 수를 각각의 대역에 대해 할당 가능한 상기 기준 비트 수와 동일하게 되도록 설정하는 단계; 및
    각각의 대역에 대해 할당 가능한 상기 기준 비트 수를 나타내는 데이터를 상기 비트 스트림으로 인코딩하는 단계를 더 포함하는 것인, 인코딩 시스템.
  8. 제6항에 있어서,
    상기 적어도 하나의 타겟 파라미터는 기울기를 포함하는 것인, 인코딩 시스템.
  9. 제1항에 있어서,
    상기 변환은 수정된 이산 코사인 변환인 것인, 인코딩 시스템.
  10. 제1항에 있어서,
    상기 각각의 프레임은 정확하게 1024개의 샘플들을 포함하는 것인, 인코딩 시스템.
  11. 제1항에 있어서,
    각각의 복수의 주파수-영역 계수들에서의 주파수-영역 계수들의 수는, 각각의 프레임에서의 오디오 샘플들의 상기 특정된 수와 동일한, 인코딩 시스템.
  12. 제1항에 있어서,
    각각의 프레임에 대한 상기 복수의 주파수-영역 계수들은 정확하게 1024개의 주파수-영역 계수들을 포함하는 것인, 인코딩 시스템.
  13. 제1항에 있어서,
    각각의 프레임에 대한 상기 복수의 대역들은 정확하게 22개의 대역들을 포함하는 것인, 인코딩 시스템.
  14. 제1항에 있어서,
    상기 인코딩 시스템은 코덱(codec)에 포함되는 것인, 인코딩 시스템.
  15. 디코딩 시스템으로서,
    프로세서; 및
    상기 프로세서에 의해 실행 가능한 명령어들을 저장하는 메모리 디바이스로서, 상기 명령어들은 인코딩된 오디오 신호를 디코딩하기 위한 방법을 수행하기 위해 상기 프로세서에 의해 실행 가능한 것인, 상기 메모리 디바이스를 포함하고, 상기 방법은:
    복수의 프레임들을 포함하는 비트 스트림을 수신하는 단계로서, 각각의 프레임은 복수의 대역들로 분할되는 것인, 상기 수신하는 단계;
    상기 비트 스트림으로부터 각각의 프레임에서 각각의 대역의 양자화된 놈을 추출하는 단계;
    상기 추출된 양자화된 놈들에 기초하여, 각각의 프레임에서 각각의 대역에 대해 할당 가능한 추정된 비트 수를 결정하는 단계;
    각각의 프레임의 각각의 대역에 대해, 상기 비트 스트림으로부터 차이값들을 추출하는 단계로서, 상기 차이값들은 각각의 프레임에서 각각의 대역에 대해 할당된 비트 수와 각각의 프레임에서 각각의 대역에 대해 할당 가능한 대응하는 추정된 비트 수 사이의 차이를 나타내는 것인, 상기 추출하는 단계;
    각각의 프레임에서 각각의 대역에 대해 할당된 비트 수를 결정하기 위해, 상기 차이값들과 각각의 프레임에서 각각의 대역에 대해 할당 가능한 상기 대응하는 추정된 비트 수를 결합하는 단계;
    각각의 프레임에서 각각의 대역에 대해 결정된 비트 수를 할당하는 단계; 및
    디코딩된 디지털 오디오 신호를 생성하기 위해 각각의 프레임에서 각각의 대역에 대해 상기 결정된 비트 수를 사용하여 상기 비트 스트림을 디코딩하는 단계를 포함하는 것인, 디코딩 시스템.
  16. 제15항에 있어서,
    각각의 프레임에서 각각의 대역에 대해 할당된 상기 추정된 비트 수는 상기 양자화된 놈들에만 기초하여 결정되는 것인, 디코딩 시스템.
  17. 제15항에 있어서,
    특정 프레임에서 각각의 대역에 대해 할당된 상기 추정된 비트 수는 상기 특정 프레임에 대한 상기 양자화된 놈들에만 기초하여 결정되는 것인, 디코딩 시스템.
  18. 제15항에 있어서,
    특정 프레임에서 각각의 대역에 대해 할당된 상기 추정된 비트 수는, 상기 디지털 오디오 신호에서 적어도 하나의 다른 프레임에 대한 양자화된 놈들에 적어도 부분적으로 기초하여 결정되는 것인, 디코딩 시스템.
  19. 인코딩 시스템으로서,
    디지털 오디오 신호를 수신하는 수신기 회로;
    상기 디지털 오디오 신호를 복수의 프레임들로 파싱하는 프레이머(framer) 회로로서, 각각의 프레임은 특정된 수의 오디오 샘플들을 포함하는 것인, 상기 프레이머 회로;
    각각의 프레임에 대한 복수의 주파수-영역 계수들을 생성하기 위해 각각의 프레임의 상기 오디오 샘플들의 변환을 수행하는 변환기 회로;
    각각의 프레임에 대한 상기 복수의 주파수-영역 계수들을 각각의 프레임에 대한 복수의 대역들로 분할하는 주파수 대역 분할기 회로;
    각각의 프레임에서 각각의 대역에 대해 특정된 비트 수를 할당하는 프레임 비트 할당 회로;
    각각의 프레임에서 각각의 대역에 대한 차이값을 컴퓨팅하는 차이 계산 회로로서, 상기 차이값은 각각의 프레임에서 각각의 대역에 대해 할당된 상기 비트 수와 각각의 프레임에서 각각의 대역에 대해 할당 가능한 대응하는 추정된 비트 수 사이의 차이를 나타내는 것인, 상기 차이 계산 회로;
    비트 스트림을 인코딩하는 인코더 회로로서, 상기 비트 스트림은:
    상기 디지털 오디오 신호를 나타내는 데이터, 및
    상기 차이값을 나타내는 데이터를 포함하지만 각각의 프레임에서 각각의 대역에 대해 할당된 상기 비트 수를 직접 나타내는 데이터를 포함하지 않는 것인, 상기 인코더 회로; 및
    상기 비트 스트림을 출력하는 출력 회로를 포함하는 것인, 인코딩 시스템.
  20. 제19항에 있어서,
    특정 프레임에서 각각의 대역에 대해 할당된 상기 추정된 비트 수는 상기 특정 프레임에 대한 상기 양자화된 놈들에만 기초하여 결정되는 것인, 인코딩 시스템.
KR1020197034809A 2017-04-25 2018-04-23 디지털 오디오 신호에서의 차분 데이터 KR102615901B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201762489650P 2017-04-25 2017-04-25
US62/489,650 2017-04-25
US15/939,473 2018-03-29
US15/939,473 US10699721B2 (en) 2017-04-25 2018-03-29 Encoding and decoding of digital audio signals using difference data
PCT/US2018/028877 WO2018200384A1 (en) 2017-04-25 2018-04-23 Difference data in digital audio signals

Publications (2)

Publication Number Publication Date
KR20200012861A true KR20200012861A (ko) 2020-02-05
KR102615901B1 KR102615901B1 (ko) 2023-12-19

Family

ID=63852420

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020197034809A KR102615901B1 (ko) 2017-04-25 2018-04-23 디지털 오디오 신호에서의 차분 데이터

Country Status (6)

Country Link
US (1) US10699721B2 (ko)
EP (1) EP3616325B1 (ko)
JP (1) JP7257965B2 (ko)
KR (1) KR102615901B1 (ko)
CN (1) CN110870005B (ko)
WO (1) WO2018200384A1 (ko)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10699721B2 (en) 2017-04-25 2020-06-30 Dts, Inc. Encoding and decoding of digital audio signals using difference data
EP3751567B1 (en) * 2019-06-10 2022-01-26 Axis AB A method, a computer program, an encoder and a monitoring device
CN112767955B (zh) * 2020-07-22 2024-01-23 腾讯科技(深圳)有限公司 音频编码方法及装置、存储介质、电子设备
US11769478B1 (en) 2021-07-15 2023-09-26 Dialog Semiconductor B.V. Digital signal processing system

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5414795A (en) * 1991-03-29 1995-05-09 Sony Corporation High efficiency digital data encoding and decoding apparatus
JPH08251031A (ja) * 1995-03-07 1996-09-27 Mitsubishi Electric Corp 符号器および復号器
JP2006235253A (ja) * 2005-02-25 2006-09-07 Toa Corp 符号化装置、符号化方法、復号化装置及び復号化方法
JP2009098510A (ja) * 2007-10-18 2009-05-07 Sanyo Electric Co Ltd 音声記録装置
US20090180531A1 (en) * 2008-01-07 2009-07-16 Radlive Ltd. codec with plc capabilities
US20120069898A1 (en) * 2010-09-17 2012-03-22 Jean-Marc Valin Methods and systems for adaptive time-frequency resolution in digital data coding
KR20160060161A (ko) * 2011-02-14 2016-05-27 프라운호퍼 게젤샤프트 쭈르 푀르데룽 데어 안겐반텐 포르슝 에. 베. 시간-도메인 및 주파수-도메인 코딩 방식을 지원하는 오디오 코덱

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5222189A (en) 1989-01-27 1993-06-22 Dolby Laboratories Licensing Corporation Low time-delay transform coder, decoder, and encoder/decoder for high-quality audio
US5956674A (en) 1995-12-01 1999-09-21 Digital Theater Systems, Inc. Multi-channel predictive subband audio coder using psychoacoustic adaptive bit allocation in frequency, time and over the multiple channels
WO1999021367A1 (fr) * 1997-10-20 1999-04-29 Mitsubishi Denki Kabushiki Kaisha Codeur et decodeur d'image
KR100548891B1 (ko) * 1998-06-15 2006-02-02 마츠시타 덴끼 산교 가부시키가이샤 음성 부호화 장치 및 음성 부호화 방법
JP3352406B2 (ja) * 1998-09-17 2002-12-03 松下電器産業株式会社 オーディオ信号の符号化及び復号方法及び装置
JP4021124B2 (ja) * 2000-05-30 2007-12-12 株式会社リコー デジタル音響信号符号化装置、方法及び記録媒体
KR100825752B1 (ko) * 2005-11-21 2008-04-29 한국전자통신연구원 Svc에서 효율적인 비트율 제어 방법 및 장치
GB2454190A (en) * 2007-10-30 2009-05-06 Cambridge Silicon Radio Ltd Minimising a cost function in encoding data using spectral partitioning
US8386266B2 (en) 2010-07-01 2013-02-26 Polycom, Inc. Full-band scalable audio codec
WO2013061531A1 (ja) * 2011-10-28 2013-05-02 パナソニック株式会社 音声符号化装置、音声復号装置、音声符号化方法及び音声復号方法
PL3457400T3 (pl) * 2012-12-13 2024-02-19 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Urządzenie do kodowania głosowego audio, urządzenie do dekodowania głosowego audio, sposób kodowania głosowego audio i sposób dekodowania głosowego audio
PL3046104T3 (pl) * 2013-09-16 2020-02-28 Samsung Electronics Co., Ltd. Sposób kodowania sygnału oraz sposób dekodowania sygnału
WO2015122752A1 (ko) * 2014-02-17 2015-08-20 삼성전자 주식회사 신호 부호화방법 및 장치와 신호 복호화방법 및 장치
US9779739B2 (en) * 2014-03-20 2017-10-03 Dts, Inc. Residual encoding in an object-based audio system
US10699721B2 (en) 2017-04-25 2020-06-30 Dts, Inc. Encoding and decoding of digital audio signals using difference data

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5414795A (en) * 1991-03-29 1995-05-09 Sony Corporation High efficiency digital data encoding and decoding apparatus
JPH08251031A (ja) * 1995-03-07 1996-09-27 Mitsubishi Electric Corp 符号器および復号器
JP2006235253A (ja) * 2005-02-25 2006-09-07 Toa Corp 符号化装置、符号化方法、復号化装置及び復号化方法
JP2009098510A (ja) * 2007-10-18 2009-05-07 Sanyo Electric Co Ltd 音声記録装置
US20090180531A1 (en) * 2008-01-07 2009-07-16 Radlive Ltd. codec with plc capabilities
US20120069898A1 (en) * 2010-09-17 2012-03-22 Jean-Marc Valin Methods and systems for adaptive time-frequency resolution in digital data coding
KR20160060161A (ko) * 2011-02-14 2016-05-27 프라운호퍼 게젤샤프트 쭈르 푀르데룽 데어 안겐반텐 포르슝 에. 베. 시간-도메인 및 주파수-도메인 코딩 방식을 지원하는 오디오 코덱

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
EVS Codec Detailed algorithmic description (3GPP TS 26.445 version 13.4.1 Release 13). ETSI TS 126 445 V13.4.1. 2017.04. *
Low-complexity, full-band audio coding for high-quality, conversational applications. Recommendation ITU-T G.719. 2008.06.* *
Marina Bosi, et al. ISO/IEC MPEG-2 advanced audio coding. Journal of the Audio engineering society, 1997.* *
Text of ISO/IEC13818-7:2004 (MPEG-2 AAC 3rd edition). ISO/IEC JTC1/SC29/WG11 N6428. 2004.03. *

Also Published As

Publication number Publication date
CN110870005B (zh) 2023-12-12
WO2018200384A1 (en) 2018-11-01
JP2020518030A (ja) 2020-06-18
EP3616325B1 (en) 2023-07-26
US10699721B2 (en) 2020-06-30
EP3616325C0 (en) 2023-07-26
CN110870005A (zh) 2020-03-06
EP3616325A1 (en) 2020-03-04
US20180308494A1 (en) 2018-10-25
JP7257965B2 (ja) 2023-04-14
KR102615901B1 (ko) 2023-12-19
EP3616325A4 (en) 2020-12-09

Similar Documents

Publication Publication Date Title
US10841584B2 (en) Method and apparatus for pyramid vector quantization de-indexing of audio/video sample vectors
KR102615901B1 (ko) 디지털 오디오 신호에서의 차분 데이터
KR102613282B1 (ko) 디지털 오디오 신호들에서의 가변 알파벳 크기
RU2702265C1 (ru) Способ и устройство обработки сигналов
JP6979048B2 (ja) 低複雑度の調性適応音声信号量子化
US10789964B2 (en) Dynamic bit allocation methods and devices for audio signal
KR20190040063A (ko) 인덱스 코딩 및 비트 스케줄링을 갖는 양자화기
JP7157736B2 (ja) サブバンドエネルギー平滑化を伴う変換ベースのオーディオコーデック及び方法
US9425820B2 (en) Vector quantization with non-uniform distributions
CN110660400A (zh) 立体声信号的编码、解码方法、编码装置和解码装置

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant