KR20170020540A - 피라미드 벡터 양자화기의 형상 검색 - Google Patents

피라미드 벡터 양자화기의 형상 검색 Download PDF

Info

Publication number
KR20170020540A
KR20170020540A KR1020177003688A KR20177003688A KR20170020540A KR 20170020540 A KR20170020540 A KR 20170020540A KR 1020177003688 A KR1020177003688 A KR 1020177003688A KR 20177003688 A KR20177003688 A KR 20177003688A KR 20170020540 A KR20170020540 A KR 20170020540A
Authority
KR
South Korea
Prior art keywords
loop
word length
vector
enloop
unit
Prior art date
Application number
KR1020177003688A
Other languages
English (en)
Other versions
KR101777994B1 (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 KR20170020540A publication Critical patent/KR20170020540A/ko
Application granted granted Critical
Publication of KR101777994B1 publication Critical patent/KR101777994B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; 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/032Quantisation or dequantisation of spectral components
    • G10L19/038Vector quantisation, e.g. TwinVQ audio
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; 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/0017Lossless audio signal coding; Perfect reconstruction of coded audio signal by transmission of coding error
    • 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/3082Vector coding
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; 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
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; 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/002Dynamic bit allocation
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; 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/032Quantisation or dequantisation of spectral components
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; 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/04Speech 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 predictive techniques
    • G10L19/08Determination or coding of the excitation function; Determination or coding of the long-term prediction parameters
    • G10L19/10Determination or coding of the excitation function; Determination or coding of the long-term prediction parameters the excitation function being a multipulse excitation
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; 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/04Speech 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 predictive techniques
    • G10L19/16Vocoder architecture
    • G10L19/167Audio streaming, i.e. formatting and decoding of an encoded audio signal representation into a data stream for transmission or storage purposes
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; 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
    • G10L2019/0001Codebooks
    • G10L2019/0013Codebook search algorithms

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Spectroscopy & Molecular Physics (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Signal Processing (AREA)
  • Health & Medical Sciences (AREA)
  • Computational Linguistics (AREA)
  • Human Computer Interaction (AREA)
  • Acoustics & Sound (AREA)
  • Multimedia (AREA)
  • Theoretical Computer Science (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Analogue/Digital Conversion (AREA)
  • Transmission And Conversion Of Sensor Element Output (AREA)

Abstract

PVQ(Pyramid Vector Quantizer) 형상 검색을 위한 본 명세서에서의 인코더 및 방법이 제공되며, PVQ는 타겟 벡터 x를 입력으로서 취하고, 내부 차원 검색 루프에서 단위 펄스를 반복적으로 부가함으로써 벡터 y를 도출한다. 방법은, 단위 펄스 부가를 위한 다음 내부 차원 검색 루프를 입력하기 전에, 전류 벡터 y의 최대 펄스 진폭 maxampy에 기초하여, 현재 비트 워드 길이 이상이 다가오는 내부 차원 루프에서 무손실 방식으로 변수 enloopy를 나타내는데 필요한지를 결정하는 단계를 포함한다. 변수 enloopy는 벡터 y의 누산된 에너지와 관련된다. 이러한 방법을 수행하면은 인코더가 합리적인 수준에서 검색의 복잡성을 유지할 수 있다. 예를 들어, 다가오는 내부 루프에서 "최악의 경우의 시나리오"가 현재 사용되는 것보다 더 높은 정밀도를 가진 내부 루프를 필요로 하는지를 분석함으로써 인코더가 필요한 경우에만 증가된 정밀도의 루프를 적용하도록 할 수 있다.

Description

피라미드 벡터 양자화기의 형상 검색{PYRAMID VECTOR QUANTIZER SHAPE SEARCH}
본 명세서에서의 개시 내용(disclosure)은 일반적으로 인코더에 의해 수행되는 벡터 양자화(vector quantization; VQ)에 관한 것이다.
비제약(unconstrained) 벡터 양자화는 그룹화된 샘플, 즉 특정 길이의 벡터에 대한 최적의 양자화 방법이라는 것으로 공지되어 있다. 그러나, 비제약 벡터 양자화의 구현은 복잡성 및 메모리 용량의 관점에서 높은 요구 사항을 의미한다. 메모리 및 검색 복잡성 제약이 있는 상황에서도 벡터 양자화의 구현을 가능하게 하려는 욕구는 소위 구조화된 벡터 양자화기를 개발하게 되었다. 상이한 구조체는 검색 복잡성과 메모리 요구 사항의 관점에서 상이한 트레이드오프(trade-off)를 제공한다. 이러한 하나의 방법은 타겟 벡터 t가 형상 벡터 x 및 이득 값 G를 사용하여 표현되는 소위 이득 형상 벡터 양자화이다:
Figure pct00001
(식 0)
이득 형상 벡터 양자화의 개념은 타겟 벡터 t를 직접 양자화하는 대신에 쌍 {x, G}를 양자화하는 것이다. 이득(G) 및 형상(x)의 구성 요소는 정규화된 형상 입력에 대해 조정되는 형상 양자화기, 및 신호의 동역학(dynamics)을 처리하는 이득 양자화기를 사용하여 인코딩된다. 이러한 이득 형상 구조체는 정밀 구조(fine structure)라고도 불리는 동역학 및 형상으로의 분할이 지각 청각적 모델(perceptual auditory model)에 잘 부합하기 때문에 오디오 코딩에서 빈번하게 사용된다. 이득 형상 개념은 또한 이산 코사인 변환 계수 또는 비디오 코딩에 사용되는 다른 계수에 적용될 수 있다.
ITU-T G.718 및 IETF Opus(RFC 6716)와 같은 많은 음성 및 오디오 코덱은 타겟 음성/오디오 신호의 스펙트럼 계수를 인코딩하기 위해 구조화된 PVQ에 기초하여 이득 형상 VQ를 사용한다.
PVQ 코딩 개념은 R. Fischer에 의해 1983-1986년경에 도입되었고, 더욱 효율적인 디지털 신호 프로세서(Digital Signal Processor; DSP)의 출현으로 그 이후 실제 사용으로 발전해 왔다. PVQ 인코딩 개념은 K 단위 펄스의 정수 L1-놈(norm)을 사용하여 N 차원(dimension) 하이퍼 피라미드 상의 포인트를 검색하고, 찾아내어 인코딩하는 것을 포함한다. 소위 L1-놈은 벡터의 절대 값의 합이며, 즉, 부호 있는(signed) 정수 PVQ 벡터의 절대 합은 단위 펄스가 "1"의 정수 값으로 표현되는 정확히 K로 제한된다. 부호 있는 정수는 음수가 아닌 정수만 나타낼 수 있는 부호 없는 정수와 관련하여 음수의 정수를 나타낼 수 있다.
다른 많은 구조화된 VQ와는 대조적으로 구조화된 PVQ 코딩 접근법에 따른 흥미로운 이점 중 하나는 차원 N에 대한 고유한 제한이 없으므로 PVQ 코딩을 위해 개발된 검색 방법이 임의의 차원 N 및 임의의 K 값에 적용 가능해야 한다.
구조화된 PVQ 형상 양자화에 따른 하나의 문제는 합리적인 양의 복잡성을 사용하여 가능한 최상의 양자화된 벡터를 찾는 것이다. 더 높은 레이트의 음성 및 오디오 코딩에 대해, 허용된 단위 펄스 K의 수가 매우 높아질 수 있고, 차원 N이 또한 높을 수 있는 경우, 예를 들어 신호 대 잡음비(Signal to Noise Ratio; SNR)의 관점에서 재구성된 음성/오디오의 품질을 유지하면서, 효율적인 PVQ 검색을 갖는 것에 대한 더 강한 요구가 있다.
또한, PVQ 개념의 사용은 음성 및 오디오 코딩 영역으로 제한되지 않는다. 현재 소위 IETF(Internet Engineering Task Force)는 이산 코사인 변환(Discrete Cosine Transform; DCT) 계수가 PVQ 기반 알고리즘을 사용하여 인코딩되는 비디오 코덱 개발을 추진하고 있다. 비디오 코딩에서, 계수의 수가 대형 디스플레이로 매우 커질 수 있기 때문에 효율적인 검색 절차를 갖는 것이 오디오 코딩에서보다 훨씬 더 중요하다.
구조화된 PVQ의 경우, 여전히 높은 신호 대 잡음비를 제공하는 계산상 효율적인 형상 검색을 가능하게 하는 것이 바람직하다. 특히 고정 정밀도(fixed precision) DSP와 관련된 구현의 경우, 본 명세서에서 제공된 솔루션은 개선된 PVQ 정밀 검색(fine search)을 제공함으로써 계산상 효율적인 PVQ 형상 검색을 가능하게 한다.
제 1 양태에 따르면, 인코더에 의해 수행되는 PVQ 형상 검색을 위한 방법이 제공된다. PVQ는 타겟 벡터 x를 입력으로서 취하고, 내부 차원(inner dimension) 검색 루프에서 단위 펄스를 반복적으로 부가함으로써 벡터 y를 도출하는 것을 포함하는 것으로 추정된다. 제공된 방법은, 단위 펄스 부가를 위한 다음 내부 차원 검색 루프를 입력하기 전에, 전류 벡터 y의 최대 펄스 진폭 maxampy에 기초하여, 현재 비트 워드 길이 이상이 무손실 방식으로 변수 enloopy를 나타내는데 필요한지를 결정하는 단계를 포함한다. 변수 enloopy는 다가오는 내부 차원 루프에서 y의 누산된 에너지와 관련된다.
제 2 양태에 따르면, PVQ 형상 검색을 위한 인코더가 제공된다. PVQ는 타겟 벡터 x를 입력으로서 취하고, 내부 차원 검색 루프에서 단위 펄스를 반복적으로 부가함으로써 벡터 y를 도출하는 것을 포함하는 것으로 추정된다. 제공된 인코더는, 단위 펄스 부가를 위한 다음 내부 차원 검색 루프를 입력하기 전에, 전류 벡터 y의 최대 펄스 진폭 maxampy에 기초하여, 현재 비트 워드 길이 이상이 무손실 방식으로 변수 enloopy를 나타내는데 필요한지를 결정하도록 구성된다. 변수 enloopy는 다가오는 내부 차원 루프에서 y의 누산된 에너지와 관련된다.
방법은 단위 펄스 부가를 위한 다음 내부 차원 루프를 입력하기 전에, 입력 벡터 x의 최대 절대 값 xabsmax에 기초하여, x와 벡터 y 사이에서 다음 루프의 누산된 루프 내(in-loop) 상관 값 corrxy의 비트 워드에서의 가능한 업시프트(upshift)를 결정하는 단계를 포함할 수 있고, 인코더는 이러한 업시프트를 결정하도록 구성될 수 있다.
방법은 현재 비트 워드 길이 이상이 enloopy를 나타내는데 필요할 때, enloopy를 나타내기 위해 더 긴 비트 워드 길이를 사용하여 내부 루프 계산을 수행하는 단계를 포함할 수 있고, 인코더는 이러한 내부 루프 계산을 수행하도록 구성될 수 있다.
방법은, 현재 비트 워드 길이 이상이 enloopy를 나타내는데 필요할 때, 내부 루프에서 x와 벡터 y 사이의 제곱 누산된 루프 내 상관 값 corrxy 2을 나타내기 위해 더 긴 비트 워드 길이를 사용하여 내부 루프 계산을 수행하는 단계를 포함할 수 있고, 인코더는 이러한 내부 루프 계산을 수행하도록 구성될 수 있다.
방법은, 현재 비트 워드 길이 이상이 enloopy를 나타내는데 필요치 않을 때, enloopy를 나타내도록 제 1 비트 워드 길이를 사용하여 제 1 단위 펄스 부가 루프를 채용함으로써 내부 루프 계산을 수행하는 단계를 더 포함할 수 있고, 인코더는 이러한 내부 루프 계산을 수행하도록 구성될 수 있고,
방법은, 현재 비트 워드 길이 이상이 enloopy를 나타내는데 필요할 때, 제 1 단위 펄스 부가 루프보다 enloopy를 나타내기 위해 더 긴 비트 워드 길이를 사용하여 제 2 단위 펄스 부가 루프를 채용함으로써 내부 루프 계산을 수행하는 단계를 더 포함할 수 있고, 인코더는 이러한 내부 루프 계산을 수행하도록 구성될 수 있다.
maxampy에 기초하여, 현재 비트 워드 길이 이상이 enloopy를 나타내는데 필요한지를 결정하는 단계는 다가오는 내부 검색 루프에서 단위 펄스가 maxampy와 연관되는 y의 위치에 부가될 때의 경우의 특성을 결정하는 단계를 포함할 수 있다.
방법은 단위 펄스 부가를 위한 내부 차원 검색 루프에서:
y의 각각의 위치 n에 대해, 현재 n에 대한 상관 및 에너지 값의 교차 곱셈(cross-multiplication)을 평가함으로써 단위 펄스의 부가를 위한 y의 위치 nbest; 및 다음과 같이 제곱 상관 BestCorrSq 및 이전 값 n으로부터 구해진 에너지 값 bestEn을 결정하는 단계를 더 포함할 수 있고, 인코더는 이러한 제곱 상관 BestCorrSq 및 이전 값 n으로부터 구해진 에너지 값 bestEn을 결정하도록 구성될 수 있다:
Figure pct00002
여기서
Figure pct00003
방법은 또한 타겟 벡터 x와 연관된 K의 최종 값이 임계 값을 초과할 때 maxampy을 추적하는 단계를 포함할 수 있고, 인코더는 이러한 maxampy을 추적하도록 구성될 수 있다. 여기서, 방법은 K의 현재 값이 상술한 임계 값일 수 있는 임계 값을 초과하는 경우에만 에너지 마진 en_margin을 계산하는 단계를 포함할 수 있고, 인코더는 이러한 에너지 마진 en_margin을 계산하도록 구성될 수 있다.
제 3 양태에 따르면, 제 2 양태에 따른 인코더를 포함하는 통신 디바이스가 제공된다.
제 4 양태에 따르면, DSP와 같은 적어도 하나의 프로세서상에서 실행될 때, 적어도 하나의 프로세서가 제 1 양태에 따른 방법을 수행하도록 하는 명령어를 포함하는 컴퓨터 프로그램이 제공된다.
제 5 양태에 따르면, 제 4 양태에 따른 컴퓨터 프로그램을 포함하는 캐리어가 제공되며, 캐리어는 전자 신호, 광학 신호, 무선 신호 또는 컴퓨터 판독 가능 저장 매체 중 하나이다.
제 6 양태에 따르면, PVQ 형상 검색을 위해 구성되는 인코더가 제공되며; PVQ는 타겟 벡터 x를 입력으로서 취하고, 내부 차원 검색 루프에서 단위 펄스를 반복적으로 부가함으로써 벡터 y를 도출한다. 제공된 인코더는, 단위 펄스 부가를 위한 다음 내부 차원 검색 루프를 입력하기 전에, 전류 벡터 y의 최대 펄스 진폭 maxampy에 기초하여, 현재 비트 워드 길이 이상이 무손실 방식으로 다가오는 내부 차원 루프에서 y의 누산된 에너지와 관련된 변수 enloopy를 나타내는데 필요한지를 결정하기 위한 제 1 결정 유닛을 포함한다.
제 6 양태에 따른 인코더는, 단위 펄스 부가를 위한 다음 내부 차원 루프를 입력하기 전에, 입력 벡터 x의 최대 절대 값 xabsmax에 기초하여, x와 벡터 y 사이에서 다음 루프의 누산된 루프 내 상관 값 corrxy의 비트 워드에서의 가능한 업시프트를 결정하기 위한 제 2 결정 유닛을 포함할 수 있다.
제 6 양태에 따른 인코더는, 현재 비트 워드 길이 이상이 enloopy를 나타내는데 필요할 때, enloopy를 나타내기 위해 더 긴 비트 워드 길이를 사용하여 내부 루프 계산을 수행하기 위한 정밀 검색 유닛을 포함할 수 있다.
제 6 양태에 따른 인코더는,
현재 비트 워드 길이 이상이 enloopy를 나타내는데 필요치 않을 때 제 1 비트 워드 길이를 사용하여 제 1 단위 펄스 부가 루프를 채용함으로써 내부 루프 계산을 수행하고;
현재 비트 워드 길이 이상이 enloopy를 나타내는데 필요할 때 제 1 단위 펄스 부가 루프보다 더 긴 비트 워드 길이를 사용하여 제 2 단위 펄스 부가 루프를 채용함으로써 내부 루프 계산을 수행하기 위한 정밀 검색 유닛을 포함할 수 있다.
제 6 양태에 따른 인코더는,
현재 비트 워드 길이 이상이 enloopy를 나타내는데 필요치 않을 때 특정 정밀도를 가진 제 1 단위 펄스 부가 루프를 채용함으로써 내부 루프 계산을 수행하고;
현재 비트 워드 길이 이상이 enloopy를 나타내는데 필요할 때 제 1 단위 펄스 부가 루프보다 더 높은 정밀도를 가진 제 2 단위 펄스 부가 루프를 채용함으로써 내부 루프 계산을 수행하기 위한 정밀 검색 유닛을 포함할 수 있다.
제 6 양태에 따른 인코더는, 다가오는 내부 검색 루프에서 단위 펄스가 maxampy와 연관되는 y의 위치에 부가될 때의 경우의 특성을 결정함으로써 maxampy에 기초하여 현재 비트 워드 길이 이상이 enloopy를 나타내는데 필요한지를 결정하는 것을 수행하도록 구성될 수 있다.
제 6 양태에 따른 인코더는, 단위 펄스 부가를 위한 내부 차원 검색 루프에서,
y의 각각의 위치 n에 대해, 현재 n에 대한 상관 및 에너지 값의 교차 곱셈을 평가함으로써 단위 펄스의 부가를 위한 y의 위치 nbest; 및 다음과 같이 상관 BestCorrSq 및 이전 값 n으로부터 구해진 에너지 값 bestEn을 결정하기 위한 정밀 검색 유닛을 포함할 수 있다:
Figure pct00004
여기서
Figure pct00005
제 6 양태에 따른 인코더는 타겟 벡터 x와 연관된 최종 단위 펄스의 수 K가 임계 값을 초과할 때 maxampy을 추적하기 위한 저장 유닛을 포함할 수 있다.
제 7 양태에 따르면, 제 6 양태에 따른 인코더를 포함하는 통신 디바이스가 제공된다.
본 명세서에 개시된 기술의 상술한 및 다른 목적, 특징 및 이점은 첨부된 도면에 도시된 바와 같은 실시예에 대한 다음의 더욱 특정한 설명으로부터 명백해질 것이다. 도면은 반드시 일정한 비율로 도시된 것은 아니며, 본 명세서에 개시된 기술의 원리를 설명하는 것에 중점을 두었다.
도 1 내지 도 4는 상이한 예시적인 실시예에 따라 PVQ 형상 검색(정밀 검색)을 위한 방법을 도시한다.
도 5는 예시적인 실시예에 따른 PVQ 형상 검색(정밀 검색)의 실시예의 단계를 도시한다.
도 6은 예시적인 실시예에 따라 도 5의 PVQ 형상 검색(정밀 검색)의 단계를 더욱 상세히 도시한다.
도 7은 PVQ 형상 검색의 실시예를 도시한다.
도 8은 EVS 인코더가 장착된 통신 디바이스의 실시예를 도시한다.
도 9는 통신 디바이스의 실시예를 도시한다.
도 10은 또한 통신 디바이스의 실시예를 도시한다.
도 11a 내지 도 11c는 예시적인 실시예에 따른 인코더를 도시한다.
도 12는 PVQ 오디오 코딩 시스템의 예를 도시하며, 시스템의 적어도 일부는 이동 전화와 같은 통신 디바이스에 차례로 포함되는 인코더 및/또는 코덱에 포함된다.
부동 소수점 산술에서는 내부 루프 PVQ 형상 검색 반복 파라미터의 동역학을 확립하는 것에 관련된 주요 문제가 없지만, 예를 들어, 16/32 비트 제한된 어큐뮬레이터(accumulator)(중간 산술치 및/또는 논리 결과치가 저장되는 레지스터) 및 변수를 가진 고정 정밀도 DSP에서는 가능한 많은 이용 가능한 고속 제한된 동적 범위의 DSP 동작을 이용할 수 있으면서 DSP 변수의 제한된 동적 범위가 최대화되고, 정밀도가 최대화되는 효율적인 검색 방법을 채용하는 것이 매우 중요하다.
상술한 용어 "정밀도"는 가능한 작은 수, 즉 특정 워드 길이에 대한 소수점 뒤의 비트의 수를 나타낼 수 있는 것을 나타낸다. 그것을 표현하는 다른 방식은 정밀도가 표현의 해상도(resolution)에 대응하며, 이는 다시 십진 또는 이진 숫자로 정의된다. 아래에 설명되는 실시예에서의 정밀도가 소수점 뒤의 비트의 수와 상관하고, 반드시 워드 길이 자체와 상관한다고는 할 수 없는 이유는 고정 소수점 연산에서 동일한 워드 길이에 대해 상이한 정밀도가 있을 수 있다는 것이다. 예를 들어, 데이터 포맷 1Q15 및 2Q14는 둘 다 워드 길이가 16이지만, 제 1 데이터 포맷은 소수점 뒤의 15 비트를 갖고, 다른 데이터 포맷은 14 비트를 갖는다. 그 다음, 표현 가능한 가장 작은 숫자는 각각 2^-15 및 2^-14이다.
형상의 피라미드 벡터 양자화를 수행하는 방식은 2009년, EUSIPCO, Valin 등의 섹션 3.2,“낮은 복잡도 및 매우 낮은 지연을 갖는 전 대역폭 오디오 코덱(A full-bandwidth audio codec with low complexity and very low delay)”에 개시되어 있다. 이러한 문서에서 MDCT 코덱이 제시되며, 여기에서 각각의 대역에서의 상세 사항, 즉 형상은 구면 코드북(spherical codebook)을 사용하여 대수적으로 양자화되고, 비트 할당은 인코더와 디코더 사이에 공유되는 정보로부터 추론된다. 본 출원의 개시 내용의 양태 및 실시예는 Valin 등에서와 같이 부동 소수점 값(float value) 대신에 예를 들어 16/32 비트 산술로 제한되는 고정 소수점에서 효율적인 방식으로 Valin 등의 식 4 내지 7에 따라 검색을 수행하는 방법과 적어도 거의 관련이 있다.
이후에 개시되는 일부 양태 및 실시예에서, 특정 차원 N의 타겟 벡터 x(n)(식 0에서의 t)가 주어지고, 특정수의 단위 펄스 K가 주어지면, 형상이 분석되고, 형상 양자화 오차를 최소화하고, 따라서 예를 들어 오디오 코딩의 경우에 인지된 품질을 최대화하는 적절한 재구성 벡터 xq(n)=func(y(n))가 결정된다. 양태 및 실시예 중 적어도 일부는 복잡도를 제어하에, 즉 실질적으로 가능한 한 낮게 유지하면서 L1 놈을 준수할 필요가 있는 벡터 y(n)에서 K 단위 펄스의 최적 성상도(constellation)의 발견을 목표로 구현된다.
내부 루프 동적 범위 및 어큐뮬레이터 정밀도에 대한 근사값을 결정하기 위해 종래 기술의 개방 루프 방법을 사용하는 대신에, 양태 및 실시예 중 일부는, 필요한 DSP 사이클 및 필요한 부가적인 프로그램 판독 전용 메모리(ROM)의 관점에서, 가장 내부의 검색 루프에서 PVQ 형상의 왜곡 지수의 값비싼 평가를 시작하기 전에 최악의 경우의 분자 및/또는 최악의 경우의 분모의 저 비용의 "거의 최적의(near optimal)" 사전 분석을 사용하도록 설계된다. "거의 최적의" 사전 분석은 이러한 값을 정확한 최적의 최대 동적 범위로 스케일링하는 것을 타겟으로 하지 않지만, 대신에 2의 스케일링의 파워(power)가 이진수의 시프트로서 구현될 수 있고, 이러한 시프트가 DSP 사이클 및 DSP ROM에서 비용이 낮기 때문에 사전 분석은 2 스케일 인수(scale factor)의 거의 최적의 파워를 결정한다.
분모 정밀도 선택은 스펙트럼 피크 영역이 더욱 평평한 영역보다 더 정밀하게 할당되기 때문에 지각적으로 동기 부여된다.
본 개시 내용에서 설명된 주요 개념 중 일부가 다양한 수정 및 대안적 구성을 커버하지만, 양태의 실시예는 도면 및 예시적인 코드로 나타내며, 이후에 상세히 설명될 것이다.
일반적인 PVQ 검색 최적화 소개
L1-놈 구조화된 PVQ 양자화기는 몇몇 검색 최적화를 허용하며, 여기서 1차 최적화는 N 차원 공간에서 (또한 상한(orthant) 또는 하이퍼 옥탄트(hyper octant)로 나타낼 수 있는) 모든 양의 "사분면(quadrant)"으로 타겟을 이동시키는 것이며, 제 2 최적화는 y(n)에 대한 시작 근사치로서 L1-놈 투영(projecton)을 사용하는 것이다. PVQ(N,K)에 대한 K의 L1-놈은 PVQ 벡터 y(n)의 모든 요소의 절대 합이 타겟 형상 벡터 x(n)의 모든 요소의 절대 합처럼 K이어야 한다는 것을 의미한다.
제 3 최적화는, 전체 벡터 공간 N에 걸쳐 (아래) 식 4를 다시 계산하는 대신에, 후속 인덱싱 단계에 필요한 L1-놈 K에 도달하는 것을 추구하여 벡터 y(n)에 대한 모든 후보 변경에 대해 QPVQ 지수 용어 corrxy 2 및 energyy를 반복적으로 업데이트하는 것이다.
상술한 3개의 주요 최적화 단계는 일반적으로 CELT 및 lETF-Opus와 같은 과거의 PVQ 구현 시에 존재할 수 있지만, 양태 및 실시예에 대한 설명을 완전하게 하기 위해 부분적으로 G.718에서 존재할 수 있는 최적화이며, 이러한 단계는 또한 아래에서 간략하게 설명된다.
효율적인 PVQ 벡터 형상 검색
본 명세서에 제안된 PVQ 형상 검색의 실시예를 적용한 오디오 인코딩 및 디코딩 시스템의 개요는 도 12에서 볼 수 있다. 피라미드 투영 후에 정밀(형상) 검색 흐름을 사용하는 일반적 형상 검색은 예를 들어 도 5에서 볼 수 있다. 형상 검색의 정밀 검색 부분의 다른 실시예는 도 6에 도시되어 있다. PVQ 형상 검색은 피라미드 투영 및 정밀 검색을 포함할 수 있다. 피라미드 투영이 적용되지 않으면, 형상 검색은 정밀 검색만을 포함한다. 따라서, "정밀 검색" 및 "형상 검색"이 때때로 본 명세서에서 상호 교환적으로 사용될 수 있는데, 그 이유는 정밀 검색이 형상 검색의 일부이고, 초기의 대충(coarse) 검색이 없을 때, 피라미드 투영에 의해, 형상 검색을 수행하는 것이 정밀 검색을 수행하는 것과 동일한 것이기 때문이다. 다시 말하면, 정밀 검색은 때때로 형상 검색이거나 형상 검색을 구성할 수 있으며, 피라미드 투영이 적용될 때, 정밀 검색은 형상 검색의 일부이다.
PVQ 검색 소개
PVQ(N,K) 검색 절차의 목표는 가장 잘 스케일되고 정규화된 출력 벡터 xq(n)를 찾는 것이다. xq(n)은 다음과 같이 정의된다.
Figure pct00006
(식 1)
여기서 y = yN,K는 N 차원 하이퍼 피라미드의 표면상의 포인트이고, yN,K의 L1 놈은 K이다. 다시 말하면, yN,K는 다음 식에 따라 차원 N으로도 나타내는 크기 N의 선택된 정수 형상 코드 벡터이다:
Figure pct00007
(식 2)
즉, 벡터 xq는 단위 에너지 정규화된 정수 서브 벡터 yN,K이다. 최상의 y 벡터는 타겟 벡터 x(n)와 스케일 정규화된 양자화된 출력 벡터 xq 사이의 평균 제곱된 형상 오차를 최소화하는 벡터이다. 이것은 다음 검색 왜곡을 최소화함으로써 달성된다.
Figure pct00008
(식 3)
또는 동등하게, 분자 및 분모를 제곱함으로써 지수 QPVQ를 최대화한다:
Figure pct00009
(식 4)
여기서, corrxy는 x와 y 사이의 상관 관계이다. L1-놈 K를 갖는 최적의 PVQ 벡터 형상 y(n)의 검색에서, QPVQ 변수의 반복적 업데이트는 다음 식에 따라 N-차원 공간에서의 모든 양의 "사분면"에서 이루어진다:
Figure pct00010
(식 5)
Figure pct00011
(식 6)
여기서 corrxy(k-1)는 이전의 k-1 단위 펄스를 위치시킴으로써 지금까지 달성된 상관 관계를 의미하고, energyy(k-1)는 이전의 k-1 단위 펄스를 위치시킴으로써 지금까지 달성된 누산된 에너지를 의미하며, y(k-1, n)은 k-1 단위 펄스의 이전의 배치로부터의 위치 n에서의 y의 진폭을 의미한다. 루프 내 반복 처리의 속도를 더 높이기 위해, 에너지 용어 energyy(k)는 2만큼 스케일 다운(scale down)되며, 따라서 내부 루프에서 하나의 곱셈을 제거한다.
Figure pct00012
(식 7)
여기서, enloopy(k,n)는 반복적 업데이트가 energyy(k,n)보다 작은 하나의 곱셈을 필요로 하기 때문에 가장 내부의 단위 펄스 검색 루프 내부에서 사용되어 누산되는 바람직한 에너지 변수이다.
Figure pct00013
(식 8)
제 k 단위 펄스에 대한 최상의 위치 nbest는 n을 0에서 N-1로 증가시킴으로써 반복적으로 업데이트된다:
Figure pct00014
(식 9)
고정 소수점 연산에서 특히 중요한 비싼 분할(costly division)을 피하기 위해, QPVQ 최대화 업데이트 결정은 구해진 최상의 제곱 상관 분자 bestCorrSq와 지금까지 구해진 최상의 에너지 분모 bestEn의 교차 곱셉을 사용하여 수행되며, 이는 다음과 같이 표현될 수 있다.
Figure pct00015
(식 10)
QPVQ(k,n)의 반복적 최대화는, 제 K 피라미드 표면 아래의 포인트로의 정수 투영에 기초하여, L1 놈 K에서 단위 펄스의 보장된 언더슈트(undershoot)로 배치된 단위 펄스 0의 수 또는 단위 펄스의 적응형 저비용의 사전 배치 수로부터 시작할 수 있다.
PVQ 검색 준비 분석
생성된 벡터가 K 단위 펄스의 L1 놈을 준수하는 한, 모든 가능한 부호 조합이 허용되고, 모든 부호 조합을 인코딩하는 것이 가능한 yN,K PVQ 정수 벡터의 구조화된 특성으로 인해, 검색은 모든 양의 제 1 "사분면"에서 수행된다("사분면"에 인용 마크가 있는 이유는 진정한 사분면만이 N=2일 때 존재한다는 것이고, N은 여기서 2이상일 수 있다). 또한, 본 발명자가 실현한 바와 같이, 제한된 정밀도 구현을 위해 가능한 높은 정확도를 달성하기 위해, 입력 신호 x(n)의 최대 절대 값 xabsmax는 내부 루프 상관 누산 절차의 설정에서 차후 사용을 위해 사전 분석될 수 있다.
Figure pct00016
(식 11)
Figure pct00017
(식 12)
매우 낮은 에너지 타겟 및 매우 낮은 에너지 서브 벡터의 처리
입력 타겟 벡터(식 3의 x 또는 식 0의 t)가 모두 제로 벡터이고/이거나 벡터 이득(예를 들어, 식 0의 G)이 매우 낮은 경우에, PVQ 검색은 바이패스될 수 있고, 유효한 PVQ 벡터 y는 K 단위 펄스의 절반을 제 1 위치
Figure pct00018
에 할당하고, 나머지 단위 펄스를 마지막 위치
Figure pct00019
에 할당함으로써 결정론적으로 생성될 수 있다.
아래에 개시된 예시적인 ANSI C-코드에 예시된 바와 같이, 용어 "매우 낮은 에너지 타겟" 및 "매우 낮은 벡터 이득"은 일 실시예에서 0만큼 낮으며, 여기서 대응하는 코드는 다음과 같다:
IF(L_xsum == 0 || neg_gain == 0)
{/ * 제로 입력 또는 제로 이득 경우 */
그러나, 그것은 또한 엡실론(epsilon) 또는 EPS보다 작거나 같을 수 있으며, 여기서 EPS는 0보다 높고, 선택된 정밀도로 나타낼만한 가치가 있는 것으로 간주되는 가장 낮은 값이다. 예를 들어, 부호 있는 16비트 워드에서의 정밀도 Q15에서, 서브 벡터 이득은 EPS 1/2^15= 1/32768보다 작거나 같게 되고(예를 들어 벡터 이득이 0.000030517578125보다 작거나 같음), 타겟 벡터 x(n)에 대한 부호 있는 16 비트 워드에서의 정밀도 Q12의 경우에, "매우 낮은" 값은 EPS=(1/2^12)가 되며, 예를 들어 sum(abs(x(n)))은 0.000244140625보다 작거나 같다. 16비트 워드를 갖는 고정 소수점 DSP 산술의 일 실시예에서, 부호 없는 정수 포맷은 0 내지 65546의 임의의 정수 값을 취할 수 있는 반면에, 부호 있는 정수는 -32768 내지 +32767의 값을 취할 수 있다. 부호 없는 분수 포맷을 사용하면, 565536 레벨은 0과 +1 사이에서 균일하게 분포되는 반면에, 부호 있는 분수 포맷 실시예에서는 레벨이 -1과 +1 사이에서 균일한 간격으로 이루어진다.
제로 벡터 및 낮은 이득 값과 관련된 이러한 선택적 단계를 적용함으로써, PVQ 검색 복잡성은 감소되고, 인덱싱 복잡성은 인코더 인덱싱과 디코더 디인덱싱 사이에서 분산/공유되며, 즉, 어떤 방식으로든 제로로 스케일 다운되는 제로 타겟 벡터 또는 매우 낮은 타겟 벡터를 검색하기 위한 처리가 "낭비(waste)"되지 않는다.
선택적 PVQ 사전 검색 투영
펄스 밀도 비(K/N)가 계수, 예를 들어 수정된 이산 코사인 변환 계수당 0.5 단위 펄스보다 큰 경우, K-1 서브 피라미드에 대한 저 비용 투영이 만들어지고, y에 대한 시작점으로서 사용된다. 반면, 펄스 밀도 비가 계수 당 0.5 단위 펄스 미만이면, 반복된 PVQ 검색은 0의 사전 배치된 단위 펄스로부터 시작된다. "K-1"에 대한 저 비용 투영은 통상적으로 단위 펄스 내부 루프 검색을 K-1번 반복하는 것보다 DSP 사이클에서 계산 비용이 적다. 그러나, 저 비용 투영의 결점은 N 차원 바닥 함수(floor function) 적용으로 인해 부정확한 결과를 생성한다는 것이다. 바닥 함수를 사용하는 저 비용 투영의 생성된 L1-놈은 통상적으로 "K-1" 내지 대략 "K-5"사이의 어떤 것일 수 있으며, 즉, 투영 후의 결과는 K의 타겟 놈에 도달하도록 정밀 검색될 필요가 있다.
저 비용 투영은 다음과 같이 수행된다:
(식 13)
Figure pct00021
(식 14)
투영이 이루어지지 않으면, 시작점은 모두 제로 y(n) 벡터이다. DSP 사이클에서 투영의 DSP 비용은 약 N(절대 덧셈(sum))+25(나눗셈(division))+2N(곱셈(multiplication) 및 바닥) 사이클의 정도이다.
제 K 피라미드의 표면에 도달하기 위한 정밀 검색에 대비하여, 누산된 단위 펄스 pulsetot의 수, 시작점에 대한 누산된 상관 관계 corrxy(pulsetot) 및 누산된 에너지 energyy(pulsetot)는 다음과 같이 계산된다:
Figure pct00022
(식 15)
Figure pct00023
(식 16)
Figure pct00024
(식 17)
Figure pct00025
(식 18)
PVQ 정밀 검색
본 명세서에 개시된 솔루션은 (상술한 바와 같이, PVQ 형상 검색의 일부를 구성하거나 PVQ 형상 검색의 일부인) PVQ 정밀 검색에 관련된다. 이전의 섹션에서 설명된 것은 xabsmax의 선행 결정을 제외하고는 주로 종래 기술 PVQ이며, 이에 대해서는 아래에서 추가로 설명될 것이다. 차원 N의 최종 정수 형상 벡터 y(n)은 K 펄스의 L1 놈을 준수해야 한다. 정밀 검색은 피라미드의 더 낮은 지점, 즉 제 K 피라미드 아래에서 시작하여, N 차원의 제 K 하이퍼 피라미드의 표면으로 가는 길을 반복적으로 찾도록 구성되는 것으로 추정된다. 정밀 검색에서의 K 값은 통상적으로 1 내지 512 단위 펄스의 범위를 가질 수 있다.
본 발명자는 합리적인 수준에서 검색 및 PVQ 인덱싱의 복잡성을 유지하기 위해 검색이 2개의 주요 브랜치로 분할될 수 있다는 것을 인식하였으며, 여기서, 하나의 브랜치는 y(n)의 루프 내 에너지 표현이 다음 내부 검색 루프 반복 동안 부호 있는 또는 부호 없는 16비트 워드 내에 머무를 것으로 알려지는 경우에 사용되고, 다른 브랜치는 루프 내 에너지가 다음 내부 검색 루프 반복 동안 16비트 워드의 동적 범위를 초과할 수 있는 경우에 사용된다.
낮은 단위 펄스의 수에 대한 고정 정밀도 ((fixed precision)의 정밀 검색
최종 K가 tp=127 단위 펄스의 임계 값 이하인 경우, energyy(K)의 동역학은 항상 14비트 내에 머무를 것이고, 1 비트 업시프트된(upshifted) enloopy(K)는 항상 15비트 내에 머무를 것이다. 이것은 k=K까지의 모든 정밀 펄스 검색 내부 루프 반복 내의 모든 enloopy(K)를 나타내기 위한 부호 있는 16비트 워드의 사용을 허용한다. 다시 말하면, K<127일 때 임의의 정밀 펄스 검색 내부 루프 반복에서 energyy(K) 또는 enloopy(K)를 나타내기 위한 16비트를 초과하는 워드 비트 길이가 필요하지 않을 것이다.
부호 없는 16비트 변수에 대한 효율적인 DSP Multiply, MultiplyAdd(곱셈-덧셈) 및 MultiplySubtract(곱셈-뺄셈) 연산자의 가용성의 경우에, enloopy(K)가 항상 부호 없는 16비트 워드 내에 머무를 것임에 따라 임계값은 tp=255로 증가될 수 있다. 일 실시예에서, MultiplyAdd는 본 명세서에서 오디오 및 비디오 신호를 나타내는 데이터 값에 필터 또는 변환 값을 곱하고, 그 곱을 누산하여 결과치를 생성하기 위한 곱셈-덧셈 명령어 또는 동등한 연산이다. 덧셈이 뺄셈으로 대체되는 것을 제외하고는 MultiplySubtract 연산은 MultiplyAdd 연산과 동일하다.
다음 단위 펄스 부가에 대비하여, 부호 있는 32 비트 워드에서 다음 루프의 누산된 루프 내 상관 값 corrxy의 거의 최적의 최대 가능한 업시프트는 다음과 같이 이전에 계산된 최대 절대 입력 값 xabsmax를 사용하여 사전 분석된다:
Figure pct00026
(식 19)
식 19에서 계산된 이러한 업시프트는 "최악의 경우"를 나타내고, 다음 내부 루프에서 행해질 수 있는 최대 업시프트를 커버하며, 따라서 상관 관계에 관련된 가장 중요한 정보가 내부 루프 반복 동안 최악의 경우의 시나리오에도 확실히 손실되거나 아웃시프트(outshift)되지 않을 것이다.
이러한 최악의 경우의 사전 내부 루프 동적 분석은 MultiplyAdd 및 Norm 명령어(정규화)를 사용하여 대부분의 DSP 아키텍처에서 2-3 사이클에서 수행될 수 있으며, 분석은 항상 차원 N과 관계없이 동일하다. ITU-T G. 191 가상 16/32비트 DSP에서, 식 19의 연산은 다음과 같이 된다:
"corr_upshift = norm_l(L_mac(*L_corrxy,1, xabs_max));" 이는 2사이클의 비용을 갖는다. norm_l(x)는 본 명세서에서 "31-ceil(log2(x))"에 상응하고, 대안적으로 31-ceil(log2(x))로 나타낼 수 있다는 것이 주목되어야 하며, 여기서 ceil(x)는 소위 천장 함수이고, 실수를 가장 작은 다음의 정수로 매핑한다. 더욱 정확하게는, ceiling(x) = [x]는 x보다 작지 않은 가장 작은 정수이다. corrupshift의 경우, 상위 수평 막대(upper horizontal bar)를 가진 괄호 안의 항(term)은 항상 양수이다. corrupshift는 대안적으로 다음과 같은 바닥 함수를 사용하여 계산될 수 있다:
Figure pct00027
여기서, floor(x)=[x]는 x보다 크지 않은 가장 큰 정수이다.
거의 최적의 형상 검색 상관 관계 스케일링에 대해 본 명세서에서 제안된 접근법의 다른 이점은 제안된 방법이 사전 정규화된 타겟 벡터 x를 필요로 하지 않는다는 것이며, 이는 형상 검색을 시작하기 전에 약간의 부가적인 복잡성을 피할 것이다.
식 10의 반복적 업데이트를 가능한 효율적으로 행하기 위해, corrxy(k,n)2 분자는 다음의 접근법에 의해 16비트 워드에 맞는 것보다 많은 정보를 포함할 때에도 16비트 부호 있는 워드로 나타내어질 수 있다.
Figure pct00028
(식 20)
Figure pct00029
(식 21)
함수 "Round16"는 반올림하여 부호 있는 32비트 변수의 상위 16비트를 추출한다. 이러한 거의 최적의 업시프트(식 10) 및 제곱된 상관 관계 bestCorrSq16의 16 비트 표현의 사용은 DSP 최적화 Multiply, MultiplyAdd, MultiplySubtract 함수를 사용할 때 식 21 테스트 및 3개의 변수 업데이트를 수행하기 위해 ~9 사이클만을 사용하여 매우 빠른 내부 루프 검색을 가능하게 한다.
벡터 y에서의 다음 단위 펄스의 위치는 이제 식 20, 식 6 및 식 21을 사용하면서 벡터 y의 n=0,..., N-1 가능한 위치를 통해 반복함으로써 결정된다.
(지금까지 달성된 벡터 y에서) 단위 펄스에 대한 최상의 위치 nbest가 결정된 경우, 누적된 상관 관계 corrxy(k), 누적된 루프 내 에너지 enloopy(k) 및 누적된 단위 펄스 pulsetot의 수는 업데이트된다. 부가할 단위 펄스가 더 있다면, 즉 pulsetot<K일 때, 새로운 내부 루프는 다음 단위 펄스의 부가를 위해 새로운 거의 최적의 corrupshift 분석(식 19)으로 시작된다.
전체적으로, 이러한 제안된 접근법은 양자화된 계수 당 약 5/N+15 사이클의 y(n)에 부가된 각각의 단위 펄스에 대해 최악의 경우의 복잡성을 갖는다. 다시 말하면, 단위 펄스를 부가하기 위한 크기 N의 벡터에 걸친 루프는 약 N*(5/N+15) 사이클, 즉 5+15*N 사이클의 최악의 경우의 복잡성을 갖는다.
높은 단위 펄스의 수에 대한 고정 정밀도의 정밀 검색
K가 16/32 비트 제한된 DSP를 추정하는 본 예시적인 실시예에서, tp=127 단위 펄스인 K가 임계값(tp)보다 높을 때, 파라미터 energyy(K)의 동역학은 14비트를 초과할 수 있고, 1 비트 업시프트된 enloopy(K)의 동역학은 15비트를 초과할 수 있다. 따라서, 불필요하게 높은 정밀도를 사용하지 않기 위해, 정밀 검색은 K가 tp보다 높을 때 쌍{corrxy(k,n)2, enloopy(k,n)}의 16비트 표현과 32비트 표현 사이에 적응 가능하게(adaptively) 선택하도록 구성된다. 벡터 y(n)에 대한 K가 사전에 127보다 큰 최종 값으로 끝나는 것으로 알려진 경우, 정밀 검색은 지금까지 달성된 y에서의 최대 펄스 진폭 maxampy을 추적할 것이다. 이것은 또한 maxampy가 결정되는 것으로서 나타내어질 수 있다. 이러한 최대 펄스 진폭 정보는 최적화된 내부 차원 루프를 입력하기 전에 사전 분석 단계에서 사용된다. 사전 분석은 다가오는 단위 펄스 부가 내부 루프에 대해 어떤 정밀도가 사용되어야 하는지를 결정하는 것을 포함한다. 도 12에 도시된 바와 같이, PVQ 형상 검색에 대한 N, K의 입력에 의해, 비트 할당은 PVQ 검색이 개시되기 전에 알려지고 결정된다. 비트 할당은 PVQ 형상 검색에 입력될 K를 획득하고, 결정하고/하거나 계산하기 위해 공식 또는 저장된 테이블을 사용할 수 있으며, K = 차원 N 및 특정 수의 비트(대역)를 갖는 특정 대역에 대한 함수(비트(대역), N).
PVQ(N,K)에 필요한 비트 N=8 N=16 N=32
K=4 11.4594 15.4263 19.4179
K=5 13.2021 18.1210 23.1001
K=6 14.7211 20.5637 26.5222
K=7 16.0631 22.7972 29.7253
예를 들어, 위에 나타낸 것과 같이 저장된 테이블은 K의 값을 결정하거나 선택하기 위해 사용될 수 있다. 차원 N이 8이고, 대역에 대한 이용 가능한 비트 bits(band)가 14.0이면, PVQ(N=8, K=6)가 이용 가능한 비트의 수 14.0보다 높은 14.7211 비트를 필요로 하기 때문에 K는 5로 선택될 것이다.
사전 분석이 어떤 에너지 정보의 손실 없이 루프 내 에너지를 나타내기 위해 부호 있는 16비트 워드 이상이 필요함을 나타내면, 더욱 높은 정밀도 및 계산상 더욱 집약적인(intensive) 높은 정밀도의 단위 펄스 부가 루프가 채용되며, 여기서 구해진 최상의 제곱된 상관 항(best squared correlation term) 및 구해진 최상의 누산된 에너지 항은 32비트 워드로 나타내어진다.
Figure pct00030
(식 22)
Figure pct00031
(식 23)
최악의 경우의 사전 내부 루프 동적 분석은 대부분의 DSP에서 5-6 부가적인 사이클로 수행될 수 있으며, 분석 비용은 모든 차원에 대해 동일하다. ITU-T G.191 STL 2009 가상 16/32비트 DSP에서, 식 22 및 식 23의 연산은 다음과 같이 된다:
“L_energy_y = L_add(L_energy_y, 1); /* 0.5 added */
en_margin = norm_l(L_mac(L_energy_y, 1, maxamp_y));
highprecision_active= 1; move16();
if(sub(16,en_margin <= 0){
highprecision_active = 0; move16();
}”,
이는 최대 6 사이클의 비용을 갖는다.
아래의 ANSI-C 코드 예에서의 해당 코드는 다음과 같다:
L_yy = L_add(L_yy,1); /* .5 added */
en_margin = norm_l(L_mac(L_yy,1, max_amp_y));/*find max "addition", margin,~2 ops */
en_dn_shift = sub(16, en_margin); /* calc. shift to lower word */
high_prec_active = 1; move16();
if( en_dn_shift <= 0 ){ /* only use 32 bit energy if actually needed */
high_prec_active = 0; move16();
}
대안적으로, 식 22에서의 에너지 마진 en_margin은 다음과 같이 바닥 함수를 사용하여 계산되는 G.191 STL 함수 norm_l()의 연산과 일치할 수 있다:
Figure pct00032
highprecisionactive가 FALSE, 즉 =0이면, 식 20, 식 6 및 식 21에서 더욱 낮은 정밀도의 내부 검색 루프가 채용되며, 반면에 highprecisionactive가 TRUE, 즉 =1인 경우, 이러한 예에서 32비트 워드를 갖는 enloopy 및 corrxy 2를 나타내는 더 높은 정밀도의 내부 루프를 채용한 다음 단위 펄스의 위치가 수행된다. 즉, highprecisionactive가 TRUE인 경우, y(n)에서의 다음 단위 펄스의 위치는 식 24, 식 6 및 식 25를 사용하여 n=0,...,N-1 가능한 위치를 반복함으로써 결정된다.
Figure pct00033
(식 24)
Figure pct00034
(식 25)
다시 말하면, en_margin은 다음 루프에서 에너지를 정규화하는 데 사용될 수 있는 업시프트의 수를 나타낸다. 16 이상의 업시프트가 사용될 수 있는 경우, 에너지는 16/32비트 워드 길이를 추정하는 더 낮은 워드 길이에 머물고, 고 정밀도(32비트 표현) 루프가 필요하지 않으므로, highprecisionactive는 FALSE로 설정된다. (에너지 정보가 L_energy 32비트 워드의 낮은 부분에 머무르도록 하는) 이러한 방식으로 그것을 행하기 위한 구현 이유 중 하나는 계산상 더 저렴하다는 것이다. 즉, ㄱ그것은 extract_l(L_energy)을 계산하는데 단지 1 사이클의 비용이 드는 반면에, 대안적 round_fx(L_shl(L_energy, en_margin))은 두 사이클을 소요한다.
단위 펄스의 최상의 위치 nbest가 결정되면, 누산된 상관 관계 corrxy(k), 누산된 루프 내 에너지 enloopy(k) 및 누산된 단위 펄스 pulsetot의 수가 업데이트된다. 또한, 지금까지의 최상의 정수 벡터 y에서의 최대 진폭 maxampy은 최신의 것으로 유지되고, 즉 다음 단위 펄스 부가 루프에 대해 결정된다.
Figure pct00035
(식 26)
부가할 단위 펄스가 더 있는 경우, 즉 pulsetot < K일 때, 새로운 내부 루프는 식 19의 새로운 거의 최적의 corrupshift 분석 및 식 22 및 식 23의 새로운 에너지 정밀도 분석으로 시작되고 나서, 식 24, 식 6 및 식 23으로 다음 단위 펄스 루프를 시작한다.
y(n)에 부가된 각각의 단위 펄스에 대한 고 정밀도 접근법(이러한 예에서는 32비트 워드)의 최악의 경우의 복잡도는 양자화된 계수 당 약 7/N+31 사이클이다.
루프 내 누산된 에너지 기반의 내부 루프 정밀도 선택의 효과는 높은 수척함(peakiness)을 갖거나 매우 정밀한 입상도(granularity)를 갖는, 즉 최종 K가 높은 타겟 서브 벡터가 더욱 높은 정밀도의 루프 및 더 많은 사이클을 더 자주 사용하지만, 비피키(non-peaky) 또는 낮은 펄스 입상도의 서브 벡터는 더 낮은 정밀도 루프 및 더 적은 사이클을 더 자주 사용할 것이다.
위의 섹션에서 설명된 분석은 K<tp인 경우에도 수행될 수 있다는 것이 주목되어야 한다. 그러나, 실시예는 위의 분석을 적용하기 위한 임계값 tp의 도입에 의해 더욱 효율적으로 행해질 수 있다.
PVQ 벡터 마무리(vector finalization) 및 정규화
형상 검색 후에, 각각의 0이 아닌 PVQ 벡터 요소에는 적절한 부호가 할당되고, 벡터는 단위 에너지에 대해 L2-정규화(즉, 유클리드(Euclidean) 정규화)된다. 부가적으로, 대역이 분할되면, 서브 벡터 이득으로 더 스케일링된다.
Figure pct00036
(식 27)
Figure pct00037
(식 28)
Figure pct00038
(식 29)
상술한 바와 같이, 두 가지 정밀도 방법론(methodology): 위의 섹션에서 정의된 바와 같은 "En16 × CorrSq16"(식 19 내지 식 22) 및 "En32 × CorrSq32"(식 22 내지 식 26)이 제시되고 명시되었다. 분자 Correlation Squared 항(term) 및 Energy 항의 정밀도가 변화되는 2개의 추가의 중간 복잡성 방법(medium complexity method)이 아래에 설명되어 있다.
" En16 × CorrSq32 " 및 " En32 × CorrSq16 " 방법
"En16 × CorrSq32" 방법은 "En32 × CorrSq32"와 유사하지만, 내부 루프가 가장 잘 발견된 단위 펄스 업데이트 및 비교가 다음 식에 따라 지금까지 최상의 Energy bestEn16의 16 비트 표현을 사용한다는 차이가 있다.
Figure pct00039
(식 30)
단위 펄스 당 "En16 × CorrSq32" 방법의 대략적인 비용(approximate cost)은 5/N + 21 사이클이다.
"En32 × CorrSq16" 방법은 "En32 × CorrSq32"와 유사하지만, 내부 루프가 가장 잘 발견된 단위 펄스 업데이트 및 비교가 다음 식에 따라 지금까지 최상의 제곱 상관 관계 bestCorrSq16의 16 비트 표현을 사용한다는 차이가 있다.
Figure pct00040
(식 31)
단위 펄스 부가 당 "En32 × CorrSq16" 방법의 대략적인 비용은 계수 당 6/N + 20 사이클이다.
양태 및 예시적인 실시예
이하, 본 명세서에 개시된 솔루션의 일부 예시적인 실시예는 도 1 내지 도 4를 참조하여 설명될 것이다.
도 1은 PVQ 형상 검색의 정밀 검색에 관한 방법을 도시하는 흐름도이다. 방법은 오디오 및/또는 비디오 신호에 대한 미디어 인코더와 같은 인코더에 의해 수행되도록 의도된다. PVQ는 타겟 형상 벡터 x를 입력으로 취하고, 내부 차원 검색 루프에서 단위 펄스를 반복적으로 부가함으로써 벡터 y를 도출한다. 방법은 내부 루프를 입력하기 전에 행해지는 사전 분석과 관련된다. 그 다음, 출력 벡터 xq는 상술한 바와 같이 벡터 y에 기초하여 도출될 것이다. 그러나, xq의 형성은 본 명세서에서 설명된 솔루션에서 중요하지 않으며, 따라서 본 명세서에서 더 설명되지 않을 것이다.
도 1에 도시된 방법에서, 인코더는 현재 벡터 y의 값 maxampy을 추적하는 것으로 추정될 수 있다. "현재 벡터 y"는 본 명세서에서 지금까지, 즉 k < K에 대해 이루어지고, 발견되거나 구성된 벡터 y를 의미한다. 상술한 바와 같이, 벡터 y에 대한 시작점은 제 K 피라미드 아래의 표면으로의 투영(projection) 또는 모두 0인(all-zero) 빈(empty) 벡터일 수 있다. 도 1에 도시된 방법은, 단위 펄스 부가를 위해 다음 내부 차원 검색 루프를 입력하기 전에, 다가오는 내부 차원 루프에서 무손실 방식으로 현재 비트 워드 길이 이상이 enloopy를 나타내기 위해 필요한지를 현재 벡터 y의 최대 펄스 진폭 maxampy에 기초하여 결정하는 단계(101)를 포함한다. 변수 enloopy는 벡터 y의 누산된 에너지와 관련이 있다. 이러한 방법을 수행하면은 인코더가 합리적인 수준에서 검색의 복잡성을 유지할 수 있다. 예를 들어, 다가오는 내부 루프에서의 "최악의 경우의 시나리오"가 현재 사용되는 것보다 더 높은 정밀도를 가진 내부 루프를 필요로 하는지를 분석함으로써 인코더가 필요할 수 있을 때만 (더 높은 복잡도를 의미하는) 증가된 정밀도를 적용하도록 할 수 있다.
상술한 사전 분석은 내부 루프로의 각각의 엔트리(102) 전에, 즉 단위 펄스를 벡터 y에 각각 부가하기 전에 수행된다. 2개의 상이한 비트 표현, 즉 16 및 32비트와 같은 비트 워드 길이만이 이용 가능한 예시적인 실시예에서, 내부 루프는 더욱 긴 비트 워드가 enloopy를 나타내는데 필요하다고 결정될 때까지 enloopy의 16 비트 표현을 사용하여 수행될 것이며, 그 후 더 높은 비트 워드 길이, 즉 32 비트 표현이 내부 루프 계산에 적용될 것이다. 16비트 표현을 사용하는 루프는 "저 정밀도 루프(low precision loop)"로서 지칭될 수 있고, 32비트 표현을 사용하는 루프는 "고 정밀도 루프(high precision loop)"로서 지칭될 수 있다.
초기 비트 워드 길이 또는 현재 비트 워드 길이 이상이 필요한지를 결정하는 단계(102)는 대안적으로 다음 내부 루프 동안 "최악의 경우" (최대 가능한 증가) enloopy를 나타내는데 필요로 하는 적어도 2개의 상이한 대안적인 비트 워드 길이 중에서 어떤 비트 워드 길이가 결정되는 것으로 표현될 수 있다. 적어도 2개의 상이한 워드 비트 길이는 적어도 예를 들어, 16 및 32비트 워드 길이를 포함할 수 있다.
다시 말하면, 현재 비트 워드 길이 이상이 다음 내부 루프에서 enloopy를 나타내기 위해 필요한 것으로 결정되면(102), 내부 루프 계산은 내부 루프 내에서 enloopy를 나타내기 위해 초기 또는 현재 비트 워드 길이보다 더 긴 비트 워드 길이로 수행된다(103). 반면에, 현재 비트 워드 길이 이상이 enloopy를 나타내는데 필요하지 않은 것으로 결정되면, enloopy를 나타내기 위해 제 1 또는 현재 비트 워드 길이를 사용하여 제 1 단위 펄스 부가 루프를 채용함으로써 내부 루프 계산이 수행될 수 있으며, 즉, 현재 비트 워드 길이는 계속 사용될 수 있다. 이것은 또한 예를 들어 도 4에서 2개의 상이한 루프를 사용하는 것으로 예시된다. 도 4는 현재(더 낮은) 비트 워드 길이로 충분한 것으로 결정되는 경우(403)에 실행되는 하나의 저 정밀도의 내부 루프(405), 및 정보를 잃지 않기 위해 더욱 높은 비트 워드 길이가 내부 루프에서 enloopy를 나타내기 위해 필요한 것으로 결정되는 경우(403)에 실행되는 하나의 고 정밀도의 내부 루프를 도시한다.
방법은 단위 펄스가 현재 maxampy과 연관된 y의 위치에 부가될 때 다음 내부 루프에서 enloopy와 같은 에너지 변수의 가능한 최대 증가가 발생할 것이라는 실현을 발판으로 삼는다. 이를 실현하면, 내부 루프를 입력하기 전에, 다음 내부 루프 동안 현재 사용된 비트 워드 길이, 예를 들어 16비트의 표현 용량을 초과할 위험이 있는지의 여부를 결정할 수 있다. 다시 말하면, 현재 비트 워드 길이 이상이 enloopy를 나타내기 위해 필요한지를 결정하는 단계는, 다가오는 내부 검색 루프에서, 단위 펄스가 maxampy과 연관된 y의 위치에 부가될 때의 경우의 특성을 결정하는 단계를 포함한다. 예를 들어, 다가오는 내부 루프에서 enloopy를 나타내기 위해 필요한 비트의 수가 결정되거나, 대안적으로 다가오는 내부 루프에서 enloopy를 나타내는 비트 워드 내의 잔여 마진이 결정될 수 있다.
낮은 K와 연관된 타겟 형상 벡터에 대해, 초기 및 현재 사용된 비트 워드 길이에 의해 제공되는 것보다 더 긴 비트 워드 길이가 필요 없다는 것을 사전에 나타낼 수 있다. 따라서, 어떤 연산이 임계 값 Tk을 초과하는 K와 연관되는 타겟 형상 벡터에 대해서만 수행되도록 임계값 Tk을 적용하는 것이 가능하다. 이러한 타겟 벡터에 대해, 인코더는 각각의 펄스 부가 후에 이러한 값을 업데이트함으로써 maxampy을 추적할 것이다. 임계값보다 낮은 K와 연관된 타겟 벡터에 대해서는, maxampy를 추적할 필요가 없다. 16비트 및 32비트 워드를 갖는 예에 대해, 상술한 바와 같이, 가능한 Tk는 127이 될 것이다. 다시 말하면, maxampy를 추적하는 것과, 현재 비트 워드 길이 이상이 필요한지의 결정은, 예를 들어, 입력 타겟 형상 벡터와 연관된 K의 최종 값이 임계값 Tk을 초과할 때만 수행된다.
도 2에 도시된 실시예는 maxampy를 추적하거나 결정하는 단계(201), 및 xabsmax를 결정하는 단계(202)를 포함한다. maxampy의 값은 내부 루프에 새로운 단위 펄스를 추가할 때 변경될 수 있으며, 따라서 각각의 루프 후에 최신 상태를 유지하기 위해 maxampy가 업데이트될 필요가 있다. 예를 들어, 동작(201)은 k의 값이 enloopy를 나타내는데 사용된 초기 및 현재 비트 워드 길이가 더 이상 충분하지 않을 수 있는 임계값에 도달할 때까지 maxampy를 추적하는 단계를 포함할 수 있고, 예를 들어 동작(204)에 의해 나타내어진 분석이 개시된다. 예를 들어 동작(204)의 분석에 뒤따르는 내부 루프 후의 maxampy의 업데이트는 도 2에서의 동작(206)으로서 예시된다. 그러나, xabsmax는 프로세스에서 변경되지 않으며, 따라서 한번만 결정될 필요가 있다는 것(202)이 주목되어야 한다. 도 2에 도시된 바와 같이, 방법의 실시예는 또한, 단위 펄스 부가를 위한 다음 내부 차원 루프를 입력하기 전에(205), 입력 형상 벡터 x의 최대 절대값 xabsmax에 기초하여 x와 벡터 y 사이의 다음 루프의 누산된 루프 내 상관 값 corrxy의 비트 워드에서의 가능한 업시프트를 결정하는 단계(203)를 포함한다. 업시프트는 또한 업스케일링(upscaling)으로 나타내어질 수 있다. 상술한 식 19는 최대 가능한 업시프트의 결정을 예시한다. 이를 수행함으로써, 가능한 한 많은 상관 정보 비트, 특히 최상위 비트가 내부 루프 평가 동안 유지되는 것이 보장될 수 있다. 여기서 corrxy 2의 형식의 상관 값 corrxy이 반드시 무손실 방식으로 나타내어질 필요는 없다는 것이 주목되어야 한다. 최대 업시프트의 결정은 내부 루프에서 사용되는 현재 비트 워드 길이와 무관하게 "더 긴(longer)" 비트 워드에서 수행될 수 있다. 즉, 16비트 워드가 내부 루프에서 사용될 때에도 32비트 워드에 대해 최대 가능한 업시프트가 결정될 수 있다. 더 짧은 비트 워드가 내부 루프에서 사용될 때, 결정된 업시프트는 식 20에 의해 예시된 바와 같이 더 짧은 비트 워드로 "반올림(rounded)"될 것이다. 상관 값 corrxy은 상관 값에 대해 적용된 DSP 정밀도에서 항상 1(1.0)보다 작거나 같으며, 즉 corrxy≤1.0, 따라서 corrxy에 대해 결정된 최대 업시프트는 또한 corrxy 2에 대해 유효하다는 것을 주목한다.
현재 비트 워드 길이 이상이 enloopy를 나타내기 위해 필요한 것으로 결정되면, enloopy를 나타내기 위해 (현재 비트 워드 길이, 예를 들어 16비트 대신에 32비트보다) 더 긴 비트 워드 길이를 사용하여 내부 루프 계산이 수행될 수 있다.
일 실시예에서, 현재 비트 워드 길이 이상이 enloopy를 나타내기 위해 필요한 것으로 결정되면, 내부 루프 계산은 내부 루프에서 또한 누산된 루프 내 상관 값 corrxy 2을 나타내는 (현재 비트 워드 길이보다) 더 긴 비트 워드 길이로 수행된다. 이것은 예를 들어 도 3에서 동작(305)에 예시된다. 즉, 에너지 값 enloopy에 대해 결정된 비트 워드 길이는 또한 corrxy 2에 적용될 수 있다.
상술한 바와 같이, 단위 펄스 부가를 위한 내부 차원 검색 루프에서 식 8의 나눗셈을 수행하는 것을 피하는 것이 바람직하다. 따라서, 식 10에 예시된 바와 같이, 교차 곱셈이 수행될 수 있다. 즉, 단위 펄스의 부가를 위한 y에서의 위치 nbest는, y에서의 각각의 위치 n에 대해, 현재 n에 대한 상관 및 에너지 값; 및 다음과 같이 n의 이전의 값으로부터 구해진 "지금까지 최상(best so far)" 상관 BestCorrSq 및 "지금까지 최상" 에너지 값 bestEn의 교차 곱셈을 평가함으로써 결정될 수 있다:
Figure pct00041
여기서
Figure pct00042
위치 nbest는 단위 펄스의 부가를 위해 y에서의 "최상" 위치로서 지칭될 수 있다. "≥"은 ">" 대신에 상술한 식에 사용될 수 있다는 것이 주목되어야 한다. 그러나, ">", 즉 "보다 큼"은 예를 들어 사이클의 수와 관련하여 계산 비용을 가능한 한 낮게 유지하려는 경우에 바람직할 수 있다.
상술한 임의의 실시예에 따른 방법의 수행은 이러한 교차 곱셈이 (예를 들어 실제로 필요로 하는 것보다 더 높은 정밀도를 사용하지 않음으로써) 효율적인 방식으로 수행되도록 할 수 있다.
구현
상술한 방법 및 기술은 예를 들어 통신 디바이스에 포함될 수 있는 인코더 또는 코덱에서 구현될 수 있다.
인코더, 도 11a-11c
인코더의 예시적인 실시예는 일반적인 방식으로 도 11a에 도시되어 있다. 인코더는 예를 들어 오디오 및/또는 비디오 신호의 인코딩을 위해 구성된 미디어 인코더일 수 있다. 인코더(1100)는 도 1 내지 도 5 중 어느 하나를 참조하여 상술한 방법 실시예 중 적어도 하나를 수행하도록 구성된다. 인코더(1100)는 상술한 방법 실시예와 동일한 기술적 특징, 대상 및 이점과 연관된다. 일부 구현에서, 예를 들어 인코더가 고정된 정밀도 DSP로 구성될 때와 같이 인코더는 메모리 및/또는 복잡성과 관련한 제약과 연관된다. 불필요한 반복을 피하기 위해 인코더가 간략하게 설명될 것이다.
인코더는 다음과 같이 구현되고/되거나 설명될 수 있다:
인코더(1100)는 소위 정밀 검색 또는 정밀 형상 검색을 포함하는 피라미드 벡터 양자화를 위해 구성되며, 여기서 피라미드 벡터 양자화기(Pyramid Vector Quantizer; PVQ)는 타겟 벡터 x를 입력으로서 취하고, 내부 차원 검색 루프에서 단위 펄스를 반복적으로 부가함으로써 벡터 y를 도출하도록 구성된다. 입력 벡터 x는 차원 N 및 L1-놈 K를 갖는다. 인코더(1100)는 처리 회로, 또는 처리 수단(1101) 및 통신 인터페이스(1102)를 포함한다. 처리 회로(1101)는 인코더(1100)가, 단위 펄스 부가를 위해 다음 내부 차원 검색 루프를 입력하기 전에, 다가오는 내부 차원 루프에서 무손실 방식으로 현재 비트 워드 길이 이상이 y의 누산된 에너지와 관련된 변수 enloopy를 나타내기 위해 필요한지를 현재 벡터 y의 최대 펄스 진폭 maxampy에 기초하여 결정하게 하도록 구성된다. 예를 들어 입출력(I/O) 인터페이스로도 나타낼 수 있는 통신 인터페이스(1102)는 데이터를 다른 엔티티 또는 모듈로 전송하고 다른 엔티티 또는 모듈로부터 데이터를 수신하기 위한 인터페이스를 포함한다.
처리 회로(1101)는 도 11b에 도시된 바와 같이, 프로세서(1103)와 같은 처리 수단, 예를 들어, CPU, 및 명령어를 저장하거나 유지하기 위한 메모리(1104)를 포함한다. 그 다음, 메모리는 예를 들어, 처리 수단(1103)에 의해 실행될 때, 인코더(1100)가 상술한 동작을 수행하도록 하는 컴퓨터 프로그램(1105)의 형식의 명령어를 포함한다.
처리 회로(1101)의 대안적 구현은 도 11c에 도시된다. 여기에서 처리 회로는 인코더(1100)가, 단위 펄스 부가를 위해 다음 내부 차원 검색 루프를 입력하기 전에, 현재 비트 워드 길이로 허용된 것보다 더 높은 정밀도가 다가오는 내부 차원 루프에서 무손실 방식으로 y의 누산된 에너지와 관련된 변수 enloopy를 나타내기 위해 필요한지를 현재 벡터 y의 최대 펄스 진폭 maxampy에 기초하여 결정하게 하도록 구성된 결정 유닛(1106)을 포함한다. 처리 회로(1101)는 인코더가 특정 비트 워드 길이 및/또는 특정 정밀도를 갖는 내부 차원 루프를 실행하게 하도록 구성된 정밀 검색 유닛(1107)과 같은 더 많은 유닛을 포함할 수 있다.
상술한 인코더는 본 명세서에 설명된 상이한 방법 실시예가 예를 들어 현재 비트 워드 길이 이상이 enloopy를 나타내기 위해 필요하도록 결정되는 경우에 enloopy 및 아마도 corrxy 2을 나타내는 더 긴 비트 워드를 사용하여 내부 루프 계산을 수행하도록 구성될 수 있다. 여기서 "더 긴(longer)"은 현재 또는 초기 비트 워드 길이보다 길다는 것을 지칭한다.
인코더(1100)는 정규 인코더 기능을 수행하기 위한 추가의 기능을 포함하는 것으로 추정될 수 있다.
상술한 인코더는 통신 디바이스와 같은 디바이스에 포함될 수 있다. 통신 디바이스는 이동 전화, 비디오 카메라, 사운드 레코더, 태블릿, 데스크톱, 랩톱, TV 셋톱 박스 또는 홈 서버/홈 게이트웨이/홈 액세스 포인트/홈 라우터의 형태의 사용자 장비(UE)일 수 있다. 통신 디바이스는 일부 실시예에서 코딩 및/또는 트랜스코딩(transcoding)에 적합한 통신 네트워크 디바이스일 수 있다. 이러한 통신 네트워크 디바이스의 예로는 미디어 서버, 애플리케이션 서버, 라우터, 게이트웨이 및 무선 기지국과 같은 서버가 있다. 통신 디바이스는 또한 배와 같은 선박, 비행 무인 항공기, 비행기, 및 자동차, 버스 또는 트럭과 같은 도로 차량에 위치되도록, 즉 내장되도록 구성될 수 있다. 이러한 내장된 디바이스는 통상적으로 차량 텔레매틱스 유닛 또는 차량 인포테인먼트 시스템(vehicle infotainment system)에 속한다.
본 명세서에 설명된 단계, 기능, 절차, 모듈, 유닛 및/또는 블록은 범용 전자 회로 및 애플리케이션 특정 회로(application-specific circuitry)의 둘 다를 포함하는 이산 회로 또는 집적 회로 기술과 같은 임의의 종래의 기술을 이용하는 하드웨어에서 구현될 수 있다.
특정 예는 적절하게 구성된 하나 이상의 디지털 신호 프로세서 및 다른 공지된 전자 회로, 예를 들어, 전문화된 기능(specialized function)을 수행하기 위해 상호 연결된 이산 논리 게이트, 또는 ASIC(Application Specific Integrated Circuit)를 포함한다.
대안적으로, 상술한 단계, 기능, 절차, 모듈, 유닛 및/또는 블록 중 적어도 일부는 하나 이상의 처리 유닛을 포함하는 적절한 처리 회로에 의한 실행을 위해 컴퓨터 프로그램과 같은 소프트웨어로 구현될 수 있다. 소프트웨어는 통신 디바이스에서 컴퓨터 프로그램을 사용하기 전 및/또는 사용하는 동안 전자 신호, 광학 신호, 무선 신호 또는 컴퓨터 판독 가능 저장 매체와 같은 반송자에 의해 반송될 수 있다.
본 명세서에 제시된 흐름도 또는 흐름도들은 하나 이상의 프로세서에 의해 수행될 때 컴퓨터 흐름도 또는 흐름도들로 간주될 수 있다. 해당 장치는 기능 모듈의 그룹에 의해 정의될 수 있으며, 여기서 프로세서에 의해 수행되는 각각의 단계는 기능 모듈에 대응한다. 이 경우에, 기능 모듈은 프로세서상에서 실행하는 컴퓨터 프로그램으로서 구현된다. 기능 모듈은 실제 소프트웨어 모듈에 대응할 필요가 없는 것으로 이해되어야 한다.
처리 회로의 예는 하나 이상의 마이크로프로세서, 하나 이상의 디지털 신호 프로세서(Digital Signal Processor; DSP), 하나 이상의 중앙 처리 유닛(Central Processing Unit; CPU), 및/또는 하나 이상의 필드 프로그래머블 게이트 어레이(Field Programmable Gate Array; FPGA) 또는 하나 이상의 프로그래머블 논리 제어기(Programmable Logic Controller; PLC)와 같은 임의의 적절한 프로그래머블 논리 회로를 포함하지만, 이에 한정되지 않는다. 즉, 상술한 상이한 디바이스 내의 배치에서의 유닛 또는 모듈은 아날로그 및 디지털 회로의 조합, 및/또는 예들 들어 메모리 내에 저장되는 소프트웨어 및/또는 펌웨어로 구성된 하나 이상의 프로세서에 의해 구현될 수 있다. 이러한 프로세서 중 하나 이상뿐만 아니라 다른 디지털 하드웨어는 단일 주문형 집적 회로(application-specific integrated circuitry; ASIC) 또는 여러 프로세서에 포함될 수 있으며, 다양한 디지털 하드웨어는 개별적으로 패키지되거나 시스템 온 칩(system-on-a-chip; SoC)으로 어셈블링되든지 몇몇 별개의 구성 요소 사이에 분산될 수 있다.
또한, 제안된 기술이 구현되는 임의의 종래의 디바이스 또는 유닛의 일반적인 처리 능력을 재사용하는 것이 가능할 수 있는 것으로 이해되어야 한다. 또한, 예를 들어 기존의 소프트웨어를 재프로그래밍하거나 새로운 소프트웨어 구성 요소를 부가함으로써 기존의 소프트웨어를 재사용하는 것이 가능할 수 있다.
추가의 예시적인 실시예
약간 상이한 방식으로 표현하면, 본 명세서의 개시 내용은 예를 들어 다음의 양태 및 실시예에 관한 것이다.
양태 중 하나는 인코더/코덱이며, 인코더/코덱은 예를 들어 도 5-6에서 도시된 다음의 단계 중 하나, 하나 이상 또는 모두를 수행하도록 구성된다:
- 예를 들어 상술한 식 11 및 12에 따라, 예를 들어 일 실시예에서 도 5의 단계(S1)로 예시된 바와 같이 입력 타겟 벡터(x(n))의 최대 절대 값(xabsmax)을 결정, 계산 또는 획득하는 단계,
- 예를 들어 아래의 식 19를 통해 일 실시예에서 도 5의 단계(S2)로 예시된 부호 있는 32비트 워드에서의 다음 루프의 누산된 루프 내 상관 값의 가능한 업시프트를 계산함으로써 적어도 최대 절대 값(xabsmax)에 기초하여 상관 값의 가능한 업시프트를 결정, 계산 또는 획득하는 단계,
- 최종 단위 펄스의 수(K)가 예를 들어 127 단위 펄스일 수 있는 임계 값(tp)보다 더 높아지게 되면, 상술한 식 13 및 14에 따라 정의될 수 있는 예를 들어 벡터(y(n))에 대한 상술한 식 26에 따라 계산된 최대 펄스 진폭(maxampy) 값/정보를 결정, 예를 들어 추적/저장하는 단계,
o 임의의 에너지 정보를 손실시키지 않거나 실질적으로 손실시키지 않고 루프 내 에너지를 나타내기 위해 특정 단어 길이 이상, 예를 들어 부호 있는 16비트 워드 이상 또는 부호 있는 32비트 워드 이상이 필요하거나 사용되어야 하는 경우에, 예를 들어 아래의 식 22 및 23에 따른 계산을 통해 도 6의 단계(S3)에 의해 예시된 바와 같이 저장된 최대 펄스 진폭에 기초하여 결정/계산/판정/선택하는 단계,
o 특정 워드 길이 이상이 필요한 경우에 특정 워드 길이 이상, 예를 들어 32비트 워드 또는 64비트 워드로 최상의 제곱된 상관 항/파라미터/값 및 최상의 누산된 에너지 항/파라미터/값을 나타내는 단계, 및
o 특정 워드 길이 미만이 필요한 경우에는 제 1 루프를 실행하는 단계,
o 특정 워드 길이 이상이 필요한 경우에, 특정 워드 길이 워드 이상으로 나타내어진 "지금까지 최상의" (거의 최적의) 누산된 에너지 항 및 최상의 제곱된 상관 항을 가진 제 2 대안적 루프를 실행하는 단계.
제 2 루프는 더 낮은 정밀도의(즉, 제 2 루프와 관련하여) 제 1 루프보다 더 높은 정밀도 및 계산상 더욱 집약적인 고 정밀도의 단위 펄스 루프일 수 있다. 내부 루프 정밀도의 루프 내 누산된 에너지 기반의 선택은, 높은 수척함을 갖거나 매우 정밀한 입상도(최종 K가 높음)를 갖는 타겟 서브 벡터가 더욱 높은 정밀도의 루프 및 더 많은 사이클을 더 자주 사용하거나 사용할 수 있지만, 비피키 또는 낮은 펄스 입상도의 서브 벡터가 더 낮은 정밀도 루프 및 더 적은 사이클을 더 자주 사용하거나 사용할 수 있다는 효과를 갖는다.
일 양태는 도 9에 도시되고, 비디오 또는 오디오 코딩을 위한 인코더 또는 코덱(2), 예를 들어, EVS 인코더를 포함하는 통신 디바이스(1)에 관한 것이다.
인코더 또는 코덱은 통신 디바이스에 위치된 DSP로서 완전히 또는 부분적으로 구현될 수 있다. 제 1 실시예에서, 인코더/코덱은 타겟 서브 벡터(x(n)), 유한 단위 펄스의 수(K), 타겟 서브 벡터의 서브 벡터 차원 값(N) 및 선택적으로 또한 하나 이상의 이득 값(gsub)에 기초하여 PVQ 형상 검색을 하도록 구성된다. 인코더 또는 코덱은 또한 PVQ 대역 분할을 하도록 구성될 수 있으며, 이러한 경우에 PVQ 형상 검색은 또한 대역(NS)의 서브 벡터의 수/값 및 이득 벡터 G의 가장 큰 이득(gmax = max (G) = max (go… g(Ns-1))에 기초한다. 인코더 또는 코덱은 또한 PVQ 형상 검색으로부터 정수 벡터(y) 및/또는 PVQ 인덱싱을 위해 인코더에 의해 사용되는 형상 서브 벡터 xq(n)를 출력하도록 구성된다. 정수 벡터(y)는 요소 값을 포함하고, 서브 벡터 차원 값(N)과 동일한 길이를 가지며, 모든 요소 값의 절대 합은 단위 펄스의 수(K)와 같다.
인코더/코덱/통신 디바이스는 PVQ 형상 검색을 수행하도록 구성되며, 인코더/코덱/통신 디바이스는,
- 예를 들어 상술한 식 11 및 12에 따라 입력(타겟) 벡터(x(n))의 최대 절대 값(xabsmax)을 결정, 계산 또는 획득하고(S1, S23),
- 예를 들어 상술한 식 19를 통해 부호 있는 32비트 워드에서의 다음 루프의 누산된 루프 내 상관 값의 가능한 업시프트를 계산함으로써 적어도 최대 절대 값(xabsmax)에 기초하여 상관 값의 가능한 업시프트를 결정, 계산 또는 획득하고(S2, S28),
- 최종 단위 펄스의 수(K)가 예를 들어 127 단위 펄스일 수 있는 임계 값(tp)보다 더 높아지게 되면, 상술한 식 13 및 14에 따라 정의될 수 있는 예를 들어 벡터(y(n))에 대한 상술한 식 26에 따라 계산된 최대 펄스 진폭(maxampy) 값/정보를 추적/저장하고(S30),
o 루프 내 에너지를 나타내기 위해 특정 단어 길이 이상, 예를 들어 부호 있는 16비트 워드 이상 또는 부호 있는 32비트 워드 이상이 필요하거나 사용되어야 하는 경우에, 예를 들어 상술한 식 22 및 23에 따른 계산을 통해 저장된 최대 펄스 진폭에 기초하여 결정/계산/판정/선택하고(S3, S32),
o 특정 워드 길이 이상이 필요한 경우에 특정 워드 길이 이상, 예를 들어 32비트 워드 또는 64비트 워드로 최상의 제곱된 상관 항/파라미터/값 및 최상의 누산된 에너지 항/파라미터/값을 나타내고(S34),
o 특정 워드 길이 미만이 결정되는 경우에는 제 1 루프를 실행하며(S33),
o 특정 워드 길이 이상이 결정되는 경우에, 특정 워드 길이 워드 이상으로 나타내어진 최상의 누산된 에너지 항 및 최상의 제곱된 상관 항을 가진 제 2 대안적 루프를 실행하도록(S35) 구성된다.
일 실시예에서, 제한된 정밀도의 PVQ 형상 검색일 수 있는 상술한 PVQ 형상 검색은 인코더/코덱의 부분이고, 적어도 부분적으로 구현될 수 있는 벡터 양자화기에 의해 수행되지만, 또한 통신 디바이스에 위치될 수 있거나 통신 디바이스에 위치되도록 구성될 수 있는 DSP 장치로서 완전히 수행된다. 따라서, 인코더/코덱은 하드웨어 유닛, 예를 들어, DSP 또는 프로그래머블 필드 게이트 어레이(FPGA)로서 완전히 또는 부분적으로 구현될 수 있다. 그러나, 대안적인 실시예에서, 범용 프로세서, 및 범용 프로세서상에서 실행할 때 통신 디바이스가 상술한 단계 중 하나 이상을 수행하도록 하는 코덱 컴퓨터 프로그램의 도움으로 구현될 수 있다. 프로세서는 또한 RISC(Reduced Instruction Set Computing) 프로세서일 수 있다.
본 명세서의 개시 내용의 다른 양태는, 상술한 바와 같이, 도 10에 도시된 컴퓨터 프로그램(6)이며, 여기서 일 실시예는, 컴퓨터 판독 가능 코드를 포함하고, 통신 디바이스(1)의 프로세서/프로세서 유닛(4) 상에서 실행할 때 통신 디바이스가 아래 단락의 방법과 관련하여 언급된 단계 중 하나 이상 또는 도 7과 관련하여 언급된 단계 중 어느 하나를 수행하도록 하는 인코더 컴퓨터 프로그램 또는 코덱 컴퓨터 프로그램과 같이 아래의 부록 1의 ANSI-C 코드 예에 의해 완전히 개시된다.
또 다른 양태는 통신 디바이스/코덱/인코더에 의해 수행되는 PVQ 형상 검색 방법이며, 방법은 다음의 단계 중 하나 이상을 포함한다:
- 예를 들어 상술한 식 11 및 12에 따라 입력(타겟) 벡터(x(n))의 최대 절대 값(xabsmax)을 결정, 계산 또는 획득하는 단계(S1),
- 예를 들어 상술한 식 19를 통해 부호 있는 32비트 워드에서의 다음 루프의 누산된 루프 내 상관 값의 가능한 업시프트를 계산함으로써 적어도 최대 절대 값(xabsmax)에 기초하여 상관 값의 가능한 업시프트를 결정, 계산 또는 획득하는 단계(S2, S28),
- 최종 단위 펄스의 수(K)가 예를 들어 127 단위 펄스일 수 있는 임계 값(tp)보다 더 높아지게 되면, 상술한 식 13 및 14에 따라 정의될 수 있는 예를 들어 벡터(y(n))에 대한 상술한 식 26에 따라 계산된 최대 펄스 진폭(maxampy) 값/정보를 추적/저장하는 단계,
o 루프 내 에너지를 나타내기 위해 특정 단어 길이 이상, 예를 들어 부호 있는 16비트 워드 이상 또는 부호 있는 32비트 워드 이상이 필요하거나 사용되어야 하는 경우에, 예를 들어 상술한 식 22 및 23에 따른 계산을 통해 저장된 최대 펄스 진폭에 기초하여 결정/계산/판정/선택하는 단계(S3),
o 특정 워드 길이 이상이 필요한 경우에 특정 워드 길이 이상, 예를 들어 32비트 워드 또는 64비트 워드로 최상의 제곱된 상관 항/파라미터/값 및 최상의 누산된 에너지 항/파라미터/값을 나타내는 단계, 및
o 특정 워드 길이 미만이 결정되는 경우에는 제 1 루프를 실행하는 단계,
o 특정 워드 길이 이상이 결정되는 경우에, 특정 워드 길이 워드 이상으로 나타내어진 최상의 누산된 에너지 항 및 최상의 제곱된 상관 항을 가진 제 2 대안적 루프를 실행하는 단계.
통신 디바이스는 이동 전화, 비디오 카메라, 사운드 레코더, 태블릿, 데스크톱, 랩톱, TV 셋톱 박스 또는 홈 서버/홈 게이트웨이/홈 액세스 포인트/홈 라우터의 형태의 사용자 장비(UE)일 수 있다.
또 다른 양태는 컴퓨터 프로그램의 상술한 실시예 중 어느 하나가 저장되는 컴퓨터 판독 가능 저장 매체(5)(도 10 참조)이다. 컴퓨터 판독 가능 저장 매체는 휘발성 또는 비휘발성 메모리, 예를 들어 EEPROM(Electrically Erasable PROM), FPGA, (솔리드 스테이트 드라이브(Solid-state drive)를 포함하는) 플래시 메모리, 하드 드라이브의 형태일 수 있다.
통신 디바이스(1)의 실시예는 도 9에 예시된다. 통신 디바이스는 PVQ 형상 검색의 수행을 위해 다음의 유닛 중 하나, 하나 이상 또는 모두를 포함한다:
- 예를 들어 상술한 식 11 및 12에 따라 입력(타겟) 벡터(x(n))의 최대 절대 값(xabsmax)을 결정, 계산 또는 획득하기 위한 제 1 결정 유닛(U1),
- 예를 들어 상술한 식 19를 통해 부호 있는 32비트 워드에서의 다음 루프의 누산된 루프 내 상관 값의 가능한 업시프트를 계산함으로써 적어도 최대 절대 값(xabsmax)에 기초하여 상관 값의 가능한 업시프트를 결정, 계산 또는 획득하기 위한 제 2 결정 유닛(U2),
- 최종 단위 펄스의 수(K)가 임계값(tp)보다 더 높아지게 되면, 상술한 식 13 및 14에 따라 정의될 수 있는 예를 들어 벡터(y(n))에 대한 상술한 식 26에 따라 계산된 최대 펄스 진폭(maxampy) 값/정보를 추적/저장하기 위한 저장 유닛(U3),
- 루프 내 에너지를 나타내기 위해 특정 단어 길이 이상, 예를 들어 부호 있는 16비트 워드 이상 또는 부호 있는 32비트 워드 이상이 필요하거나 사용되어야 하는 경우에, 예를 들어 상술한 식 22 및 23에 따른 계산을 통해 저장된 최대 펄스 진폭에 기초하여 결정/계산/판정/선택하기 위한 선택 유닛(U4),
- 특정 워드 길이 이상이 선택 유닛에 의해 선택되는 경우에 특정 워드 길이 이상인 워드 길이, 예를 들어 32비트 워드 또는 64비트 워드로 최상의 제곱된 상관 항/파라미터/값 및 최상의 누산된 에너지 항/파라미터/값을 생성하기 위한 표현 유닛(U5), 및
o 특정 워드 길이 미만이 선택 유닛에 의해 선택되는 경우에 제 1 루프를 실행하고,
o 특정 워드 길이 이상이 결정되는 경우에, 특정 워드 길이 워드 이상으로 나타내어진 최상의 누산된 에너지 항 및 최상의 제곱된 상관 항을 가진 제 2 대안적 루프를 실행하기 위한 내부 루프 처리 유닛(U6).
상술한 유닛은 통신 유닛에서 DSP의 형태로 코덱/인코더(2)에 포함될 수 있고, 더욱이 DSP의 하드웨어 벡터 양자화기에 포함될 수 있다. 대안적 실시예에서, 상술한 단락에서의 모든 유닛은 소프트웨어로서 통신 디바이스에서 구현된다.
도 9에서 추가로 도시된 바와 같이, 통신 디바이스(1)는 또한 인코더/코덱에 관련된 추가의 유닛, 및 특히 벡터 양자화 및 PVQ 형상 검색에 관련된 유닛을 포함할 수 있다. 이러한 유닛은 이러한 애플리케이션에 포함된 설명 및 도면에 따라 형상 검색을 가능하게 하도록 구성된다.
도 9에 도시된 예시적인 유닛은 다음과 같다:
- 도 7과 관련하여 설명된 선택적 단계(S21)를 수행하기 위한 PVQ 대역 분할(split) 유닛(U7),
- 도 7 아래와 관련하여 설명된 단계(S24)를 수행하기 위한 비교 유닛(U8),
- 아래에 설명되는 단계(S25)를 수행하기 위한 PVQ 벡터 생성 유닛(U9),
- 아래에 설명되는 단계(S26)를 수행하기 위한 시작점 생성 유닛(U10),
- 아래에 설명되는 단계(S27)를 수행하기 위한 파라미터 계산 유닛(U11),
- 예를 들어 K 및 N을 형상 검색에 공급하기 위한 비트 할당 유닛(U12),
- 본 명세서에 개시된 PVQ 형상 검색으로부터의 출력의 수신기로서 보여질 수 있는 PVQ 인덱싱 유닛(U13),
- 아래에 설명되는 단계(S36)를 수행하기 위한 정규화 유닛(U14), 및
- 아래에 설명되는 단계(S37)를 수행하기 위한 출력 유닛(U15).
통신 디바이스에서의 소프트웨어 구현의 경우에, 통신 디바이스(1)의 실시예는 프로세서(4) 및 메모리 형태의 컴퓨터 프로그램 저장 제품(5)을 포함하는 통신 디바이스로서 정의될 수 있으며, 상기 메모리는 상기 프로세서에 의해 실행 가능한 명령어를 포함하며, 이에 의해 상기 통신 디바이스는 다음의 것 중 하나, 하나 이상 또는 모두를 수행하도록 동작 가능하다:
- 예를 들어 상술한 식 11 및 12에 따라 입력(타겟) 벡터(x(n))의 최대 절대 값(xabsmax)을 결정, 계산 또는 획득하는 것,
- 예를 들어 상술한 식 19를 통해 부호 있는 32비트 워드에서의 다음 루프의 누산된 루프 내 상관 값의 가능한 업시프트를 계산함으로써 적어도 최대 절대 값(xabsmax)에 기초하여 상관 값의 가능한 업시프트를 결정, 계산 또는 획득하는 것,
- 최종 단위 펄스의 수(K)가 예를 들어 127 단위 펄스일 수 있는 임계값(tp)보다 더 높아지게 되면, 상술한 식 13 및 14에 따라 정의될 수 있는 예를 들어 벡터(y(n))에 대한 상술한 식 26에 따라 계산된 최대 펄스 진폭(maxampy) 값/정보를 추적/저장하는 것,
o 루프 내 에너지를 나타내기 위해 특정 단어 길이 이상, 예를 들어 부호 있는 16비트 워드 이상 또는 부호 있는 32비트 워드 이상이 필요하거나 사용되어야 하는 경우에, 예를 들어 상술한 식 22 및 23에 따른 계산을 통해 저장된 최대 펄스 진폭에 기초하여 결정/계산/판정/선택하는 것,
o 특정 워드 길이 이상이 필요한 경우에 특정 워드 길이 이상, 예를 들어 32비트 워드 또는 64비트 워드로 최상의 제곱된 상관 항/파라미터/값 및 최상의 누산된 에너지 항/파라미터/값을 나타내는 것,
o 특정 워드 길이 미만이 결정되는 경우에는 제 1 루프를 실행하는 것,
o 특정 워드 길이 이상이 결정되는 경우에, 특정 워드 길이 워드 이상으로 나타내어진 최상의 누산된 에너지 항 및 최상의 제곱된 상관 항을 가진 제 2 부가적 루프를 실행하는 것.
양태 및 실시예를 더 예시하기 위해, 이들 중 일부는 도 7 내지 도 8과 관련하여 다음에 설명될 것이다.
도 8은 본 명세서에서 통신 디바이스(1)에 포함되는 EVS 인코더(3)를 포함하는 이머징(emerging) 3GPP EVS의 송신 측의 개관을 제공한다.
도 7은 도 5-6에 도시된 실시예와 관련하여 일부 실시예를 설명하는 대안적 방식으로의 일부 방법 단계를 도시한다. 도 7에 대해 언급된 단계 중 일부는 PVQ 형상 검색과 관련하여 이루어질 수 있다고 할 수 있지만, 또한 단계 중 일부는 PVQ 형상 검색 전에 수행된다고 할 수 있는 것이 자명해야 한다. 선택적인 제 1 단계(S21)에서, PVQ 대역 분할이 수행된다.
선택적으로 단계(S21)로부터의 형상 타겟 서브 벡터는 제 2 단계(S22)에서 수신되고, 실시예에 따라, gsub, gmax 및 Ns가 또한 수신될 수 있다.
도 5에서의 단계(S1)에 대응하는 제 3 단계(S23)에서, 타겟 벡터의 최대 절대값이 예를 들어 먼저 타겟 벡터의 서브 벡터 x(n)의 절대값을 계산한 다음, 서브 벡터의 가장 큰 절대값을 선택함으로써 결정된다.
선택적인 제 4 단계(S24)에서, 타겟 벡터의 값은 제 1 임계값 이하인지가 결정된다. 임계값은 매우 낮은 에너지 값을 갖는 것으로 간주되는 타겟 벡터를 "필터 아웃(filter out)"하도록 설정된다. 상술한 바와 같이, 임계값은 일 실시예에서 0과 동일하도록 설정될 수 있다. 이러한 제 4 단계에서, 서브 벡터 이득은 제 2 임계값 이하인지가 또한 결정될 수 있다. 일 실시예에서, 제 2 임계값은 0으로 설정되지만, 다른 실시예에서는 처리된 워드에 사용된 정밀도에 따라 머신 입실론(Machine Epsilon)으로 설정될 수 있다.
제 4 단계(S24)에서, 타겟 벡터가 제 1 임계값 이하이고/이거나 서브 벡터 이득이 제 2 임계값 이하인 것으로 결정되면, PVQ 벡터는 선택적인 제 5 단계(S25)에서 생성된다. 일 실시예에서, 생성은 K 단위 펄스의 절반을 제 1 위치
Figure pct00043
에 지정하고, 나머지 단위 펄스를 마지막 위치(
Figure pct00044
에 지정함으로써 결정적으로 이루어진다. 이러한 단계는 제 4 단계(S24)와 관련하여 전체 실제 PVQ 형상 검색을 바이패스하는 것으로 보여질 수 있지만, 또한 일반적인 PVQ 형상 검색 절차의 맥락 내에서 서브 루틴으로 보여질 수 있다.
선택적인 제 6 단계(S26)에서, y, y_start에 대한 초기 값(시작점)은 PVQ 형상 검색이 따르도록 설정되며, 초기 값은 K와 N 사이의 비율에 의존한다. 이러한 비율이 계수당 0.5 단위 펄스일 수 있는 제 3 임계값보다 큰 경우, K-1 서브 피라미드에 대한 제 1 투영은 다음 단계에서 초기 벡터 y_start로서 사용된다. 제 1 투영은 상술한 식 13 및 식 14에서와 같이 계산될 수 있다. 제 3 임계값보다 낮으면, 초기 벡터 y_start는 0의 사전 배치된 단위 펄스로부터 시작하도록 판정된다.
후속 PVQ 형상 검색 단계에 대비하여, 제 7 단계(S27)에서 y_start의 모든 초기 벡터 값은 0으로 설정된다. 이러한 단계에서, 본 명세서에서 단위 펄스의 누산된 수 pulsetot라고 불리는 제 1 파라미터, 본 명세서에서 누산된 상관 corrxy(pulsetot)라고 불리는 제 2 파라미터, 및 본 명세서에서 시작점에 대한 누산된 에너지 energyy(pulsetot)라고 불리는 제 3 파라미터는 각각 예를 들어 식 15-17에 따라 계산된다. 본 명세서에서 enloopy(pulsetot)라고 불리는 제 4 파라미터는 또한 이러한 단계에서 상술한 식 18에 따라 계산될 수 있다.
제 8 단계(S28)에서, PVQ 형상 검색이 시작되거나, 그것에 대한 대안적 방식으로, PVQ 형상 검색의 제 2 정밀 검색 부분은 이전에 획득, 결정 또는 계산된 K, N, X_abs, max_xabs 및 y와, 일부 실시예에서는 또한 gsub, gmax 및 NS의 도움으로 K까지의 나머지 단위 펄스에 대해 시작된다. 이러한 정밀 검색의 일부 실시예의 상세한 단계는 예를 들어 도 6에 의해 완전히 예시되지만, 일부 실시예에서, 정밀 검색은 본 명세서에서 상관 값의 업시프트 corrupshift라고 불리는 제 5 파라미터/값이 정밀 검색 또는 내부 루프가 행해지는 단위 펄스의 적어도 일부 및 일부 실시예에서는 전부에 대해 계산되는 결정을 포함하는 것이 강조될 수 있다. 일부 실시예에서, 부호 있는 32 비트 워드에서의 다음 루프의 누산된 루프 내 상관 값의 가능한 업시프트는 상술한 식 19에 기초하여 계산되고, 그 후 corrupshift는 식 20에서 상관 값 corrxy의 계산에 대한 입력으로서 사용된다.
정밀 PVQ 형상 검색의 부분이라고 할 수 있는 제 9 단계(S29)에서, 최종 단위 펄스의 수 K가 최종 단위 펄스의 수에 대한 제 3 임계값 tp보다 더 높게 되는 것인지가 결정된다. 이럴 경우, 제 10 단계(S30)에서, 최대 펄스 진폭 maxampy이 저장된다.
제 11 단계(S31)에서, 제 6 파라미터 enmargin은 예를 들어 식 22에 따라 계산된다.
제 12 단계(S32)에서, 제 6 파라미터는 특정 워드 길이에 대응하는 제 4 임계값과 비교된다.
응답이 (도 7에서의 S32에서) YES 또는 (부록 1에서의 Ansi-code 예에서) False이면, 즉 예시적인 식/판정(23)에서의 "enmargin"이 제 4 임계값 "16"과 동일하거나 더 크다면, 단계(S33)에서, 정밀 검색의 제 2 루프에서보다 빠르고 "대충(coarser)" 제 1 루프가 실행된다. 제 1 루프의 실시예는 예를 들어 도 6에 도시된다.
응답이 (도 7에서의 S32에서) "NO" 또는 (부록 1에서의 Ansi-code 예에서) True이면, 즉 예시적인 식/판정(23)에서의 "enmargin"이 "16"보다 작으면, 제 14 단계(S34)에서, 제 7 파라미터, 최상의 제곱된 상관 항/파라미터/값, 및 제 8 파라미터, 최상의 누산된 에너지 항/파라미터/값은 특정 워드 길이 이상이 되도록 생성/변환되고, 이는 그 후 제 15 단계(S35)에서 정밀 검색의 더욱 상세한 제 2 내부 루프에 사용된다. 제 2 루프의 실시예는 예를 들어 도 6에서 더욱 상세히 도시된다.
제 16 단계(S36)에서, 적어도 0이 아닌 각각의 PVQ 서브 벡터 요소에는 적절한 부호가 지정되고, 벡터는 단위 에너지에 대해 L2 정규화된다. 일부 실시예에서, 대역이 분할된 후, 그것은 서브 벡터 이득 gsub로 스케일링된다. 정규화된 xq는 또한 식 28에 기초하여 결정될 수 있다. 이러한 단계에 대한 예시적인 절차는 더욱 완전하게 상술되었다.
제 17 단계(S37)에서, 정규화된 xq 및 y는 PVQ 형상 검색 프로세스로부터 출력되고, 예를 들어 코덱에 포함된 PVQ 인덱싱 프로세스로 전송된다.
실시예 및 양태의 몇몇 이점
상술한 양태 및 실시예의 적어도 일부가 가능해진 종래 기술에 비해 몇몇 이점이 아래에 설명된다.
현재 누산된 최대 상관의 사전 분석을 사용하여 제안된 상관 스케일링 방법/알고리즘은 제한된 정밀도의 PVQ 형상 양자화 검색 구현의 최악의 경우(최소) SNR 성능을 향상시킨다. 선행(up-front) 상관 마진 분석을 위한 적응 기준은 매우 미미한(marginal) 부가적인 복잡성을 필요로 한다. 또한, 예를 들어 단위 에너지에 대한 타겟 벡터 x의 값비싼 사전 표준화가 필요하지 않다.
예비 결과에서의 최대 펄스 진폭의 추적을 사용한 적응 기준 다음에, 예를 들어 소프트 16/32비트 정밀도의 내부 루프 판정을 위한 최악의 경우의 누산된 에너지의 사전 분석은 부가적인 계산 복잡성을 거의 필요로 하지 않으며, 고 정밀도의 상관 및 고 정밀도의 에너지 메트릭이 관련된 입력 신호에 여전히 사용되면서 복잡성이 낮게 유지될 수 있는 양호한 균형(trade-off)을 제공하며, 주관적으로 더 중요한 피크 신호는 보다 정밀하게 지정된다. 다시 말하면, 실시예 및 양태의 적어도 일부는 컴퓨터/프로세서 자체의 기능을 향상시킨다.
아래의 부록 2의 위의 표 2/3에서, 적응 정밀도의 논리 비용을 사용하는 예시적인 PVQ 기반의 시스템은 6.843 WMOPS가 될 수 있음을 알 수 있고, 모든(임의의 K) 내부 검색 루프에서 32비트 에너지와 제곱된 상관 정밀도를 사용하면, 비용은 10.474 WMOPS로 증가된다.
결론
상술한 실시예는 단지 예로서 제시된 것이고, 제안된 기술은 이에 한정되지 않는다는 것을 이해하여야 한다. 본 기술 분야의 당업자는 본 발명의 범위를 벗어나지 않고 다양한 수정, 조합 및 변경이 실시예에 대해 이루어질 수 있음을 이해할 것이다. 특히, 상이한 실시예에서의 상이한 부분의 솔루션은 기술적으로 가능할 경우에 다른 구성에 조합될 수 있다.
"포함한다" 또는 "포함하는"이라는 워드를 사용하는 경우, 이것은 비한정적, 즉 "적어도 구성됨(consist at least of)"을 의미하는 것으로 해석되어야 한다.
또한, 일부 대안적 구현에서, 블록에서 언급된 기능/작용은 흐름도에서 언급된 순서를 벗어나 발생할 수 있음이 주목되어야 한다. 예를 들어, 연속적으로 도시된 2개의 블록은 사실상 실질적으로 동시에 실행될 수 있거나, 블록은 관련된 기능/작용에 따라 때때로 역순으로 실행될 수 있다. 더욱이, 흐름도 및/또는 블록도의 주어진 블록의 기능은 다수의 블록으로 분리될 수 있고/있거나, 흐름도 및/또는 블록도의 2 이상의 블록의 기능은 적어도 부분적으로 통합될 수 있다. 최종으로, 도시된 블록 사이에 다른 블록이 부가/삽입될 수 있고/있거나, 블록/동작은 본 발명의 개념의 범위를 벗어나지 않고 생략될 수 있다.
상호 작용 유닛의 선택뿐만 아니라 본 개시 내용 내의 유닛의 명칭은 예시적인 목적만을 위한 것이며, 상술한 방법 중 어느 하나를 실행하기에 적합한 노드는 제시된 절차 행동(procedure action)을 실행할 수 있도록 하기 위해 복수의 대안적인 방식으로 구성될 수 있다는 것을 이해해야 한다.
또한, 본 개시 내용에서 설명된 유닛은 논리적 엔티티로서 간주되어야 하며, 필요에 따라 별개의 물리적 엔티티로서 간주되지 않아야 하는 것이 주목되어야 한다.
단수의 요소에 대한 참조는 명시적으로 언급되지 않는 한 "하나 및 하나만(one and only one)"을 의미하는 것이 아니라 "하나 이상"을 의미한다. 당업자에게 공지된 상술한 실시예의 요소에 대한 모든 구조적 및 기능적 등가물은 본 명세서에서 참조로서 명시적으로 포함되는 것으로 의도된다. 더욱이, 장치 및 방법이 본 명세서에 개시된 기술로 해결하고자 하는 각각 및 모든 문제를 다루는데 필요하지 않으며, 이는 여기에 포함된다.
본 명세서의 일부의 예에서, 잘 알려진 디바이스, 회로 및 방법의 상세한 설명은 불필요한 상세 사항으로 개시된 기술의 설명을 모호하게 하지 않도록 생략되었다. 개시된 기술의 원리, 양태 및 실시예뿐만 아니라 구체적인 예를 기재한 본 명세서의 모든 진술은 구조적 및 기능적 등가물 모두를 포함하도록 의도된다. 부가적으로, 이러한 등가물은 현재 알려진 등가물뿐만 아니라 미래에 개발되는 등가물의 모두를 포함하는 것으로 의도되며, 예를 들어 구조체와 관계없이 동일한 기능을 수행하는 임의의 요소가 개발되었다.
약어
N 벡터 차원
Ns 서브 벡터 차원
x 타겟 벡터
xq 양자화된 형상 벡터
yfinal L1-놈 K를 따르는 정수 벡터
K 최종 단위 펄스의 수
k 누산된 단위 펄스 인덱스의 수
n 계수 또는 샘플 인덱스
i 서브 벡터 인덱스
MDCT 수정된 이산 코사인 변환
PVQ 피라미드 벡터 양자화기(양자화)
WC 최악의 경우
WMOPS 초당 가중 백만 연산(Weighted Million Operations Per Second)
AccEn 누산된 에너지
ROM 판독 전용 메모리
PROM 프로그램 ROM
SNR 신호 대 잡음비
EVS 향상된 음성 서비스
3GPP 3세대 파트너쉽 프로젝트
DSP 디지털 신호 프로세서
CELT 제한된 에너지 랩 변환(Constrained Energy Lapped Transform)
IETF 인터넷 엔지니어링 태스크 포스
MAC 단일 곱셈 누산기(Multiply-Accumulate)
ACELP 대수 부호 여진 선형 예측(Algebraic code-excited linear prediction)
EPS 머신 입실론
부록 1: ANSI-C 코드의 실시예의 예시적인 구현
아래의 것은 STL 2009 G.191 가상 16/32 비트(DSP의 시뮬레이션)를 사용하는 ANSI C 코드의 예시적인 실시예의 구현의 예이다.
Figure pct00045
Figure pct00046
Figure pct00047
Figure pct00048
Figure pct00049
Figure pct00050
Figure pct00051
Figure pct00052
Figure pct00053
Figure pct00054
상술한 코드는 당업자에게 쉽게 판독할 수 있어야 하고, 더 상세히 설명될 필요가 없어야 한다. 그러나, 비숙련자의 경우, 관계 연산자 "= ="는 "A= =B"의 예에서 값 A 및 B가 동일할 때 논리 값 1(참(true))으로 설정된 논리 값을 반환하고, 그렇지 않으면 논리 0(거짓(false))을 반환하는 연산자인 것으로 언급된다. L_mac는 L_mac(L_v3, v1, v2) = L_v3+v1*v2의 의미에서 단일 곱셈 누산기이다.
부록 2 : 테이블 시뮬레이션 결과
시뮬레이션 배경
본 명세서의 본 개시 내용의 실시예가 시뮬레이션되었다. 행해진 모든 PVQ 형상 검색 시뮬레이션에 대해, 사용된 비트 레이트는 64000bps였고, 코덱은 [8,12,16,24,32] 계수의 초기 MDCT 계수 서브 대역 크기로 MDCT 모드에서 동작되었다. 이러한 대역은 PVQ 대역 분할 알고리즘에 의해 각각이 서브 벡터에 의해 나타내어진 작은 대역 섹션으로 매우 잘 분할될 수 있다. 예를 들어, 크기 8의 대역은 충분한 비트가 할당되는 경우에 더 작은 서브 섹션, 예를 들어, "4, 4" 또는 "3,3,2"으로 분할될 수 있다. 통상적으로, 각각의 대역은 최대 32비트가 모든 최종 서브 벡터의 형상 코딩을 위해 사용될 수 있는 방식으로 분할된다.
이러한 PVQ 인덱싱 구현에서, 크기 8의 대역은 최대 36개의 단위 펄스를 가질 수 있고, 크기 7의 서브 섹션은 최대 53개의 단위 펄스를 가질 수 있고, 크기 6의 섹션은 최대 95개의 단위 펄스를 가질 수 있고, 크기 5의 섹션은 최대 238개의 단위 펄스를 가질 수 있고, 크기 4,3,2,1의 섹션은 최대 512개의 단위 펄스를 가질 수 있다. 높은 수의 펄스를 갖는 짧은 섹션이 대역 분할에 의해 동적으로 생성되기 때문에, 이러한 섹션은 더 긴 서브 벡터 크기보다 더 드물다. 아래 결과 표의 WMOPS 수치는 다음을 포함한다: (PVQ 사전 검색, PVQ 정밀 검색, PVQ 정규화 및 PVQ 인덱싱). 아래 결과 표의 "% 동일" 수치는 비제약형 부동 소수점 PVQ 형상 검색과 비교하여 평가된 제한된 정밀도의 형상 검색 알고리즘에서 발견된 동일한 벡터의 수이다.
결과 표
Figure pct00055
Figure pct00056
최종 K <= 127에 대한 표 1 결과
Figure pct00057
Figure pct00058
K > 127에 대한 표 2 결과

Claims (30)

  1. 인코더에 의해 수행되는 PVQ(Pyramid Vector Quantizer) 형상 검색을 위한 방법으로서, 상기 PVQ는 타겟 벡터 x를 입력으로서 취하고, 내부 차원 검색 루프에서 단위 펄스를 반복적으로 부가함으로써 벡터 y를 도출하는 PVQ 형상 검색 방법에 있어서,
    단위 펄스 부가를 위한 다음 내부 차원 검색 루프를 입력하기 전에,
    전류 벡터 y의 최대 펄스 진폭 maxampy에 기초하여, 현재 비트 워드 길이 이상이 무손실 방식으로 다가오는 내부 차원 루프(103)에서 y의 누산된 에너지와 관련된 변수 enloopy를 나타내는데 필요한지를 결정하는 단계(102, 204)를 포함하는, PVQ 형상 검색 방법.
  2. 제 1 항에 있어서,
    단위 펄스 부가를 위한 다음 내부 차원 루프를 입력하기 전에,
    상기 입력 벡터 x의 최대 절대 값 xabsmax에 기초하여, x와 상기 벡터 y 사이에서 상기 다음 루프의 누산된 루프 내 상관 값 corrxy의 비트 워드에서의 가능한 업시프트를 결정하는 단계(203)를 더 포함하는, PVQ 형상 검색 방법.
  3. 제 1 항 또는 제 2 항에 있어서,
    현재 비트 워드 길이 이상이 enloopy를 나타내는데 필요할 때(102, 204, 304, 403),
    enloopy를 나타내기 위해 더 긴 비트 워드 길이를 사용하여 상기 내부 루프 계산을 수행하는 단계(103, 205, 305, 404)를 더 포함하는, PVQ 형상 검색 방법.
  4. 제 1 항 내지 제 3 항 중 어느 한 항에 있어서,
    현재 비트 워드 길이 이상이 enloopy를 나타내는데 필요할 때,
    상기 내부 루프에서 x와 상기 벡터 y 사이의 제곱 누산된 루프 내 상관 값 corrxy 2을 나타내기 위해 더 긴 비트 워드 길이를 사용하여 상기 내부 루프 계산을 수행하는 단계(305)를 더 포함하는, PVQ 형상 검색 방법.
  5. 제 1 항 내지 제 4 항 중 어느 한 항에 있어서,
    현재 비트 워드 길이 이상이 enloopy를 나타내는데 필요치 않을 때,
    enloopy를 나타내도록 제 1 비트 워드 길이를 사용하여 제 1 단위 펄스 부가 루프를 채용함으로써 상기 내부 루프 계산을 수행하는 단계(405)를 더 포함하고,
    현재 비트 워드 길이 이상이 enloopy를 나타내는데 필요할 때,
    상기 제 1 단위 펄스 부가 루프보다 enloopy를 나타내기 위해 더 긴 비트 워드 길이를 사용하여 제 2 단위 펄스 부가 루프를 채용함으로써 상기 내부 루프 계산을 수행하는 단계(404)를 더 포함하는, PVQ 형상 검색 방법.
  6. 제 1 항 내지 제 5 항 중 어느 한 항에 있어서,
    현재 비트 워드 길이 이상이 enloopy를 나타내는데 필요치 않을 때,
    특정 정밀도를 가진 제 1 단위 펄스 부가 루프를 채용함으로써 상기 내부 루프 계산을 수행하는 단계(405)를 더 포함하고,
    현재 비트 워드 길이 이상이 enloopy를 나타내는데 필요할 때,
    상기 제 1 단위 펄스 부가 루프보다 더 높은 정밀도를 가진 제 2 단위 펄스 부가 루프를 채용함으로써 상기 내부 루프 계산을 수행하는 단계(404)를 더 포함하는, PVQ 형상 검색 방법.
  7. 제 1 항 내지 제 6 항 중 어느 한 항에 있어서,
    maxampy에 기초하여, 현재 비트 워드 길이 이상이 enloopy를 나타내는데 필요한지를 결정하는 단계는 다가오는 내부 검색 루프에서 상기 단위 펄스가 maxampy와 연관되는 y의 위치에 부가될 때의 경우의 특성을 결정하는 단계를 포함하는, PVQ 형상 검색 방법.
  8. 제 1 항 내지 제 7 항 중 어느 한 항에 있어서,
    단위 펄스 부가를 위한 상기 내부 차원 검색 루프에서:
    y의 각각의 위치 n에 대해, 현재 n에 대한 상관 및 에너지 값의 교차 곱셈을 평가함으로써 단위 펄스의 부가를 위한 y의 위치 nbest; 및
    Figure pct00059

    여기서
    Figure pct00060
    과 같이 제곱 상관 BestCorrSq 및 이전 값 n으로부터 구해진 에너지 값 bestEn을 결정하는 단계를 더 포함하는, PVQ 형상 검색 방법.
  9. 제 1 항 내지 제 8 항 중 어느 한 항에 있어서,
    상기 타겟 벡터 x와 연관된 K의 최종 값이 임계 값을 초과할 때 maxampy을 추적하는 단계를 더 포함하는, PVQ 형상 검색 방법.
  10. PVQ(Pyramid Vector Quantization) 형상 검색을 위해 구성된 인코더로서, 상기 PVQ는 타겟 벡터 x를 입력으로서 취하고, 내부 차원 검색 루프에서 단위 펄스를 반복적으로 부가함으로써 벡터 y를 도출하는 인코더에 있어서,
    단위 펄스 부가를 위한 다음 내부 차원 검색 루프를 입력하기 전에,
    전류 벡터 y의 최대 펄스 진폭 maxampy에 기초하여, 현재 비트 워드 길이 이상이 무손실 방식으로 다가오는 내부 차원 루프(103)에서 y의 누산된 에너지와 관련된 변수 enloopy를 나타내는데 필요한지를 결정하도록 구성되는, 인코더.
  11. 제 10 항에 있어서,
    단위 펄스 부가를 위한 다음 내부 차원 루프를 입력하기 전에,
    상기 입력 벡터 x의 최대 절대 값 xabsmax에 기초하여, x와 상기 벡터 y 사이에서 상기 다음 루프의 누산된 루프 내 상관 값 corrxy의 비트 워드에서의 가능한 업시프트를 결정하도록 더 구성되는, 인코더.
  12. 제 10 항 또는 제 11 항에 있어서,
    현재 비트 워드 길이 이상이 enloopy를 나타내는데 필요할 때, enloopy를 나타내기 위해 더 긴 비트 워드 길이를 사용하여 상기 내부 루프 계산을 수행하도록 더 구성되는, 인코더.
  13. 제 9 항 내지 제 12 항 중 어느 한 항에 있어서,
    현재 비트 워드 길이 이상이 enloopy를 나타내는데 필요치 않을 때, 제 1 비트 워드 길이를 사용하여 제 1 단위 펄스 부가 루프를 채용함으로써 상기 내부 루프 계산을 수행하고,
    현재 비트 워드 길이 이상이 enloopy를 나타내는데 필요할 때 상기 제 1 단위 펄스 부가 루프보다 더 긴 비트 워드 길이를 사용하여 제 2 단위 펄스 부가 루프를 채용함으로써 상기 내부 루프 계산을 수행하도록 구성되는, 인코더.
  14. 제 9 항 내지 제 13 항 중 어느 한 항에 있어서,
    현재 비트 워드 길이 이상이 enloopy를 나타내는데 필요치 않을 때, 특정 정밀도를 가진 제 1 단위 펄스 부가 루프를 채용함으로써 상기 내부 루프 계산을 수행하고,
    현재 비트 워드 길이 이상이 enloopy를 나타내는데 필요할 때, 상기 제 1 단위 펄스 부가 루프보다 더 높은 정밀도를 가진 제 2 단위 펄스 부가 루프를 채용함으로써 상기 내부 루프 계산을 수행하도록 더 구성되는, 인코더.
  15. 제 9 항 내지 제 14 항 중 어느 한 항에 있어서,
    maxampy에 기초하여, 현재 비트 워드 길이 이상이 enloopy를 나타내는데 필요한지를 결정하는 것은 상기 다가오는 내부 검색 루프에서 상기 단위 펄스가 maxampy와 연관되는 y의 위치에 부가될 때의 경우의 특성을 결정하는 것을 포함하도록 구성되는, 인코더.
  16. 제 9 항 내지 제 15 항 중 어느 한 항에 있어서,
    단위 펄스 부가를 위한 상기 내부 차원 검색 루프에서:
    y의 각각의 위치 n에 대해, 현재 n에 대한 상관 및 에너지 값의 교차 곱셈을 평가함으로써 단위 펄스의 부가를 위한 y의 위치 nbest; 및
    Figure pct00061

    여기서
    Figure pct00062
    과 같이 제곱 상관 BestCorrSq 및 이전 값 n으로부터 구해진 에너지 값 bestEn을 결정하도록 더 구성되는, 인코더.
  17. 제 9 항 내지 제 16 항 중 어느 한 항에 있어서,
    상기 타겟 벡터 x와 연관된 최종 단위 펄스의 수 K가 임계 값을 초과할 때 maxampy을 추적하도록 더 구성되는, 인코더.
  18. 제 9 항 내지 제 17 항 중 어느 한 항에 따른 인코더를 포함하는, 통신 디바이스.
  19. 적어도 하나의 프로세서상에서 실행될 때, 상기 적어도 하나의 프로세서가 제 1 항 내지 제 8 항 중 어느 한 항에 따른 방법을 수행하도록 하는 명령어를 포함하는, 컴퓨터 프로그램.
  20. 제 19 항에 있어서,
    상기 적어도 하나의 프로세서 중 적어도 하나는 DSP(Digital Signal Processor), 예를 들어, 고정된 정밀도의 DSP인, 컴퓨터 프로그램.
  21. 제 19 항 또는 제 20 항의 컴퓨터 프로그램을 포함하는 캐리어로서,
    전자 신호, 광학 신호, 무선 신호 또는 컴퓨터 판독 가능 저장 매체 중 하나인, 캐리어.
  22. PVQ(Pyramid Vector Quantizer) 형상 검색을 위해 구성되는 인코더(1100, 2)로서, 상기 PVQ는 타겟 벡터 x를 입력으로서 취하고, 내부 차원 검색 루프에서 단위 펄스를 반복적으로 부가함으로써 벡터 y를 도출하는 인코더에 있어서,
    단위 펄스 부가를 위한 다음 내부 차원 검색 루프를 입력하기 전에,
    전류 벡터 y의 최대 펄스 진폭 maxampy에 기초하여, 현재 비트 워드 길이 이상이 무손실 방식으로 다가오는 내부 차원 루프에서 y의 누산된 에너지와 관련된 변수 enloopy를 나타내는데 필요한지를 결정하기 위한 제 1 결정 유닛(1106, U4)을 포함하는, 인코더.
  23. 제 22 항에 있어서,
    단위 펄스 부가를 위한 다음 내부 차원 루프를 입력하기 전에,
    상기 입력 벡터 x의 최대 절대 값 xabsmax에 기초하여, x와 상기 벡터 y 사이에서 다음 루프의 누산된 루프 내 상관 값 corrxy의 비트 워드에서의 가능한 업시프트를 결정하기 위한 제 2 결정 유닛(U2)을 더 포함하는, 인코더.
  24. 제 22 항 또는 제 23 항에 있어서,
    현재 비트 워드 길이 이상이 enloopy를 나타내는데 필요할 때, enloopy를 나타내기 위해 더 긴 비트 워드 길이를 사용하여 상기 내부 루프 계산을 수행하기 위한 정밀 검색 유닛(1107, U6)을 더 포함하는, 인코더.
  25. 제 22 항 내지 제 24 항 중 어느 한 항에 있어서,
    현재 비트 워드 길이 이상이 enloopy를 나타내는데 필요치 않을 때 제 1 비트 워드 길이를 사용하여 제 1 단위 펄스 부가 루프를 채용함으로써 상기 내부 루프 계산을 수행하고,
    현재 비트 워드 길이 이상이 enloopy를 나타내는데 필요할 때 제 1 단위 펄스 부가 루프보다 더 긴 비트 워드 길이를 사용하여 제 2 단위 펄스 부가 루프를 채용함으로써 상기 내부 루프 계산을 수행하기 위한 정밀 검색 유닛(1107, U6)을 포함하는, 인코더.
  26. 제 22 항 내지 제 25 항 중 어느 한 항에 있어서,
    현재 비트 워드 길이 이상이 enloopy를 나타내는데 필요치 않을 때, 특정 정밀도를 가진 제 1 단위 펄스 부가 루프를 채용함으로써 상기 내부 루프 계산을 수행하고;
    현재 비트 워드 길이 이상이 enloopy를 나타내는데 필요할 때, 상기 제 1 단위 펄스 부가 루프보다 더 높은 정밀도를 가진 제 2 단위 펄스 부가 루프를 채용함으로써 상기 내부 루프 계산을 수행하기 위한 정밀 검색 유닛(1107, U6)을 포함하는, 인코더.
  27. 제 22 항 내지 제 26 항 중 어느 한 항에 있어서,
    상기 다가오는 내부 검색 루프에서 상기 단위 펄스가 maxampy와 연관되는 y의 위치에 부가될 때의 경우의 특성을 결정함으로써 maxampy에 기초하여 현재 비트 워드 길이 이상이 enloopy를 나타내는데 필요한지를 결정하는 것을 수행하도록 구성되는, 인코더.
  28. 제 22 항 내지 제 27 항 중 어느 한 항에 있어서,
    단위 펄스 부가를 위한 상기 내부 차원 검색 루프에서,
    y의 각각의 위치 n에 대해, 현재 n에 대한 상관 및 에너지 값의 교차 곱셈을 평가함으로써 단위 펄스의 부가를 위한 y의 위치 nbest; 및
    Figure pct00063

    여기서
    Figure pct00064
    과 같이 상관 BestCorrSq 및 이전 값 n으로부터 구해진 에너지 값 bestEn을 결정하기 위한 정밀 검색 유닛(1107, U6)을 포함하는, 인코더.
  29. 제 22 항 내지 제 28 항 중 어느 한 항에 있어서,
    상기 타겟 벡터 x와 연관된 최종 단위 펄스의 수 K가 임계 값을 초과할 때 maxampy을 추적하기 위한 저장 유닛(U3)을 더 포함하는, 인코더.
  30. 제 22 항 내지 제 29 항 중 어느 한 항에 따른 인코더를 포함하는, 통신 디바이스.
KR1020177003688A 2014-07-28 2015-06-25 피라미드 벡터 양자화기의 형상 검색 KR101777994B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201462029586P 2014-07-28 2014-07-28
US62/029,586 2014-07-28
PCT/SE2015/050743 WO2016018185A1 (en) 2014-07-28 2015-06-25 Pyramid vector quantizer shape search

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020177023847A Division KR101959156B1 (ko) 2014-07-28 2015-06-25 피라미드 벡터 양자화기의 형상 검색

Publications (2)

Publication Number Publication Date
KR20170020540A true KR20170020540A (ko) 2017-02-22
KR101777994B1 KR101777994B1 (ko) 2017-09-13

Family

ID=53502817

Family Applications (3)

Application Number Title Priority Date Filing Date
KR1020197006859A KR102034419B1 (ko) 2014-07-28 2015-06-25 피라미드 벡터 양자화기의 형상 검색
KR1020177003688A KR101777994B1 (ko) 2014-07-28 2015-06-25 피라미드 벡터 양자화기의 형상 검색
KR1020177023847A KR101959156B1 (ko) 2014-07-28 2015-06-25 피라미드 벡터 양자화기의 형상 검색

Family Applications Before (1)

Application Number Title Priority Date Filing Date
KR1020197006859A KR102034419B1 (ko) 2014-07-28 2015-06-25 피라미드 벡터 양자화기의 형상 검색

Family Applications After (1)

Application Number Title Priority Date Filing Date
KR1020177023847A KR101959156B1 (ko) 2014-07-28 2015-06-25 피라미드 벡터 양자화기의 형상 검색

Country Status (22)

Country Link
US (3) US9792922B2 (ko)
EP (4) EP3065135B1 (ko)
JP (4) JP6170575B2 (ko)
KR (3) KR102034419B1 (ko)
CN (2) CN105431901B (ko)
AR (1) AR101332A1 (ko)
AU (3) AU2015297066B2 (ko)
CA (1) CA2955765C (ko)
DK (2) DK2992529T3 (ko)
ES (4) ES2718049T3 (ko)
HU (2) HUE042095T2 (ko)
IL (1) IL249104A (ko)
MX (3) MX2018006677A (ko)
MY (1) MY177842A (ko)
NZ (1) NZ726879A (ko)
PL (3) PL3633675T3 (ko)
PT (2) PT2992529T (ko)
RU (2) RU2665898C2 (ko)
SG (3) SG10202000575WA (ko)
TR (1) TR201901612T4 (ko)
WO (1) WO2016018185A1 (ko)
ZA (2) ZA201802791B (ko)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6170575B2 (ja) * 2014-07-28 2017-07-26 テレフオンアクチーボラゲット エルエム エリクソン(パブル) ピラミッドベクトル量子化器形状サーチ
US10366698B2 (en) * 2016-08-30 2019-07-30 Dts, Inc. Variable length coding of indices and bit scheduling in a pyramid vector quantizer
WO2019028602A1 (zh) 2017-08-07 2019-02-14 深圳市汇顶科技股份有限公司 应用于超取样转换器的向量量化数模转换电路
US10586546B2 (en) 2018-04-26 2020-03-10 Qualcomm Incorporated Inversely enumerated pyramid vector quantizers for efficient rate adaptation in audio coding
US10573331B2 (en) * 2018-05-01 2020-02-25 Qualcomm Incorporated Cooperative pyramid vector quantizers for scalable audio coding
US10734006B2 (en) 2018-06-01 2020-08-04 Qualcomm Incorporated Audio coding based on audio pattern recognition
AU2022400064A1 (en) * 2021-12-01 2024-06-06 Panasonic Intellectual Property Corporation Of America Encoding device, decoding device, encoding method, and decoding method

Family Cites Families (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4720861A (en) * 1985-12-24 1988-01-19 Itt Defense Communications A Division Of Itt Corporation Digital speech coding circuit
JP4132109B2 (ja) * 1995-10-26 2008-08-13 ソニー株式会社 音声信号の再生方法及び装置、並びに音声復号化方法及び装置、並びに音声合成方法及び装置
US6128415A (en) * 1996-09-06 2000-10-03 Polaroid Corporation Device profiles for use in a digital image processing system
JP3707153B2 (ja) * 1996-09-24 2005-10-19 ソニー株式会社 ベクトル量子化方法、音声符号化方法及び装置
US6006179A (en) * 1997-10-28 1999-12-21 America Online, Inc. Audio codec using adaptive sparse vector quantization with subband vector classification
US6360204B1 (en) 1998-04-24 2002-03-19 Sarnoff Corporation Method and apparatus for implementing rounding in decoding an audio signal
US6236960B1 (en) * 1999-08-06 2001-05-22 Motorola, Inc. Factorial packing method and apparatus for information coding
AU7486200A (en) * 1999-09-22 2001-04-24 Conexant Systems, Inc. Multimode speech encoder
JP3960932B2 (ja) * 2002-03-08 2007-08-15 日本電信電話株式会社 ディジタル信号符号化方法、復号化方法、符号化装置、復号化装置及びディジタル信号符号化プログラム、復号化プログラム
JP3731575B2 (ja) 2002-10-21 2006-01-05 ソニー株式会社 符号化装置及び復号装置
KR100487719B1 (ko) * 2003-03-05 2005-05-04 한국전자통신연구원 광대역 음성 부호화를 위한 엘에스에프 계수 벡터 양자화기
WO2004090864A2 (en) * 2003-03-12 2004-10-21 The Indian Institute Of Technology, Bombay Method and apparatus for the encoding and decoding of speech
CN1240050C (zh) * 2003-12-03 2006-02-01 北京首信股份有限公司 一种用于语音编码的固定码本快速搜索方法
US7961890B2 (en) * 2005-04-15 2011-06-14 Fraunhofer-Gesellschaft Zur Foerderung Der Angewandten Forschung, E.V. Multi-channel hierarchical audio coding with compact side information
US8255207B2 (en) * 2005-12-28 2012-08-28 Voiceage Corporation Method and device for efficient frame erasure concealment in speech codecs
US7461106B2 (en) * 2006-09-12 2008-12-02 Motorola, Inc. Apparatus and method for low complexity combinatorial coding of signals
CN100530979C (zh) * 2006-09-13 2009-08-19 华为技术有限公司 一种矢量量化方法及矢量量化器
CN101345530B (zh) * 2007-07-11 2010-09-15 华为技术有限公司 一种矢量量化方法及矢量量化器
TWI388218B (zh) * 2007-10-30 2013-03-01 Nippon Telegraph & Telephone 影像編碼方法與解碼方法、其程式及記錄有程式的記錄媒體
US8762141B2 (en) * 2008-02-15 2014-06-24 Nokia Corporation Reduced-complexity vector indexing and de-indexing
EP2304722B1 (en) * 2008-07-17 2018-03-14 Nokia Technologies Oy Method and apparatus for fast nearest-neighbor search for vector quantizers
CN102081926B (zh) 2009-11-27 2013-06-05 中兴通讯股份有限公司 格型矢量量化音频编解码方法和系统
CN102222505B (zh) * 2010-04-13 2012-12-19 中兴通讯股份有限公司 可分层音频编解码方法系统及瞬态信号可分层编解码方法
CN101986630B (zh) * 2010-10-18 2012-11-21 武汉大学 球面矢量量化编解码方法
US9009036B2 (en) * 2011-03-07 2015-04-14 Xiph.org Foundation Methods and systems for bit allocation and partitioning in gain-shape vector quantization for audio coding
US8838442B2 (en) * 2011-03-07 2014-09-16 Xiph.org Foundation Method and system for two-step spreading for tonal artifact avoidance in audio coding
TR201911121T4 (tr) * 2012-03-29 2019-08-21 Ericsson Telefon Ab L M Vektör niceleyici.
US8749408B1 (en) * 2012-12-27 2014-06-10 Mediatek Singapore Pte. Ltd. Methods for simplified MMI VQ based HARQ buffer reduction for LTE
US9560386B2 (en) * 2013-02-21 2017-01-31 Mozilla Corporation Pyramid vector quantization for video coding
US9425820B2 (en) * 2013-06-03 2016-08-23 Mozilla Corporation Vector quantization with non-uniform distributions
WO2015069177A1 (en) 2013-11-07 2015-05-14 Telefonaktiebolaget L M Ericsson (Publ) Methods and devices for vector segmentation for coding
EP3624347B1 (en) 2013-11-12 2021-07-21 Telefonaktiebolaget LM Ericsson (publ) Split gain shape vector coding
PT3111560T (pt) 2014-02-27 2021-07-08 Ericsson Telefon Ab L M Método e aparelho para indexação e desindexação de quantificação vetorial em pirâmide de vetores de amostra de áudio/vídeo
JP6170575B2 (ja) * 2014-07-28 2017-07-26 テレフオンアクチーボラゲット エルエム エリクソン(パブル) ピラミッドベクトル量子化器形状サーチ

Also Published As

Publication number Publication date
CA2955765C (en) 2018-02-13
RU2665898C2 (ru) 2018-09-04
JP2018156099A (ja) 2018-10-04
CN109979470A (zh) 2019-07-05
CN109979470B (zh) 2023-06-20
RU2762329C2 (ru) 2021-12-17
JP6644939B2 (ja) 2020-02-12
PT3633675T (pt) 2021-06-01
US11942102B2 (en) 2024-03-26
MX2018006677A (es) 2021-06-29
SG10202000575WA (en) 2020-03-30
HUE042095T2 (hu) 2019-06-28
US20170301359A1 (en) 2017-10-19
AU2019204328B2 (en) 2020-05-28
RU2018128976A3 (ko) 2021-10-20
HUE028802T2 (en) 2017-01-30
EP3633675B1 (en) 2021-04-28
AU2017265085B2 (en) 2019-07-11
EP2992529B1 (en) 2016-05-25
SG10201704724TA (en) 2017-07-28
KR20190027959A (ko) 2019-03-15
MX2016016095A (es) 2017-03-10
JP2017216696A (ja) 2017-12-07
CN105431901B (zh) 2019-03-19
JP2016527527A (ja) 2016-09-08
PL3633675T3 (pl) 2021-11-15
AU2019204328A1 (en) 2019-07-11
EP3467825A1 (en) 2019-04-10
KR102034419B1 (ko) 2019-10-18
EP2992529A1 (en) 2016-03-09
KR101777994B1 (ko) 2017-09-13
EP3065135A1 (en) 2016-09-07
IL249104A (en) 2017-11-30
EP3065135B1 (en) 2018-12-26
NZ726879A (en) 2017-10-27
ES2874511T3 (es) 2021-11-05
DK3065135T3 (en) 2019-03-25
JP6574287B2 (ja) 2019-09-11
ZA201902319B (en) 2020-08-26
ES2718049T3 (es) 2019-06-27
JP2020010353A (ja) 2020-01-16
WO2016018185A1 (en) 2016-02-04
AU2017265085A1 (en) 2017-12-14
US20230086320A1 (en) 2023-03-23
IL249104A0 (en) 2016-12-29
ZA201802791B (en) 2019-07-31
PT2992529T (pt) 2016-08-18
MX2021007880A (es) 2022-12-06
PL2992529T3 (pl) 2017-03-31
KR101959156B1 (ko) 2019-03-15
SG11201609926YA (en) 2016-12-29
US20160027449A1 (en) 2016-01-28
PL3467825T3 (pl) 2020-08-10
CN105431901A (zh) 2016-03-23
RU2017106160A (ru) 2018-08-28
MY177842A (en) 2020-09-23
MX357398B (es) 2018-07-06
DK2992529T3 (en) 2016-08-29
TR201901612T4 (tr) 2019-02-21
ES2586712T3 (es) 2016-10-18
EP3633675A1 (en) 2020-04-08
US9792922B2 (en) 2017-10-17
RU2018128976A (ru) 2019-03-14
AU2015297066A1 (en) 2016-12-15
ES2785041T3 (es) 2020-10-05
RU2017106160A3 (ko) 2018-08-28
KR20170102047A (ko) 2017-09-06
EP3467825B1 (en) 2020-01-22
JP6347872B2 (ja) 2018-06-27
CA2955765A1 (en) 2016-02-04
AU2015297066B2 (en) 2017-09-07
AR101332A1 (es) 2016-12-14
JP6170575B2 (ja) 2017-07-26

Similar Documents

Publication Publication Date Title
KR101777994B1 (ko) 피라미드 벡터 양자화기의 형상 검색
OA18156A (en) Pyramid vector quantizer shape search
BR112016030902B1 (pt) Método para pesquisa de formato por quantizador vetorial em pirâmide, codificador, e, dispositivo de comunicação

Legal Events

Date Code Title Description
A201 Request for examination
A302 Request for accelerated examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
A107 Divisional application of patent
GRNT Written decision to grant