KR101369535B1 - 낮은 비트 레이트 애플리케이션을 위한 코딩 방식 선택 - Google Patents

낮은 비트 레이트 애플리케이션을 위한 코딩 방식 선택 Download PDF

Info

Publication number
KR101369535B1
KR101369535B1 KR1020117012391A KR20117012391A KR101369535B1 KR 101369535 B1 KR101369535 B1 KR 101369535B1 KR 1020117012391 A KR1020117012391 A KR 1020117012391A KR 20117012391 A KR20117012391 A KR 20117012391A KR 101369535 B1 KR101369535 B1 KR 101369535B1
Authority
KR
South Korea
Prior art keywords
frame
pitch
coding scheme
task
pulse
Prior art date
Application number
KR1020117012391A
Other languages
English (en)
Other versions
KR20110090991A (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
Priority claimed from US12/261,518 external-priority patent/US20090319263A1/en
Application filed by 퀄컴 인코포레이티드 filed Critical 퀄컴 인코포레이티드
Publication of KR20110090991A publication Critical patent/KR20110090991A/ko
Application granted granted Critical
Publication of KR101369535B1 publication Critical patent/KR101369535B1/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/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/18Vocoders using multiple modes
    • G10L19/22Mode decision, i.e. based on audio signal content versus external parameters
    • 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/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/12Determination or coding of the excitation function; Determination or coding of the long-term prediction parameters the excitation function being a code excitation, e.g. in code excited linear prediction [CELP] vocoders
    • 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/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/12Determination or coding of the excitation function; Determination or coding of the long-term prediction parameters the excitation function being a code excitation, e.g. in code excited linear prediction [CELP] vocoders
    • G10L19/125Pitch excitation, e.g. pitch synchronous innovation CELP [PSI-CELP]
    • 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/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/18Vocoders using multiple modes
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS OR SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING; SPEECH OR AUDIO CODING OR DECODING
    • G10L25/00Speech or voice analysis techniques not restricted to a single one of groups G10L15/00 - G10L21/00
    • G10L25/90Pitch determination of speech signals
    • 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/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/097Determination or coding of the excitation function; Determination or coding of the long-term prediction parameters using prototype waveform decomposition or prototype waveform interpolative [PWI] coders

Abstract

천이하는 스피치 프레임들의 낮은 비트 레이트 코딩을 위한 시스템, 방법, 및 장치가 개시된다.

Description

낮은 비트 레이트 애플리케이션을 위한 코딩 방식 선택{CODING SCHEME SELECTION FOR LOW-BIT-RATE APPLICATIONS}
35 U.S.C.§120 에 따른 우선권 주장
본 특허출원은, 2008 년 10 월 30 일에 출원되어 출원 계속중이고 양수인에 의해 양수되었으며, 발명의 명칭이 "CODING OF TRANSITIONAL SPEECH FRAMES FOR LOW-BIT-RATE APPLICATIONS" 인 특허출원 제 12/261,815 호 (Attorney Docket No. 071323) 의 부분계속출원이며, 이 부분계속출원은 2008 년 6 월 20 일에 출원되고 발명의 명칭이 "CODING OF TRANSITIONAL SPEECH FRAMES FOR LOW-BIT-RATE APPLICATIONS" 인 특허출원 제 12/143,719 호 (Attorney Docket No. 071321) 의 부분계속출원이다.
본 발명은 스피치 (speech) 신호들의 처리에 관한 것이다.
음성과 음악과 같은 오디오 신호들의 송신은, 특히, 원거리 전화통신, VoIP (Voice over IP; 여기서 IP 는 인터넷 프로토콜 (Internet Protocol) 을 나타냄) 와 같은 패킷-교환형 전화통신, 및 셀룰러 전화통신과 같은 디지털 무선 전화통신에서 디지털 기술들에 의해 보급되었다. 이러한 보급은 복원된 스피치의 인식 품질을 유지하면서도 송신 채널을 통해 음성 통신을 전송하는데 이용되는 정보량을 감소시키는 일에 대한 관심을 불러 일으켰다. 예를 들어, 이용가능한 무선 시스템 대역폭을 가장 양호하게 이용하는 것이 바람직하다. 시스템 대역폭을 효율적으로 이용하는 하나의 방법은 신호 압축 기술들을 채용하는 것이다. 스피치 신호들을 반송하는 무선 시스템들에 있어서, 스피치 압축 (또는 "스피치 코딩") 기술들이 이 목적을 위해 일반적으로 채용된다.
인간의 스피치 생성의 모델에 관련된 파라미터들을 추출함으로써 스피치를 압축하도록 구성되는 디바이스들은, 종종 보코더 (vocoder), "오디오 코더 (audio coder) " 또는 "스피치 코더" 로 지칭된다. (이들 3 개의 항목은 본 명세서에서 치환가능하게 사용된다.) 스피치 코더는 일반적으로 인코더 및 디코더를 포함한다. 인코더는 통상적으로 인커밍 스피치 신호 (오디오 정보를 나타내는 디지털 신호) 를 "프레임" 이라 지칭되는 시간 세그먼트들로 분할하고, 각 프레임을 분석하여 어떤 관련 파라미터들을 추출하고, 이 파라미터들은 인코딩된 프레임으로 양자화된다. 인코딩된 프레임은 송신 채널 (즉, 유선 또는 무선 네트워크 접속) 을 통해 디코더를 포함하는 수신기로 송신된다. 디코더는 인코딩된 프레임들을 수신하여 처리하고, 이들을 역양자화 (dequantizing) 하여 파라미터들을 생성하고, 역양자화된 파라미터들을 이용하여 유성음 프레임들을 재생성한다.
통상적인 대화에서, 각 화자는 그 시간의 약 60 퍼센트 동안 침묵한다. 스피치 인코더들은 대개, 스피치를 포함하는 스피치 신호의 프레임 ("활성화된 프레임") 들을 단지 침묵 또는 배경 잡음만을 포함하는 스피치 신호의 프레임 ("비활성화된 프레임") 들과 구별하도록 구성된다. 이러한 인코더는 활성화된 프레임 및 비활성화된 프레임을 인코딩하기 위해 상이한 코딩 모드들 및/또는 코딩 레이트를 이용하도록 구성될 수도 있다. 예를 들어, 스피치 인코더들은 활성화된 프레임을 인코딩하는 것보다는 비활성화된 프레임을 인코딩하는데 더 적은 비트들을 이용하도록 통상적으로 구성된다. 스피치 코더는, 인식된 품질 손실에 대해 약간 더 낮은 평균 비트 레이트로 스피치 신호의 전송을 지원하기 위해 더 낮은 비트 레이트를 이용할 수도 있다.
활성화된 프레임을 인코딩하는데 이용되는 비트 레이트들의 예로는, 프레임당 171 비트들, 프레임당 80 비트들, 및 프레임당 40 비트들을 들 수 있다. 비활성화된 프레임들을 인코딩하는데 이용되는 비트 레이트들의 예로는, 프레임당 60 비트들을 들 수 있다. 셀룰러 전화통신 시스템들 (특히, 버지니아주 알링턴 미국통신산업협회 (Telecommunications Industry Association) 에 의해 공포된 IS(Interim Standard)-95 을 준수하는 시스템들, 또는 유사한 산업 표준) 과 관련하여, 이들 4 개의 비트 레이트들은, "풀-레이트 (full-rate)", "하프 레이트 (half-rate)", "1/4 레이트" 및 "1/8 레이트" 로서도 또한 각각 지칭된다.
일 구성에 따른 스피치 신호 프레임을 인코딩하는 방법은, 프레임의 잔차 (residual) 의 피크 에너지를 계산하는 단계 및 이 잔차의 평균 에너지를 계산하는 단계를 포함한다. 이 방법은 계산된 피크 에너지 및 계산된 평균 에너지 사이의 관계에 기초하여 (A) 잡음-여기 코딩 방식 (noise-excited coding scheme) 및 (B) 비차동 피치 프로토타입 코딩 방식 (nondifferential pitch prototype coding scheme) 의 세트 중 일방을 선택하는 단계, 및 이 선택된 코딩 방식에 따라 이 프레임을 인코딩하는 단계를 포함한다. 이 방법은 비차동 피치 프로토타입 코딩 방식에 따라 프레임을 인코딩하는 단계는, 이 프레임의 피치 펄스의 시간-도메인 형상의 표현, 이 프레임의 피치 펄스의 위치, 및 이 프레임에 대해 추정된 피치 기간을 포함하는 인코딩 프레임을 생성하는 단계를 포함한다.
다른 구성에 따라 스피치 신호 프레임을 인코딩하는 방법은, 프레임의 피치 기간을 추정하는 단계, 및 (A) 추정된 피치 기간에 기초한 제 1 값 및 (B) 프레임의 다른 파라미터에 기초한 제 2 값 사이의 관계에 대한 값을 계산하는 단계를 포함한다. 이 방법은, 계산된 값에 기초하여, (A) 잡음-여기 코딩 방식 및 (B) 비차동 피치 프로토타입 코딩 방식의 세트 중 일방을 선택하는 단계, 및 선택된 코딩 방식에 따라 프레임을 인코딩하는 단계를 포함한다. 이 방법에서, 비차동 피치 프로토타입 코딩 방식에 따라 프레임을 인코딩하는 단계는 프레임의 피치 펄스의 시간-도메인 형상의 표현, 프레임의 피치 펄스의 위치, 및 추정된 피치 기간을 포함하는 인코딩 프레임을 생성하는 단계를 포함한다.
이러한 방법들을 수행하도록 구성된 장치와 다른 수단, 및 프로세서에 의해 실행될 때 프로세서로 하여금 이러한 방법들의 엘리먼트들을 실행하게 하는 명령들을 갖는 컴퓨터 판독가능 매체도 또한 명백히 고려된 것이며, 본 명세서에 개시되어 있다.
도 1 은 스피치 신호의 유성음 세그먼트의 예를 나타낸다.
도 2a 는 스피치 세그먼트의 시간에 대한 진폭의 예를 나타낸다.
도 2b 는 LPC 잉여의 시간에 대한 진폭의 예를 나타낸다.
도 3a 는 일반적인 구성에 따른 스피치 인코딩의 방법 (M100) 의 흐름도를 나타낸다.
도 3b 는 인코딩 작업 (E100) 의 구현형태 (E102) 의 흐름도를 나타낸다.
도 4 는 프레임에서의 특징들에 대한 개략적인 표현을 나타낸다.
도 5a 는 인코딩 작업 (E200) 의 구현형태 (E202) 의 다이어그램을 나타낸다.
도 5b 는 방법 (M100) 의 구현형태 (M110) 의 흐름도를 나타낸다.
도 5c 는 방법 (M100) 의 구현형태 (M120) 의 흐름도를 나타낸다.
도 6a 는 일반적인 구성에 따른 장치 (MF100) 의 블록도를 나타낸다.
도 6b 는 수단 (FE100) 의 구현형태 (FE102) 의 블록도를 나타낸다.
도 7a 는 일반적인 구성에 따른 스피치 신호의 여기 신호를 디코딩하는 방법 (M200) 에 대한 흐름도를 나타낸다.
도 7b 는 디코딩 작업 (D100) 의 구현형태 (D102) 의 흐름도를 나타낸다.
도 8a 는 일반적인 구성에 따른 장치 (MF200) 의 블록도를 나타낸다.
도 8b 는 코딩용 수단 (FD100) 의 구현형태 (FD102) 의 흐름도를 나타낸다.
도 9a 는 스피치 인코더 (AE10) 및 대응하는 스피치 디코더 (AD10) 를 나타낸다.
도 9b 는 스피치 인코더 (AE10) 의 인스턴스 (instance) (AE10a, AE10b) 및 스피치 디코더 (AD10) 의 인스턴스 (AD10a, AD10b) 를 나타낸다.
도 10a 는 일반적인 구성에 따른 스피치 신호의 프레임들을 인코딩하는 장치 (A100) 의 블록도를 나타낸다.
도 10b 는 인코더 (100) 의 구현형태 (102) 의 블록도를 나타낸다.
도 11a 는 일반적인 구성에 따른 스피치 신호의 여기 신호들을 디코딩하는 장치 (A200) 의 블록도를 나타낸다.
도 11b 는 제 1 프레임 디코더 (300) 의 구현형태 (302) 의 블록도를 나타낸다.
도 12a 는 스피치 인코더 (AE10) 의 멀티-모드 구현형태 (AE20) 의 블록도를 나타낸다.
도 12b 는 스피치 디코더 (AD10) 의 멀티-모드 구현형태 (AD20) 의 블록도를 나타낸다.
도 13 은 잉여 생성기 (residual generator) (R10) 의 블록도를 나타낸다.
도 14 는 위성 통신을 위한 시스템의 개략적인 다이어그램을 나타낸다.
도 15a 는 일반적인 구성에 따른 방법 (M300) 의 흐름도를 나타낸다.
도 15b 는 작업 (L100) 의 구현형태 (L102) 의 블록도를 나타낸다.
도 15c 는 작업 (L200) 의 구현형태 (L202) 의 흐름도를 나타낸다.
도 16a 는 작업 (L120) 에 의한 서치의 예를 나타낸다.
도 16b 는 작업 (L130) 에 의한 서치의 예를 나타낸다.
도 17a 는 작업 (L210) 의 구현형태 (L210a) 의 흐름도를 나타낸다.
도 17b 는 작업 (L220) 의 구현형태 (L220a) 의 흐름도를 나타낸다.
도 17c 는 작업 (L230) 의 구현형태 (L230a) 의 흐름도를 나타낸다.
도 18 의 (a) 내지 (f) 는 작업 (L212) 의 반복들의 서치 동작들을 나타낸다.
도 19a 는 작업 (L214) 의 테스트 조건들의 표를 나타낸다.
도 19b 및 도 19c 는 작업 (L222) 의 반복들의 서치 동작들을 나타낸다.
도 20a 는 작업 (L232) 의 서치 동작을 나타낸다.
도 20b 는 작업 (L234) 의 서치 동작을 나타낸다.
도 20c 는 작업 (L232) 의 반복의 서치 동작을 나타낸다.
도 21 은 작업 (L300) 의 구현형태 (L302) 의 흐름도를 나타낸다.
도 22a 는 작업 (L320) 의 서치 동작을 나타낸다.
도 22b 및 도 22c 는 작업 (L320) 의 대안적인 서치 동작들을 나타낸다.
도 23 은 작업 (L330) 의 구현형태 (L332) 의 흐름도를 나타낸다.
도 24a 는 작업 (L334) 의 구형형태에 의해 이용될 수도 있는 테스트 조건들에 대한 4 개의 상이한 세트들을 나타낸다.
도 24b 는 작업 (L338) 의 구현형태 (L338a) 의 흐름도를 나타낸다.
도 25 는 작업 (L300) 의 구현형태 (L304) 의 흐름도를 나타낸다.
도 26 은 스피치 인코더 (AE10) 의 구현형태의 각종 코딩 방식의 비트 할당에 대한 표를 나타낸다.
도 27a 는 일반적인 구성에 따른 장치 (MF300) 의 블록도를 나타낸다.
도 27b 는 일반적인 구성에 따른 장치 (A300) 의 블록도를 나타낸다.
도 27c 는 일반적인 구성에 따른 장치 (MF350) 의 블록도를 나타낸다.
도 27d 는 일반적인 구성에 따른 장치 (A350) 의 블록도를 나타낸다.
도 28 은 일반적인 구성에 따른 방법 (M500) 의 흐름도를 나타낸다.
도 29a - 도 29d 는 160-비트 프레임의 다양한 영역을 나타낸다.
도 30a 는 일반적인 구성에 따른 방법 (M400) 의 흐름도를 나타낸다.
도 30b 는 방법 (M400) 의 구현형태 (M410) 의 흐름도를 나타낸다.
도 30c 는 방법 (M400) 의 구현형태 (M420) 의 흐름도를 나타낸다.
도 31a 는 패킷 템플릿 (PT10) 의 일 예를 나타낸다.
도 31b 는 다른 패킷 템플릿 (PT20) 의 예를 나타낸다.
도 31c 는 부분적으로 인터리빙 (interleave) 되는 2 세트로 분류된 비트 위치들을 나타낸다.
도 32a 는 방법 (M400) 의 구현형태 (M430) 의 흐름도를 나타낸다.
도 32b 는 방법 (M400) 의 구현형태 (M440) 의 흐름도를 나타낸다.
도 32c 는 방법 (M400) 의 구현형태 (M450) 의 흐름도를 나타낸다.
도 33a 는 일반적인 구성에 따른 장치 (MF400) 의 블록도를 나타낸다.
도 33b 는 장치 (MF400) 의 구현형태 (MF410) 의 블록도를 나타낸다.
도 33c 는 장치 (MF400) 의 구현형태 (MF420) 의 블록도를 나타낸다.
도 34a 는 장치 (MF400) 의 구현형태 (MF430) 의 블록도를 나타낸다.
도 34b 는 장치 (MF400) 의 구현형태 (MF440) 의 블록도를 나타낸다.
도 34c 는 장치 (MF400) 의 구현형태 (MF450) 의 블록도를 나타낸다.
도 35a 는 일반적인 구성에 따른 장치 (A400) 의 블록도를 나타낸다.
도 35b 는 장치 (A400) 의 구현형태 (A402) 의 블록도를 나타낸다.
도 35c 는 장치 (A400) 의 구현형태 (A404) 의 블록도를 나타낸다.
도 35d 는 장치 (A400) 의 구현형태 (A406) 의 블록도를 나타낸다.
도 36a 는 일반적인 구성에 따른 방법 (M550) 의 흐름도를 나타낸다.
도 36b 는 일반적인 구성에 따른 장치 (A560) 의 블록도를 나타낸다.
도 37 은 일반적인 구성에 따른 방법 (M560) 의 흐름도를 나타낸다.
도 38 은 방법 (M560) 의 구현형태 (M570) 의 흐름도를 나타낸다.
도 39 는 일반적인 구성에 따른 장치 (MF560) 의 블록도를 나타낸다.
도 40 은 장치 (MF560) 의 구현형태 (MF570) 의 블록도를 나타낸다.
도 41 은 일반적인 구성에 따른 방법 (M600) 의 흐름도를 나타낸다.
도 42a 는 래그 (lag) 범위를 빈 (bin) 들로 균일하게 분할한 예를 나타낸다.
도 42b 는 래그 범위를 빈들로 불균일하게 분할한 예를 나타낸다.
도 43a 는 일반적인 구성에 따른 방법 (M650) 의 흐름도를 나타낸다.
도 43b 는 방법 (M650) 의 구현형태 (M660) 의 흐름도를 나타낸다.
도 43c 는 방법 (M650) 의 구현형태 (M670) 의 흐름도를 나타낸다.
도 44a 는 일반적인 구성에 따른 장치 (MF650) 의 블록도를 나타낸다.
도 44b 는 장치 (MF650) 의 구현형태 (MF660) 의 블록도를 나타낸다.
도 44c 는 장치 (MF650) 의 구현형태 (MF670) 의 블록도를 나타낸다.
도 45a 는 일반적인 구성에 따른 장치 (A650) 의 블록도를 나타낸다.
도 45b 는 장치 (A650) 의 구현형태 (A660) 의 블록도를 나타낸다.
도 45c 는 장치 (A650) 의 구현형태 (A670) 의 블록도를 나타낸다.
도 46a 는 방법 (M650) 의 구현형태 (M680) 의 흐름도를 나타낸다.
도 46b 는 장치 (MF650) 의 구현형태 (MF680) 의 블록도를 나타낸다.
도 46c 는 장치 (A650) 의 구현형태 (A680) 의 블록도를 나타낸다.
도 47a 는 일반적인 구성에 따른 방법 (M800) 의 흐름도를 나타낸다.
도 47b 는 방법 (M800) 의 구현형태 (M810) 의 흐름도를 나타낸다.
도 48a 는 방법 (M800) 의 구현형태 (M820) 의 흐름도를 나타낸다.
도 48b 는 일반적인 구성에 따른 장치 (MF800) 의 블록도를 나타낸다.
도 49a 는 장치 (MF800) 의 구현형태 (MF810) 의 블록도를 나타낸다.
도 49b 는 장치 (MF800) 의 구현형태 (MF820) 의 블록도를 나타낸다.
도 50a 는 일반적인 구성에 따른 장치 (A800) 의 블록도를 나타낸다.
도 50b 는 장치 (A800) 의 구현형태 (A810) 의 블록도를 나타낸다.
도 51 은 프레임 분류 방식에서 이용되는 특징들의 리스트를 나타낸다.
도 52 는 피치 기반의 정규화된 자동상관 기능을 연산하는 절차의 흐름도를 나타낸다.
도 53 은 프레임 분류 방식을 하이 레벨로 나타내는 흐름도이다.
도 54 는 프레임 분류 방식에서의 상태들 사이에서 가능한 천이를 나타내는 상태도이다.
도 55 내지 도 56, 도 57 내지 도 59, 및 도 60 내지 도 63 은, 프레임 분류 방식의 3 가지 상이한 절차들에 대한 코드 리스팅들을 나타낸다.
도 64 내지 도 71b 는 프레임 재분류에 대한 조건들을 나타낸다.
도 72 는 스피치 인코더 (AF20) 의 구현형태 (AE30) 의 블록도를 나타낸다.
도 73a 는 스피치 인코더 (AE10) 의 구현형태 (AE40) 의 블록도를 나타낸다.
도 73b 는 주기적인 프레임 인코더 (E70) 의 구현형태 (E72) 의 블록도를 나타낸다.
도 74 는 주기적인 프레임 인코더 (E72) 의 구현형태 (E74) 의 블록도를 나타낸다.
도 75a 내지 도 75d 는 천이 프레임 (transitional frame) 인코딩 모드의 이용이 바람직할 수도 있는 몇몇 통상적인 프레임 시퀀스들을 나타낸다.
도 76 은 코드 리스팅을 나타낸다.
도 77 은 천이 프레임 코딩을 이용하는 결정을 취소하기 위한 4 개의 상이한 조건들을 나타낸다.
도 78 은 일반적인 구성에 따른 방법 (M700) 의 다이어그램을 나타낸다.
도 79a 는 일반적인 구성에 따른 방법 (M900) 의 흐름도를 나타낸다.
도 79b 는 방법 (M900) 의 구현형태 (M910) 의 흐름도를 나타낸다.
도 80a 는 방법 (M900) 의 구현형태 (M920) 의 흐름도를 나타낸다.
도 80b 는 일반적인 구성에 따른 장치 (MF900) 의 블록도를 나타낸다.
도 81a 는 장치 (MF900) 의 구현형태 (MF910) 의 블록도를 나타낸다.
도 81b 는 장치 (MF900) 의 구현형태 (MF920) 의 블록도를 나타낸다.
도 82a 는 일반적인 구성에 따른 장치 (A900) 의 블록도를 나타낸다.
도 82b 는 장치 (A900) 의 구현형태 (A910) 의 블록도를 나타낸다.
도 83a 는 장치 (A900) 의 구현형태 (A920) 의 블록도를 나타낸다.
도 83b 는 일반적인 구성에 따른 방법 (M950) 의 흐름도를 나타낸다.
도 84a 는 방법 (M950) 의 구현형태 (M960) 의 흐름도를 나타낸다.
도 84b 는 방법 (M950) 의 구현형태 (M970) 의 흐름도를 나타낸다.
도 85a 는 일반적인 구성에 따른 장치 (MF950) 의 블록도를 나타낸다.
도 85b 는 장치 (MF950) 의 구현형태 (MF960) 의 블록도를 나타낸다.
도 86a 는 장치 (MF950) 의 구현형태 (MF970) 의 블록도를 나타낸다.
도 86b 는 일반적인 구성에 따른 장치 (A950) 의 블록도를 나타낸다.
도 87a 는 장치 (A950) 의 구현형태 (A960) 의 블록도를 나타낸다.
도 87b 는 장치 (A950) 의 구현형태 (A970) 의 블록도를 나타낸다.
하나보다 많은 도면에서 동일한 구조를 나타내기 위해 참조 라벨이 표시될 수도 있다.
본 명세서에서 설명된 바와 같은 시스템, 방법, 및 장치 (예컨대, 방법 (MlOO, M200, M300, M400, M500, M550, M560, M600, M650, M700, M800, M900, 및/또는 M950) 는 스피치 코딩을 낮은 일정한 비트 레이트로, 또는 낮은 최대 비트 레이트로, 이를테면, 초당 2 킬로비트 (kilobit) 로 지원하는데 이용될 수도 있다. 이러한 제약된 비트 레이트 스피치 코딩을 위한 애플리케이션들은 위성 링크들을 통한 음성 전화통신 ("위성을 통한 음성" 으로도 지칭됨) 의 송신을 포함하며, 셀룰러 전화통신이나 무선 전화통신을 위해 통신 기반이 부족한 원거리 영역에서 전화 서비스를 지원하는데 이용될 수도 있다. 위성 전화통신은 또한 차량단과 같은 모바일 수신기들을 위한 연속적인 광역 커버리지를 지원하는데 이용될 수도 있으며, 푸시-투-토크 (push-to-talk) 와 같은 서비스들을 가능하게 한다. 보다 일반적으로, 제약된 비트 레이트 스피치 코딩을 위한 애플리케이션들은 위성들을 포함하는 애플리케이션들에 한정되지 않고, 임의의 전력 제한 채널로 연장될 수도 있다.
그 문맥에 의해 명시적으로 제한되지 않는다면, 용어 "신호" 는 통상적인 의미들 중 어느 하나를 나타내기 위해 본 명세서에 사용되며, 유선, 버스, 또는 다른 송신 매체에서 표현되는 바와 같은 메모리 위치 (또는 메모리 위치들의 세트) 의 상태를 포함한다. 그 문맥에 의해 명시적으로 제한되지 않는다면, 용어 "생성" 은 본 명세서에서 연산 아니면 곱셈과 같은 그 통상적인 의미들 중 어느 하나를 나타내는데 사용된다. 그 문맥에 의해 명시적으로 제한되지 않는다면, 용어 "계산" 은 연산, 평가, 생성, 및/또는 한 세트의 값들로부터의 선택과 같은 그 통상적인 의미들 중 어느 하나를 나타내는데 사용된다. 그 문맥에 의해 명시적으로 제한되지 않는다면, 용어 "획득" 은 계산, 유도, (예컨대, 외부 디바이스로부터의) 수신, 및/또는 (예컨대, 저장 엘리먼트들의 배열로부터의) 검색과 같은 그 통상적인 의미들 중 어느 하나를 나타내는데 사용된다. 그 문맥에 의해 명시적으로 제한되지 않는다면, 용어 "추정 (estimating)" 는 연산 및/또는 평가와 같은 그 통상적인 의미들 중 어느 하나를 나타내는데 사용된다. 본 상세한 설명 및 청구항들에서 용어 "구비" 또는 "포함" 이 사용된다고 하여 다른 엘리먼트들 또는 동작들이 제외되는 것은 아니다. 용어 "기초하여" (예컨대, "A 는 B 에 기초한다" 와 같이) 는, (i) "적어도 ~ 에 기초하여" (예컨대, "A 는 적어도 B 에 기초한다"), 및 특정 문맥에서 적절하다면 (ⅱ) "~ 와 동일한" (예컨대, "A 는 B 와 동일하다") 의 경우들을 포함하는 그 통상적인 의미들 중 어느 하나를 나타내는데 사용된다. 문서의 일부의 참조에 의한 통합은 또한, 이러한 정의들이 이 문서의 다른 부분에 나타나는 부분 내에서 참조되는 용어들 또는 변수들의 정의들을 통합하는 것임이 이해될 것이다.
이와 달리 표시되지 않는다면, 특정한 특징을 갖는 스피치 인코더의 임의의 개시는 또한 아날로그 특징을 갖는 스피치 인코딩의 방법을 개시하도록 명시적으로 의도되며 (그 반대의 경우도 마찬가지임), 특정한 구성에 따른 스피치 인코더의 임의의 개시는 아날로그 구성에 따른 스피치 인코딩의 방법을 개시하도록 명시적으로 의도된다 (그 반대의 경우도 마찬가지임). 이와 달리 표시되지 않는다면, 스피치 신호의 프레임들 상에서 동작들을 수행하는 장치의 임의의 개시는 또한, 스피치 신호의 프레임들의 동작들을 수행하는 대응 방법을 개시하도록 명시적으로 의도된다 (그 반대의 경우도 마찬가지임). 이와 달리 표시되지 않는다면, 특정한 특징을 갖는 스피치 디코더는 아날로그 특징을 갖는 스피치 디코딩의 방법을 개시하도록 명시적으로 의도되며 (그 반대의 경우도 마찬가지임), 특정한 구성에 따른 스피치 디코더의 임의의 개시는 또한 아날로그 구성에 따른 스피치 디코딩의 방법을 개시하도록 명시적으로 의도된다 (그 반대의 경우도 마찬가지임). 용어들 "코더", "코덱 (codec) ", 및 "코딩 시스템" 은 치환가능하게 사용되어, (가능하다면, 인지 가중 필터 동작 및/또는 다른 필터 동작과 같은 하나 이상의 사전 처리 동작 후에) 스피치 신호의 프레임을 수신하도록 구성된 적어도 하나의 인코더, 및 프레임의 디코딩된 표현을 생성하도록 구성된 대응 디코더를 포함하는 시스템을 의미하게 된다.
스피치 인코딩 목적을 위해, 스피치 신호는 통상적으로 디지털화되어 (또는 양자화되어) 샘플들의 스트림을 획득한다. 디지털화 프로세스는, 예를 들어 펄스 코드 변조 (PCM), 압신된 mu-law PCM (companded mu-law PCM), 및 압신된 A-law PCM 을 포함하는 기술분야에서 알려진 다양한 방법들 중 어느 하나에 따라 수행될 수도 있다. 협대역 스피치 인코더들은 통상적으로 8 kHz 의 샘플링 레이트를 이용하는 한편, 광대역 스피치 인코더들은 통상적으로 더 높은 샘플링 레이트를 이용한다 (예컨대, 12 또는 16 kHz).
스피치 인코더는 디지털화된 스피치 신호를 프레임들의 시리즈로서 처리하도록 구성된다. 프레임 또는 프레임의 세그먼트 (서브프레임으로도 지칭됨) 를 처리하는 동작은 그 입력에 하나 이상의 이웃하는 프레임들의 세그먼트들을 또한 포함할 수도 있지만, 이 시리즈는 대개 중첩되지 않는 시리즈로서 구현된다. 스피치 신호의 프레임들은 통상적으로 프레임에 걸쳐 상대적으로 정지되도록 기대될 수도 있을 만큼 충분히 짧다. 프레임은, 10 밀리초, 20 밀리초, 및 30 밀리초가 보통의 프레임 크기이며, 통상적으로 스피치 신호의 5 밀리초와 35 밀리초 사이에서 (또는 약 40 내지 200 개의 샘플들에) 대응한다. 인코딩된 프레임의 실제 크기는 코딩 비트 레이트로 프레임으로부터 프레임으로 변경될 수도 있다.
특정 애플리케이션에 적합한 것으로 간주되는 임의의 샘플링 레이트가 이용될 수도 있지만, 20 밀리초의 프레임 길이는 7 kHz 의 샘플링 레이트로 140 샘플들, 8 kHz 의 샘플링 레이트로 160 샘플들, 및 16 kHz 의 샘플링 레이트로 320 샘플들에 대응한다. 스피치 코딩에 이용될 수도 있는 샘플링 레이트의 다른 예는 12.8 kHz 이며, 또 다른 예들은 12.8 kHz 로부터 38.4 kHz 까지의 범위 내에서의 다른 레이트들을 포함한다.
통상적으로 모든 프레임들은 동일한 길이를 가지며, 본 명세서에서 설명된 특정 예들에서는 균일한 프레임 길이로 가정한다. 그러나, 불균일한 프레임 길이들이 이용될 수도 있음이 명시적으로 고려되며 이에 의해 개시된다. 예를 들어, 본 명세서에서 설명된 각종 장치 및 방법의 구현형태들은, 활성화된 프레임과 비활성화된 프레임에 대해 및/또는 유성음 프레임 (voiced frame) 과 무성음 프레임 (unvoiced frame) 에 대해 상이한 프레임 길이들을 채용하는 애플리케이션들에서 사용될 수도 있다.
전술한 바와 같이, 상이한 코딩 모드들 및/또는 코딩 레이트들을 이용하는 스피치 인코더를 구성하여, 활성화된 프레임들 및 비활성화된 프레임들을 인코딩하는 것이 바람직할 수도 있다. 활성화된 프레임들을 비활성화된 프레임들과 구별하기 위해, 스피치 인코더는 통상적으로 스피치 활성화 검출기 (통상적으로 음성 활성화 검출기 또는 VAD 로 지칭됨) 를 포함하며, 그렇지 않으면 스피치 활성화를 검출하는 방법을 수행한다. 이러한 검출기 또는 방법은, 프레임 에너지, 신호대 잡음비, 주기성 (periodicity), 및 영교차율 (zero-crossing rate) 과 같은 하나 이상의 요인들에 기초하여, 프레임을 활성화 또는 비활성화로서 분류하도록 구성될 수도 있다. 이러한 분류는 이러한 요인의 값 또는 크기를 임계값과 비교하는 것, 및/또는 이러한 요인에서의 변경 크기를 임계값과 비교하는 것을 포함할 수도 있다.
스피치 활성화를 검출하는 스피치 활성화 검출기 또는 방법은 또한, 활성화된 프레임을, (예컨대, 모음을 표현하는) 유성음, (예컨대, 마찰음을 표현하는) 무성음, 또는 (예컨대, 단어의 시작부와 종료부를 표현하는) 천이와 같은 2 개 이상의 상이한 유형들 중 하나로서 분류하도록 구성될 수도 있다. 이러한 분류는 스피치 및/또는 잔차의 자기 상관 (autocorrelation), 영교차율, 제 1 반사 계수, 및/또는 본 명세서에서 보다 상세히 설명되는 (예컨대, 코딩 방식 선택기 (C200) 및/또는 프레임 재분류기 (RC10) 에 대해) 다른 특징들과 같은 요인들에 기초할 수도 있다. 스피치 인코더가 상이한 코딩 모드들 및/또는 코딩 비트 레이트를 이용하여 상이한 유형들의 활성화된 프레임들을 인코딩하는 것이 바람직할 수도 있다.
유성음 스피치의 프레임들은 장기간의 (즉, 일 프레임 주기보다 더 오래 계속되는) 주기적 구조를 갖는 경향이 있으며, 피치와 관련된다. 이 장기간의 스펙트럼 특징의 기재를 인코딩하는 코딩 모드를 이용하여 유성음 프레임 (또는 유성음 프레임들의 시퀀스) 을 인코딩하는 것은 통상적으로 보다 효율적이다. 이러한 코딩 모드들의 예들은 코드-여기 선형 예측법 (code-excited linear prediction; CELP) 및 프로토타입 파형 보간법 (prototype waveform interpolation; PWI) 과 같은 파형 보간 기술을 포함한다. PWI 코딩 모드의 일 예는 프로토타입 피치 주기 (prototype pitch period; PPP) 로 지칭된다. 무성음 프레임들 및 비활성화된 프레임들에는, 다른 한편으로, 대개 임의의 상당한 장기간의 스펙트럼 특징이 부족하고, 스피치 인코더는 이러한 특징을 기재하도록 시도하지 않는 코딩 모드를 이용하여 이들 프레임을 인코딩하도록 구성될 수도 있다. 잡음-여기 선형 예측법 (noise-excited linear prediction; NELP) 은 이러한 코딩 모드의 일 예이다.
스피치 인코더 또는 스피치 인코딩의 방법은 비트 레이트들 및 코딩 모드들 ("코딩 방식들 (coding schemes) " 로도 지칭됨) 의 상이한 조합들 사이에서 선택되도록 구성될 수도 있다. 예를 들어, 스피치 인코더는, 유성음 스피치를 포함하는 프레임들 및 천이 프레임들을 위한 풀-레이트 CELP 방식, 무성음 스피치를 포함하는 프레임들을 위한 하프-레이트 NELP 방식, 및 비활성화된 프레임들을 위한 1/8-레이트 NELP 방식을 이용하도록 구성될 수도 있다. 이러한 스피치 인코더의 다른 예들은 하나 이상의 코딩 방식, 이를테면, 풀-레이트 및 하프-레이트 CELP 방식들 및/또는 풀-레이트 및 1/4-레이트 PPP 방식들에 대한 다중 코딩 레이트를 지원한다.
스피치 인코더 또는 스피치 인코딩의 방법에 의해 생성되는 인코딩된 프레임은 스피치 신호의 대응 프레임이 재구성될 수도 있는 값들을 통상적으로 포함한다. 예를 들어, 인코딩된 프레임은 주파수 스펙트럼을 통한 프레임 내에서의 에너지의 분포에 대한 기재를 포함할 수도 있다. 이러한 에너지의 분포는 프레임의 "주파수 포락선 (envelope)" 또는 "스펙트럼 포락선" 으로도 지칭된다. 인코딩된 프레임은 프레임의 스펙트럼 포락선을 기재한 값들의 순서화된 (ordered) 시퀀스를 통상적으로 포함한다. 몇몇 경우에서는, 순서화된 시퀀스의 각 값은 대응 주파수에서의 또는 대응 스펙트럼 영역에서의 신호의 진폭 또는 크기를 나타낸다. 이러한 기재의 일 예는 푸리에 변환 계수들의 순서화된 시퀀스이다.
다른 경우들에서는, 순서화된 시퀀스는 코딩 모델의 파라미터의 값들을 포함한다. 이러한 순서화된 시퀀스의 일 유형의 예는 한 세트의 선형 예측 코딩 (linear prediction coding; LPC) 분석의 계수들의 값들이다. 이들 LPC 계수 값들은 인코딩된 스피치의 공명 ("포먼트 (formants) " 로도 지칭됨) 을 인코딩하고, 필터 계수들 또는 반사 계수들로서 구성될 수도 있다. 가장 현대적인 스피치 코더들의 인코딩부는 각 프레임에 대한 한 세트의 LPC 계수 값들을 추출하는 분석 필터를 포함한다. (대개 하나 이상의 벡터로서 배열되는) 이 세트에서의 계수 값들의 수는 LPC 분석의 "차수 (order) " 로도 지칭된다. (셀룰러폰과 같은) 통신 디바이스의 스피치 인코더에 의해 수행되는 LPC 분석의 통상적인 차수의 예들은, 4, 6, 8, 10, 12, 16, 20, 24, 28, 및 32 를 포함한다.
스피치 코더는, (예컨대, 대응 룩업테이블 또는 "코드북 (codebooks) " 에서의 하나 이상의 인덱스로서) 양자화된 형식으로 송신 채널을 거쳐 스펙트럼 포락선의 기재 (description) 를 송신하도록 통상적으로 구성된다. 따라서, 스피치 인코더가, 효율적으로 양자화될 수도 있는 형식으로 한 세트의 LPC 계수 값들, 이를테면 한 세트의 라인 스펙트럼 페어 (line spectral pair; LSP), 이미턴스 스펙트럼 페어 (immittance spectral pair; ISP), 이미턴스 스펙트럼 주파수 (immittance spectral frequency; ISF), 캡스트럼 (cepstral) 계수들, 또는 로그 영역 비율들의 값들을 계산하는 것이 바람직할 수도 있다. 스피치 인코더는 또한 변환 및/또는 양자화 전의 값들의 순서화된 시퀀스 상에서 캡스트럼 가중과 같은 다른 동작들을 수행하도록 구성될 수도 있다.
몇몇 경우들에서는, 프레임의 스펙트럼 포락선의 기재는 또한 (예컨대, 푸리에 변환 계수들의 순서화된 시퀀스에서와 같이) 프레임의 시간 (temporal) 정보의 기재를 포함한다. 다른 경우들에서는, 이 코딩된 프레임의 스피치 파라미터들의 세트는 프레임의 시간 정보의 기재를 포함할 수도 있다. 시간 정보의 기재의 형식은 프레임을 인코딩하는데 이용되는 특정 코딩 모드에 의존할 수도 있다. 일부 코딩 모드들에 있어서 (예컨대, CELP 코딩 모드에 있어서), 시간 정보의 기재는 (여기 신호의 기재로도 지칭되는) LPC 분석의 잔차의 기재를 포함한다. 대응 스피치 디코더는 여기 신호를 이용하여 (예컨대, 스펙트럼 포락선의 기재에 의해 규정되는) LPC 모델을 여기시킨다. 여기 신호의 기재는 (예컨대, 대응 코드북에서의 하나 이상의 인덱스로서) 양자화된 형식으로 인코딩된 프레임에 통상적으로 나타난다.
시간 정보의 기재는 또한 여기 신호의 피치 컴포넌트에 관한 정보를 포함할 수도 있다. PPP 코딩 모드에 있어서, 예를 들어 인코딩된 시간 정보는 여기 신호의 피치 컴포넌트를 재생하기 위해 스피치 디코더에 의해 이용되는 프로토타입의 기재를 포함할 수도 있다. 피치 컴포넌트에 관한 정보의 기재는 (예컨대, 대응 코드북에서의 하나 이상의 인덱스로서) 양자화된 형식으로 인코딩된 프레임에 통상적으로 나타난다. 다른 코딩 모드들에 있어서 (예컨대, NELP 코딩 모드에 있어서), 시간 정보의 기재는 (프레임의 "에너지 포락선" 또는 "이득 포락선" 으로도 지칭되는) 프레임의 시간 포락선의 기재를 포함할 수도 있다.
도 1 은 시간상에서의 (모음과 같은) 유성음 스피치 세그먼트의 진폭의 일 예를 나타낸다. 유성음 프레임에 있어서는 여기 신호가 피치 주파수에서 주기적인 일련의 펄스들과 통상적으로 유사한 한편, 무성음 프레임에 있어서는 여기 신호는 백색 가우스 잡음 (white Gaussian noise) 과 통상적으로 유사하다. CELP 또는 PWI 코더는 더 양호한 코딩 효율을 달성하기 위해 유성음 스피치 세그먼트들의 특성인 더 높은 주기성을 활용할 수도 있다. 도 2a 는 배경 잡음으로부터 유성음 스피치로 천이하는 스피치 세그먼트에 대한 시간상에서의 진폭의 예를 나타내며, 도 2b 는 배경 잡음으로부터 유성음 스피치로 천이하는 스피치 세그먼트의 LPC 잔차에 대한 시간상에서의 진폭의 예를 나타낸다. LPC 잔차의 코딩은 코딩된 신호 스트림의 대부분을 차지하므로, 잔차를 코딩할 필요가 있는 비트 레이트를 감소시키기 위해 각종 방식들이 개발되어 왔다. 이러한 방식들로는, CELP, NELP, PWI, 및 PPP 를 들 수 있다.
톨-품질 (toll-quality) 디코딩된 신호를 제공하는 식으로 낮은 비트 레이트 (예컨대, 초당 2 킬로비트) 에서 스피치 신호의 제약된 비트 레이트 인코딩을 수행하는 것이 바람직할 수도 있다. 톨-품질은 통상적으로, 대략 200-3200 Hz 의 대역폭 및 30 dB 보다 더 큰 신호대 잡음비 (SNR) 를 갖는 것을 특징으로 한다. 몇몇 경우들에서는, 톨 품질은 또한 2 또는 3 퍼센트 고조파 왜곡보다 더 적은 것을 특징으로 한다. 공교롭게도, 2 킬로비트 근방의 비트 레이트로 스피치를 인코딩하는 기존의 기술들은 통상적으로 인공적 (예컨대, 로봇식), 잡음섞인, 및/또는 과도하게 고조파인 (예컨대, 윙윙거리는 (buzzy)) 소리를 내는 합성 스피치를 생성한다.
침묵 및 무성음 프레임들과 같은 비유성음 (nonvoiced) 프레임에 대한 고품질의 인코딩은 대개, 잡음-여기 선형 예측 (NELP) 코딩 모드를 이용하여 낮은 비트 레이트로 수행될 수 있다. 그러나, 낮은 비트 레이트로 유성음 프레임의 고품질 인코딩을 수행하는 것은 더 어려울 수도 있다. 낮은 평균 비트 레이트를 달성하기 위해, 무성음 스피치로부터 유성음 스피치로의 천이를 포함하는 프레임 (온셋 (onset) 프레임 또는 업-과도형 (up-transient) 프레임으로도 지칭됨) 과 같이, 상이한 프레임들에 대한 더 높은 비트 레이트 및 후속하는 유성음 프레임들에 대한 더 낮은 비트 레이트 더 낮은 비트 레이트를 이용함으로써 양호한 결과들이 획득되었다. 그러나, 제약된 비트 레이트 보코더에 있어서는, 어려운 프레임들에 대해 더 높은 비트 레이트를 이용하는 옵션은 이용가능하지 않을 수도 있다.
EVRC (Enhanced Variable Rate Codec) 와 같은 기존의 가변 레이트 (variable-rate) 보코더들은 더 높은 비트 레이트로 CELP 와 같은 파형 코딩 모드를 이용하여 이러한 어려운 프레임들을 통상적으로 인코딩한다. 낮은 비트 레이트로 유성음 스피치 세그먼트들의 저장 또는 송신을 위해 이용될 수도 있는 다른 코딩 방식들은 PPP 코딩 방식과 같은 PWI 코딩 방식을 포함한다. 이러한 PWI 코딩 방식들은 잔차 신호 (residual signal) 에서의 일 피치 주기의 길이를 갖는 프로토타입의 파형을 주기적으로 위치시킨다. 디코더에서, 잔차 신호는 프로토타입들 사이의 피치 주기를 통해 보간되어, 고도로 주기적인 원래의 잔차 신호의 근사값을 획득한다. 높은 비트 레이트 인코딩 프레임이 하나 이상의 후속하는 낮은 비트 레이트 인코딩 프레임을 위한 참조를 제공하도록, PPP 코딩의 일부 애플리케이션은 혼합된 비트 레이트를 이용한다. 이러한 경우에, 낮은 비트 레이트 프레임에서의 정보 중 적어도 일부는 차동적으로 인코딩될 수도 있다.
시퀀스에서 후속하는 프레임들을 인코딩하는 차동 (differential) PWI (예컨대, PPP) 를 위해 양호한 프로토타입 (즉, 양호한 피치 펄스 형상 참조) 및/또는 피치 펄스 위상 참조를 제공하는 비차동 방법으로, 온셋 프레임과 같은 천이 프레임을 인코딩하는 것이 바람직할 수도 있다.
비트 레이트 제약의 코딩 시스템에서의 온셋 프레임들 및/또는 다른 천이 프레임들을 위한 코딩 모드를 제공하는 것이 바람직할 수도 있다. 예를 들어, 낮은 고정 비트 레이트 또는 낮은 최대 비트 레이트를 갖도록 제약되는 코딩 시스템에서 이러한 코딩 모드를 제공하는 것이 바람직할 수도 있다. 이러한 코딩 시스템을 위한 애플리케이션의 통상적인 예는 (예컨대, 도 14 를 참조하여 본 명세서에서 설명되는 바와 같은) 위성 통신 링크이다.
전술한 바와 같이, 스피치 신호의 프레임은 유성음, 무성음, 또는 침묵으로서 분류될 수도 있다. 무성음 프레임 및 침묵 프레임은 통상적으로 비주기적인 반면, 유성음 프레임들은 통상적으로 고도로 주기적이다. 다른 가능한 프레임 분류들은 온셋, 과도형 (transient), 및 다운-과도형 (down-transient) 을 포함한다. 온셋 프레임 (업-과도형 프레임) 은 통상적으로 단어의 시작부에서 발생한다. 온셋 프레임은, 도 2b 에서의 400 샘플들과 600 샘플들 사이에서의 영역에서와 같이, 프레임의 시작부에서 비주기적 (예컨대, 무성음) 이고, 프레임의 종료부까지 주기적 (예컨대, 유성음) 으로 될 수도 있다. 과도형 부류는 유성음 스피치이지만 덜 주기적인 스피치를 갖는 프레임들을 포함한다. 과도형 프레임들은 피치에서의 변경들 및/또는 감소된 주기성을 나타내며, (예컨대, 스피치 신호의 피치가 변경하고 있는) 유성음 세그먼트의 중간부 또는 종료부에서 통상적으로 발생한다. 통상적인 다운-과도형 프레임은 낮은 에너지 유성음 스피치를 가지며, 단어의 종료부에서 발생한다. 온셋 프레임, 과도형 프레임, 및 다운-과도형 프레임은 또한 "천이" 프레임으로서 지칭될 수도 있다.
스피치 인코더가 펄스의 위치들, 진폭들, 및 형상들을 비차동식으로 인코딩하는 것이 바람직할 수도 있다. 예를 들어, 인코딩 프레임이 후속하는 인코딩 프레임들의 여기 신호들을 위해 양호한 참조 프로토타입을 제공하도록, 온셋 프레임, 또는 일련의 유성음 프레임들의 선두를 인코딩하는 것이 바람직할 수도 있다. 이러한 인코더는 프레임의 최종적인 피치 펄스를 위치시키도록 구성되어, 최종적인 피치 펄스에 인접한 피치 펄스를 위치시키고, 피치 펄스들의 피치들 사이의 거리에 따른 래그 값을 추정하고, 최종적인 피치 펄스 값의 위치 및 추정된 래그 값을 나타내는 인코딩된 프레임을 생성할 수도 있다. 이 정보는 위상 정보 없이 인코딩된 후속하는 프레임의 디코딩시에 위상 참조로서 이용될 수도 있다. 인코더는 또한, (예컨대, QPPP 코딩 방식을 이용하여) 차동적으로 인코딩된 후속하는 프레임의 디코딩시에 참조로서 사용될 수도 있는 피치 펄스의 형상의 표시를 포함하는 인코딩된 프레임을 생성하도록 구성될 수도 있다.
천이 프레임 (예컨대, 온셋 프레임) 의 코딩시에, 프레임의 정확한 재생을 달성하는 것보다는 후속하는 프레임을 위해 양호한 참조를 제공하는 것이 더 중요할 수도 있다. 이러한 인코딩된 프레임은 PPP 또는 다른 인코딩 방식을 이용하여 인코딩되는 후속하는 유성음 프레임들을 위해 양호한 참조를 제공하는데 이용될 수도 있다. 예를 들어, 인코딩된 프레임이 (예컨대, 양호한 형상의 참조를 제공하기 위한) 피치 펄스의 형상의 기재, (예컨대, 양호한 래그 참조를 제공하기 위한) 피치 래그의 표시, 및 (예컨대, 양호한 위상 참조를 제공하기 위한) 프레임의 최종적인 피치 펄스의 위치의 표시를 포함하는 것이 바람직할 수도 있기는 하지만, 온셋 프레임의 다른 특징들은 비트를 거의 사용하지 않거나 심지어는 무시하고 인코딩될 수도 있다.
도 3a 는 작업 (E100 및 E200) 을 인코딩하는 것을 포함하는 구성에 따른 스피치 인코딩 (M100) 의 방법의 흐름도를 나타낸다. 작업 (E100) 은 스피치 신호의 제 1 프레임을 인코딩하고, 작업 (E200) 은 스피치 신호의 제 2 프레임을 인코딩하며, 여기서 제 2 프레임은 제 1 프레임 다음에 온다. 작업 (E100) 은 제 1 프레임을 비차동적으로 인코딩하는 참조 인코딩 모드로서 구현될 수도 있고, 작업 (E200) 은 제 1 프레임에 상대적인 제 2 프레임을 인코딩하는 상대적인 코딩 모드 (예컨대, 차동 코딩 모드) 로서 구현될 수도 있다. 일 예에서, 제 1 프레임은 온셋 프레임이고 제 2 프레임은 온셋 프레임 직후에 오는 유성음 프레임이다. 제 2 프레임은 또한 온셋 프레임 직후에 오는 연속되는 일련의 유성음 프레임의 선두일 수도 있다.
인코딩 작업 (E100) 은 여기 신호의 기재를 포함하는 제 1 코딩 프레임을 생성한다. 이 기재는 시간 도메인에서 피치 펄스의 형상 (즉, 피치 프로토타입) 를 나타내는 한 세트의 값들 및 피치 펄스가 반복되는 위치들을 포함한다. 피치 펄스 위치들은 프레임의 단말 피치 펄스의 위치와 같은 참조점과 함께 래그 값을 인코딩함으로써 표시된다. 이 기재에서, 이 개시의 범위는 피치 펄스의 위치가 그 첫 번째 샘플 또는 최종 샘플과 같은 펄스의 다른 특징의 위치에 의해 등가적으로 표시되는 문맥들을 명시적으로 포함하고 있지만, 피치 펄스의 위치는 그 피크의 위치를 이용하여 표시된다. 제 1 인코딩된 프레임은 또한 프레임의 스펙트럼 포락선의 기재 (예컨대, 하나 이상의 LSP 인덱스) 와 같은 다른 정보의 표현을 포함할 수도 있다. 작업 (E100) 은 인코딩된 프레임을 템플릿에 따른 패킷으로서 생성하도록 구성될 수도 있다. 예를 들어, 작업 (E100) 은 본 명세서에 기재된 바와 같이 패킷 생성 작업 (E320, E340, 및/또는 E440) 의 인스턴스를 포함할 수도 있다.
작업 (E100) 은, 제 1 프레임의 적어도 하나의 피치 펄스로부터의 정보에 기초하여, 한 세트의 시간 도메인 피치 펄스 형상들 사이에서 하나를 선택하는 하부작업 (E110) 을 포함한다. 작업 (E110) 은 프레임에서 가장 높은 피크를 갖는 피치 펄스에 (예컨대, 최소제곱 (least-square) 의 의미에서) 가장 근접하게 정합하는 형상을 선택하도록 구성될 수도 있다. 이와 달리, 작업 (E110) 은 프레임에서 가장 높은 에너지 (예컨대, 제곱 샘플값의 가장 높은 합) 를 갖는 피치 펄스에 가장 근접하게 정합하는 형상을 선택하도록 구성될 수도 있다. 이와 달리, 작업 (E110) 은 프레임의 2 개 이상의 피치 펄스들 (예컨대, 가장 높은 피크들 및/또는 에너지들을 갖는 펄스들) 의 평균에 가장 근접하게 정합하는 형상을 선택하도록 구성될 수도 있다. 작업 (E110) 은 피치 펄스 형상들 ("형상 벡터들 (shape vectors) " 로도 지칭됨) 의 코드북 (즉, 양자화 테이블 (quantization table)) 을 통한 서치를 포함하도록 구현될 수도 있다. 예를 들어, 작업 (E110) 은, 본 명세서에 기재된 바와 같이, 펄스 형상 벡터 선택 작업 (T660 또는 E430) 의 인스턴스로서 구현될 수도 있다.
인코딩 작업 (T100) 은 또한 프레임의 단말 피치 펄스의 위치 (예컨대, 프레임의 초기 피치 피크의 위치 또는 프레임의 최종 피치 피크의 위치) 를 계산하는 하부작업 (E120) 을 포함한다. 단말 피크 펄스의 위치는, 프레임의 시작부에 상대적으로, 프레임의 종료부에 상대적으로, 또는 프레임 내의 다른 참조 위치에 상대적으로 표시될 수도 있다. 작업 (E120) 은, (예컨대, 샘플의 진폭 또는 에너지 (여기서, 에너지는 통상적으로 샘플값의 제곱으로 계산됨) 와 프레임 평균 사이의 관계에 기초하여) 프레임 경계 근방의 샘플을 선택하고 이 샘플 다음의 영역 내에서 최대값을 갖는 샘플을 검색함으로써, 단말 피치 펄스 피크를 찾도록 구성될 수도 있다. 예를 들어, 작업 (E120) 은 후술하는 단말 피치 피크 위치확인 작업 (L100) 의 구성 중 어느 하나에 따라 구현될 수도 있다.
인코딩 작업 (E100) 은 또한 프레임의 피치 주기를 추정하는 하부작업 (E130) 을 포함한다. 피치 주기 ("피치 래그 값", "래그 값", "피치 래그", 또는 간략히 "래그" 로도 지칭됨) 는 피치 펄스들 사이의 거리 (즉, 인접하는 피치 펄스들의 피크들 사이의 거리) 를 표시한다. 통상적인 피치 주파수들은 남성 화자의 경우에는 약 70 내지 100 Hz 이고 여성 화자의 경우에는 150 내지 200 Hz 의 범위에 속한다. 8 kHz 의 샘플링 레이트에 있어서, 이들 피치 주파수 범위들은, 통상적인 여성 화자의 경우에는 약 40 내지 50 샘플들의 래그 범위, 및 통상적인 남성 화자의 경우에는 90 내지 100 샘플의 래그 범위에 대응한다. 이들 범위를 벗어나는 피치 주파수를 갖는 화자들에 적응시키기 위해서는, 50 에서 60 Hz 내지 300 에서 400 Hz 의 피치 주파수 범위를 지원하는 것이 바람직할 수도 있다. 8 kHz 의 샘플링 레이트에 있어서, 이 주파수 범위는 20 에서 25 샘플들 내지 약 130 에서 160 샘플들의 래그 범위에 대응한다.
피치 주기 추정 작업 (E130) 은, (예컨대, 후술하는 래그 추정 작업 (L200) 의 구현형태의 인스턴스로서의) 임의의 적합한 피치 추정 절차를 이용하여 피치 주기를 추정하도록 구현될 수도 있다. 이러한 절차는 피치 피크를 찾는 것 (또는 그렇지 않으면 2 개의 인접하는 피치 피크들을 찾는 것), 및 래그를 피크들 사이의 거리로서 계산하는 것을 통상적으로 포함한다. 작업 (E130) 은 이 에너지의 측정치 (예컨대, 샘플 에너지와 프레임 평균 에너지 사이의 비율), 및/또는 확인된 (confirmed) 피치 피크 (예컨대, 단말 피치 피크) 의 유사한 부근과 샘플의 부근이 얼마나 양호하게 상관되는지에 대한 측정치에 기초하여 샘플을 피치 피크로서 식별하도록 구성될 수도 있다.
인코딩 작업 (E100) 은, 작업 (E110) 에 의해 선택된 시간-도메인 피치 펄스 형상, 작업 (E120) 에 의해 계산된 단말 피치 펄스 위치, 및 작업 (E130) 에 의해 추정된 래그 값와 같은, 제 1 프레임에 대한 여기 신호의 특징들의 표현들을 포함하는 제 1 인코딩 프레임을 생성한다. 통상적으로, 작업 (E100) 은 피치 주기 추정 작업 (E130) 전에 피치 펄스 위치 계산 작업 (E120) 을 수행하고, 피치 펄스 형상 선택 작업 (E110) 전에 피치 주기 추정 작업 (E130) 을 수행하도록 구성될 것이다.
제 1 인코딩 프레임은 추정된 래그 값을 직접 나타내는 값을 포함할 수도 있다. 이와 달리, 이 인코딩 프레임이 래그 값을 최소값에 상대적인 오프셋으로서 나타내는 것이 바람직할 수도 있다. 20 개의 샘플들의 최소 래그 값에 있어서, 예를 들어 20 내지 147 (즉, 20+0 내지 20+127) 샘플들의 범위 내의 임의의 가능한 정수를 나타내는데 7 비트의 수가 이용될 수도 있다. 25 샘플들의 래그 값에 있어서, 25 내지 152 (즉, 25+0 내지 25+127) 샘플들의 범위 내의 임의의 가능한 정수를 나타내는데 7 비트의 수가 이용될 수도 있다. 이러한 식으로, 래그 값을 최소값에 상대적인 오프셋으로서 인코딩하는 것은, 값들의 범위를 인코딩할 필요가 있는 비트들의 수를 최소화하면서, 예측되는 래그 값의 범위의 커버리지를 최소화하는데 이용될 수도 있다. 다른 예들은 비정수 (non-integer) 래그 값들의 인코딩을 지원하도록 구성될 수도 있다. 제 1 인코딩 프레임은 또한, 제 2 래그 값 또는 그렇지 않으면 프레임의 일 측 (예컨대, 프레임의 시작부 또는 종료부) 으로부터 다른 측으로의 래그 값에서의 변화를 나타내는 값과 같은 피치 래그에 관련된 하나의 값보다 많은 값들을 포함하는 것도 가능하다.
프레임의 피치 펄스들의 진폭들이 다른 진폭들과는 상이할 가능성이 있다. 온셋 프레임에서, 예를 들어 에너지는, 프레임의 종료부 근방의 피치 펄스는 프레임의 시작부 근방의 피치 펄스보다 큰 진폭을 갖도록, 시간에 걸쳐 증가할 수도 있다. 적어도 이러한 경우에는, 피치 펄스들의 상대적인 진폭들의 기재와 같은, 시간에 걸친 프레임의 평균 에너지에서의 변화의 기재 ("이득 프로파일" 로도 지칭됨) 를 포함하는 것이 바람직할 수도 있다.
도 3b 는 하부작업 (E140) 을 포함하는 인코딩 작업 (E100) 의 구현형태 (E102) 의 흐름도를 나타낸다. 작업 (E140) 은 프레임의 이득 프로파일을, 제 1 프레임의 상이한 피치 펄스들에 대응하는 한 세트의 이득값들로서 계산한다. 예를 들어, 이득값들의 각각은 프레임의 상이한 피치 펄스에 대응할 수도 있다. 작업 (E140) 은 이득 프로파일들의 코드북 (예컨대, 양자화 테이블) 및 (예컨대, 최소제곱법의 의미에서) 프레임의 이득 프로파일에 가장 근접하게 정합하는 코드북 엔트리의 선택을 통한 서치를 포함할 수도 있다. 인코딩 작업 (E102) 은 작업 (E110) 에 의해 선택된 시간-도메인 피치 펄스 형상의 표현, 작업 (E120) 에 의해 계산되는 단말 피치 펄스 위치, 작업 (E130) 에 의해 추정되는 래그 값, 및 작업 (E140) 에 의해 계산되는 이득값들의 세트를 포함하는 제 1 인코딩 프레임을 생성한다. 도 4 는 프레임에서의 이들 특징들의 개략적인 표현을 나타내며, 여기서 라벨 "1" 은 단말 피치 펄스 위치를 나타내고, 라벨 "2" 는 추정된 래그 값을 나타내고, 라벨 "3" 은 선택된 시간-도메인 피치 펄스 형상을 나타내고, 라벨 "4" 는 이득 프로파일에서 인코딩된 값들 (예컨대, 피치 펄스들의 상대적인 진폭들) 을 나타낸다. 통상적으로, 작업 (E102) 은, 이득값 계산 작업 (E140) 전에 피치 주기 추정 작업 (E130) 을 수행하도록 구성될 것이며, 피치 펄스 형상 선택 작업 (E110) 과 직렬로 또는 병렬로 수행될 수도 있다. (도 26 의 표에서 나타낸 바와 같은) 일 예에서, 인코딩 작업 (E102) 은 1/4 레이트로 동작하여, 참조 펄스 위치를 나타내는 7 비트, 참조 펄스 형상을 나타내는 7 비트, 참조 래그 값을 나타내는 7 비트, 이득 프로파일을 나타내는 4 비트, 하나 이상의 LSP 인덱스를 반송하는 13 비트, 및 프레임의 코딩 모드를 나타내는 2 비트 (예컨대, NELP 와 같은 무성음 코딩 모드를 나타내는 "00", QPPP 와 같은 상대적인 코딩 모드를 나타내는 "01", 및 참조 코딩 모드 (E102) 를 나타내는 "10") 를 포함하는 40 비트의 인코딩 프레임을 생성한다.
제 1 인코딩 프레임은 프레임에서 피치 펄스들 (또는 피치 피크들) 의 수의 명시적인 표시를 포함할 수도 있다. 이와 달리, 프레임에서의 피치 펄스들 또는 피치 피크들의 수는 묵시적으로 인코딩될 수도 있다. 예를 들어, 제 1 인코딩 프레임은 단말 피치 펄스의 위치 (예컨대, 단말 피치 피크의 위치) 및 피치 래그만을 이용하여 프레임에서의 모든 피치 펄스들의 위치들을 나타낼 수도 있다. 대응 디코더는 단말 피치 펄스의 위치 및 래그 값으로부터 피크 펄스들에 대한 잠재적인 위치들을 계산하고, 이득 프로파일로부터 각각의 잠재적인 펄스 위치에 대한 진폭을 획득하도록 구성될 수도 있다. 프레임은 잠재적인 펄스 위치들보다 더 작은 펄스들을 포함하는 경우에 있어서, 이득 프로파일은 하나 이상의 잠재적인 펄스 위치들에 대한 0 의 이득값 (또는 다른 매우 작은 값) 을 나타낼 수도 있다.
본 명세서에 나타낸 바와 같이, 온셋 프레임은 무성음으로 시작되고 유성음으로 종료될 수도 있다. 대응하는 인코딩 프레임은, 전체적인 온셋 프레임의 정확한 재생을 지원하는 것보다는, 후속하는 프레임들을 위한 양호한 참조를 제공하는 것이 더 바람직할 수도 있고, 방법 (M100) 은 이러한 온셋 프레임의 최초의 무성음부를 인코딩을 위해 단지 제한된 지원만을 제공하도록 구현될 수도 있다. 예를 들어, 작업 (E140) 은 무성음부 내의 임의의 피치 펄스 주기들을 위해 0 의 이득값 (또는 0 에 근접하는 값) 을 나타내는 이득 프로파일을 선택하도록 구성될 수도 있다. 이와 달리, 작업 (E140) 은 무성음부 내에서 0 이 아닌 이득값들을 나타내는 이득 프로파일을 선택하도록 구성될 수도 있다. 이러한 일 예에서, 작업 (E140) 은 0 에 근접하여 시작하는 일반적인 이득 프로파일을 선택하고, 프레임의 무성음부의 제 1 피치 펄스의 이득 레벨로 단조롭게 상승한다.
작업 (E140) 은, 상이한 이득 VQ 테이블들이 상이한 수의 펄스들에 대해 이용되면서, 이득값들의 세트를 한 세트의 이득 벡터 양자화 (vector quantization; VQ) 테이블 중 하나에 대한 인덱스로서 계산하도록 구성될 수도 있다. 테이블들의 세트는 각 이득 VQ 테이블이 동일한 수의 엔트리들을 포함하고, 상이한 이득 VQ 테이블들은 상이한 길이들의 벡터들을 포함하도록 구성될 수도 있다. 이러한 코딩 시스템에서, 작업 (E140) 은, 단말 피치 펄스의 위치 및 피치 래그에 기초하여, 추정된 피치 펄스들의 수를 연산하고, 이 추정된 수는 이득 VQ 테이블의 세트 중 하나를 선택하는데 이용된다. 이 경우, 인코딩 프레임을 디코딩하는 대응 방법에 의해 아날로그 동작이 또한 수행될 수도 있다. 추정된 피치 펄스들의 수가 실제 피치 펄스들의 수보다 더 크다면, 작업 (E140) 은 프레임에서의 각각의 추가적인 피치 펄스 주기 동안 이득을, 전술한 바와 같이, 작은 값으로 또는 0 으로 설정함으로써 이 정보를 운반할 수도 있다.
인코딩 작업 (E200) 은 제 1 프레임 다음에 오는 스피치 신호의 제 2 프레임을 인코딩한다. 작업 (E200) 은 제 1 프레임의 대응 특징들에 상대적인 제 2 프레임의 특징들을 인코딩하는 상대적 코딩 모드 (예컨대, 차동 코딩 모드) 로서 구현될 수도 있다. 작업 (E200) 은 현재 프레임의 피치 펄스 형상 및 이전 프레임의 피치 펄스 형상 사이의 피치 펄스 형상 차동을 계산하는 하부작업 (E210) 을 포함한다. 예를 들어, 작업 (E210) 은 제 2 프레임으로부터의 피치 프로토타입을 추출하고, 추출된 프로토타입 및 제 1 프레임의 피치 프로토타입 사이의 차이로서 피치 펄스 형상 차동 (즉, 선택된 피치 펄스 형상) 을 계산하도록 구성될 수도 있다. 작업 (E210) 에 의해 수행될 수도 있는 프로토타입 추출 동작들의 예들은, 2004 년 6 월 22 일에 특허된 미국 특허 제 6,754,630 호 (Das et al.), 및 2006 년 11 월 14 일에 특허된 미국 특허 제 7,136,812 호 (Manjunath et al.) 에 기재된 것을 포함한다.
주파수 도메인에서 2 개의 프로토타입 사이의 차이로서 피치 펄스 형상 차동을 계산하는 작업 (E210) 을 구성하는 것이 바람직할 수도 있다. 도 5a 는 피치 펄스 형상 차동 계산 작업 (E210) 의 구현형태 (E212) 를 포함하는 인코딩 작업 (E200) 의 구현형태 (E202) 의 다이어그램을 나타낸다. 작업 (E212) 은 현재의 프레임의 주파수-도메인 피치 프로토타입을 계산하는 하부작업 (E214) 을 포함한다. 예를 들어, 작업 (E214) 은 추출된 프로토타입 상에서 고속 푸리에 변환 동작을 수행하거나, 또는 그렇지 않으면 추출된 프로토타입을 주파수 도메인으로 변환하도록 구성될 수도 있다. 이러한 작업 (E212) 의 구현형태는 또한, 주파수-도메인 프로토타입을 주파수 빈들 (예컨대, 한 세트의 비중첩 빈들) 로 분할하고, 그 엘리먼트들이 각 빈에서의 평균 크기인 대응 주파수 크기 벡터를 계산하고, 프로토타입의 주파수 크기 벡터와 이전 프레임의 프로토타입의 주파수 크기 벡터 사이의 벡터 차이로서 피치 펄스 형상 차동을 계산함으로써, 피치 펄스 형상 차동을 계산하도록 구성될 수도 있다. 이러한 경우, 작업 (E212) 은 또한 대응하는 인코딩 프레임이 양자화된 차동을 포함하기 위해 피치 펄스 형상 차동을 벡터 양자화하도록 구성될 수도 있다.
인코딩 작업 (E200) 은 또한 현재의 프레임의 피치 주기와 이전 프레임의 피치 주기 사이의 피치 주기 차동을 계산하는 하부작업 (E220) 을 포함한다. 예를 들어, 작업 (E220) 은 현재 프레임의 피치 래그를 추정하고 이전 프레임의 피치 래그 값을 차감하여, 피치 주기 차동을 획득하도록 구성될 수도 있다. 이러한 일 예에서, 작업 (E220) 은 피치 주기 차동을 (현재의 래그 추정치 - 이전 래그 추정치 + 7) 로서 계산하도록 구성된다. 피치 래그를 추정하기 위해, 작업 (E220) 은, 전술한 피치 주기 추정 작업 (E130) 의 인스턴스, 후술하는 래그 추정 작업 (L200) 의 인스턴스, 또는 위에서 언급된 EVRC 문서 C.S0014-C 의 섹션 4.6.3 (pp. 4-44 내지 4-49) (이 섹션은 이에 의해 예로서의 참조로써 통합됨) 에 기재된 바와 같은 절차와 같은, 임의의 적합한 피치 추정 기술을 이용하도록 구성될 수도 있다. 이전 프레임의 비양자화된 피치 래그 값이 이전 프레임의 비양자화된 피치 래그 값과 상이한 경우에 있어서는, 작업 (E220) 이 현재의 래그 추정치로부터 역양자화된 값을 차감함으로써 피치 주기 차동을 계산하는 것이 바람직할 수도 있다.
인코딩 작업 (E200) 은 1/4 레이트 PPP (QPPP) 와 같은 제한된 시간-동조를 갖는 코딩 방식을 이용하여 구현될 수도 있다. QPPP 의 구현형태는, (온라인 www-dot-3gpp- dot-org 에서 이용가능한) "Enhanced Variable Rate Codec, Speech Service Options 3, 68, and 70 for Wideband Spread Spectrum Digital Systems," 로 명명되는 2007 년 1 월의 제 3 세대 파트너쉽 프로젝트 2 (Third Generation Partnership Project 2; 3GPP2) 문서 C.S0014-C, vl.O 의 섹션 4.2.4 (pp. 4-10 내지 4-17) 및 4.12.28 (pp. 4-132 내지 4-138) 에 기재되어 있으며, 이에 의해 그 섹션은 예로서의 참조로써 통합된다. 이 코딩 방식은 그 대역폭이 주파수에 따라 증가하는 21 개의 주파수 빈들의 불균일한 세트를 이용하여 프로토타입의 주파수 크기 벡터를 계산한다. QPPP 를 이용하여 생성된 인코딩된 프레임의 40 비트들은, 하나보다 많은 LSP 인덱스들을 반송하는 16 비트, 델타 래그 값을 반송하는 4 비트들, 프레임에 대한 진폭 정보를 반송하는 18 비트들, 모드를 나타내기 위한 1 비트, 및 예비 1 비트를 (도 26 의 표에 나타낸 바와 같이) 포함한다. 상대적 코딩 방식의 이 예는, 펄스 형상에 대한 비트 및 위상 정보에 대한 비트를 포함하지는 않는다.
전술한 바와 같이, 작업 (E100) 에서 인코딩된 프레임은 온셋 프레임일 수도 있고, 작업 (E200) 에서 인코딩된 프레임은 온셋 프레임 바로 다음에 오는 연속되는 일련의 유성음 프레임 중 첫 번째일 수도 있다. 도 5b 는 하부작업 (E300) 을 포함하는 방법 (M100) 의 구현형태 (M110) 의 흐름도를 나타낸다. 작업 (E300) 은 제 2 프레임 다음에 오는 제 3 프레임을 인코딩한다. 예를 들어, 제 3 프레임은 온셋 프레임 바로 다음에 오는 연속되는 일련의 유성음 프레임들에서 두 번째일 수도 있다. 인코딩 작업 (E300) 은 본 명세서에 기재된 바와 같은 작업 (E200) 의 구현형태의 인스턴스 (예컨대, QPPP 인코딩의 인스턴스와 같은) 로서 구현될 수도 있다. 이러한 일 예에서, 작업 (E300) 은 제 3 프레임의 피치 프로토타입과 제 2 프레임의 피치 프로토타입 사이의 피치 펄스 형상 차동을 계산하도록 구성되는 작업 (E210) 의 (예컨대, 작업 (E212) 의) 인스턴스, 및 제 3 프레임의 피치 주기와 제 2 프레임의 피치 주기 사이의 피치 주기 차동을 계산하도록 구성되는 작업 (E220) 의 인스턴스를 포함한다. 이러한 다른 예에서는, 작업 (E300) 은, 제 3 프레임의 피치 프로토타입과 제 1 프레임의 선택된 피치 펄스 형상 사이의 피치 펄스 형상 차동을 계산하도록 구성되는 작업 (E210) 의 (예컨대, 작업 (E212) 의) 인스턴스, 및 제 3 프레임의 피치 주기와 제 1 프레임의 피치 주기 사이의 피치 주기 차동을 계산하도록 구성되는 작업 (E220) 의 인스턴스를 포함한다.
도 5c 는 하부작업 (T100) 을 포함하는 방법 (M100) 의 구현형태 (M120) 의 흐름도를 나타낸다. 작업 (T100) 은 (업-과도형 또는 온셋 프레임으로도 지칭되는) 무성음 스피치로부터 유성음 스피치로의 천이를 포함하는 프레임을 검출한다. 작업 (T100) 은 (예컨대, 코딩 방식 선택기 (C200) 와 관련하여) 후술하는 EVRC 분류 방식에 따라 프레임 분류를 수행하도록 구성될 수도 있고, 또한 (프레임 재분류기 (RC10) 와 관련하여 후술하는 바와 같은) 프레임을 재분류하도록 구성될 수도 있다.
도 6a 는 스피치 신호의 프레임들을 인코딩하도록 구성되는 장치 (MF100) 의 블록도를 나타낸다. 장치 (MF100) 는 스피치 신호의 제 1 프레임을 인코딩하는 수단 (FE100) 및 스피치 신호의 제 2 프레임을 인코딩하는 수단 (FE200) 을 포함하며, 여기서 제 2 프레임은 제 1 프레임 다음에 온다. 수단 (FE100) 은, (예컨대, 작업 (E110) 의 각종 구현형태들과 관련하여 전술한 바와 같이) 제 1 프레임의 적어도 하나의 피치 펄스로부터의 정보에 기초하여, 한 세트의 시간-도메인 피치 펄스 형상들 중에서 하나를 선택하는 수단 (FE110) 을 포함한다. 수단 (FE100) 은 또한, (예컨대, 작업 (E120) 의 각종 구현형태들과 관련하여 전술한 바와 같이) 제 1 프레임의 단말 피치 펄스의 위치를 계산하는 수단 (FE120) 을 포함한다. 수단 (FE100) 은 또한, (작업 (E130) 의 각종 구현형태들과 관련하여 전술한 바와 같이) 제 1 프레임의 피치 주기를 추정하는 수단 (FE130) 을 포함한다. 도 6b 는 (예컨대, 작업 (E140) 의 각종 구현형태들과 관련하여 전술한 바와 같이) 제 1 프레임의 상이한 피치 펄스들에 대응하는 한 세트의 이득값들을 계산하는 수단 (FE140) 도 또한 포함하는 수단 (FE100) 의 구현형태 (FE102) 의 블록도를 나타낸다.
수단 (FE200) 은 (예컨대, 작업 (E210) 의 각종 구현형태들과 관련하여 전술한 바와 같이) 제 2 프레임의 피치 펄스 형상과 제 1 프레임의 피치 펄스 형상 사이의 피치 펄스 형상 차동을 계산하는 수단 (FE210) 을 포함한다. 수단 (FE200) 은 또한, (예컨대, 작업 (E220) 의 각종 구현형태들과 관련하여 전술한 바와 같이) 제 2 프레임의 피치 주기와 제 1 프레임의 피치 주기 사이의 피치 주기 차동을 계산하는 수단 (FE220) 을 포함한다.
도 7a 는 일반적인 구성에 따른 스피치 신호 (M200) 의 여기 신호들을 디코딩하는 방법의 흐름도를 나타낸다. 방법 (M200) 은 제 1 인코딩 프레임의 일부를 디코딩하여 제 1 여기 신호를 획득하는 작업 (D100) 을 포함하며, 여기서 이 일부는 시간-도메인 피치 펄스 형상, 피치 펄스 위치, 및 피치 주기의 표현들을 포함한다. 작업 (D100) 은 피치 펄스 위치에 따라 제 1 여기 신호 내에 시간-도메인 피치 펄스 형상의 제 1 카피를 배열하는 하부작업 (D110) 을 포함한다. 작업 (D100) 은 또한, 피치 펄스 위치 및 피치 주기에 따라 제 1 여기 신호 내에 시간-도메인 피치 펄스 형상의 제 2 카피를 배열하는 하부작업 (D120) 을 포함한다. 일 예에서, 작업들 (D110 및 D120) 은 (예컨대, 형상을 나타내는 제 1 인코딩 프레임으로부터의 인덱스에 따라) 코드북으로부터 시간-도메인 피치 펄스 형상을 획득하고, 이것을 여기 신호 버퍼로 카피한다. 작업 (D100) 및/또는 방법 (M200) 은 또한, (예컨대, 제 1 인코딩 프레임으로부터의 하나 이상의 양자화된 LSP 벡터들을 역양자화하고, 그 결과를 역변환함으로써) 제 1 인코딩 프레임으로부터 한 세트의 LPC 계수값들을 획득하고, 상기 세트의 LPC 계수값들에 따라 합성 필터를 구성하고, 구성된 합성 필터에 제 1 여기 신호를 적용하여 제 1 디코딩 프레임을 획득하는 작업들을 포함하도록 구현될 수도 있다.
도 7b 는 디코딩 작업 (D100) 의 구현형태 (D102) 의 흐름도를 나타낸다. 이 경우, 제 1 인코딩 프레임의 일부는 또한 한 세트의 이득값들의 표현을 포함한다. 작업 (D102) 은 시간-도메인 피치 펄스 형상의 제 1 카피에 이 세트의 이득값들 중 하나를 적용하는 하부작업 (D130) 을 포함한다. 작업 (D102) 은 또한, 이 세트의 이득값들 중 상이한 하나를 시간-도메인 피치 펄스 형상의 제 2 카피에 적용하는 하부작업 (D140) 을 포함한다. 일 예에서, 작업 (D130) 은 작업 (D110) 동안 그 이득값을 그 형상에 적용하고, 작업 (D140) 은 작업 (D120) 동안 그 이득값을 그 형상에 적용한다. 다른 예에서는, 작업 (D130) 은 작업 (D110) 이 실시된 후 그 이득값을 여기 신호 버퍼의 대응부에 적용하고, 작업 (D140) 은 작업 (D120) 이 실시된 후 그 이득값을 여기 신호의 대응부에 적용한다. 작업 (D102) 을 포함하는 방법 (M200) 의 구현형태는, 구성된 합성 필터에 결과적인 이득-조정 여기 신호를 적용하여, 제 1 디코딩 프레임을 획득하는 작업을 포함하도록 구성될 수도 있다.
방법 (M200) 은 또한, 제 2 인코딩 프레임의 일부를 디코딩하여 제 2 여기 신호를 획득하는 작업 (D200) 을 포함하며, 여기서 이 일부는 피치 펄스 형상 차동 및 피치 주기 차동의 표현들을 포함한다. 작업 (D200) 은 시간-도메인 피치 펄스 형상 및 피치 펄스 형상 차동에 기초하여 제 2 피치 펄스 형상을 계산하는 하부작업 (D210) 을 포함한다. 작업 (D200) 은 또한, 피치 주기 및 피치 주기 차동에 기초하여 제 2 피치 주기를 계산하는 하부작업 (D220) 을 포함한다. 작업 (D200) 은 또한, 피치 펄스 위치 및 제 2 피치 주기에 따라, 제 2 여기 신호 내에 2개 이상의 제 2 피치 펄스 형상의 카피들을 배열하는 하부작업 (D230) 을 포함한다. 작업 (D230) 은 제 2 여기 신호 내의 카피들 각각에 대한 위치를 피치 펄스 위치로부터의 대응 오프셋으로서 계산하는 것을 포함할 수도 있으며, 여기서 각 오프셋은 제 2 피치 주기의 정수배이다. 작업 (D200) 및/또는 방법 (M200) 은 또한, (예컨대, 제 2 인코딩 프레임으로부터의 하나 이상의 양자화된 LSP 벡터들을 역양자화하고 그 결과를 역변환함으로써) 제 2 인코딩 프레임으로부터 한 세트의 LPC 계수값들을 획득하고, 이 세트의 LPC 계수값들에 따라 합성 필터를 구성하고, 구성된 합성 필터에 제 2 여기 신호를 적용하여 제 2 디코딩 프레임을 획득하는 작업들을 포함하도록 구현될 수도 있다.
도 8a 는 스피치 신호의 여기 신호들을 디코딩하는 장치 (MF200) 의 블록도를 나타낸다. 장치 (MF200) 는 제 1 인코딩 프레임의 일부를 디코딩하여 제 1 여기 신호를 획득하는 수단 (FD100) 을 포함하며, 여기서 이 일부는 시간-도메인 피치 펄스 형상, 피치 펄스 위치, 및 피치 주기의 표현들을 포함한다. 수단 (FD100) 은 피치 펄스 위치에 따라 제 1 여기 신호 내에 시간-도메인 피치 펄스 형상의 제 1 카피를 배열하는 수단 (FD110) 을 포함한다. 수단 (FD100) 은 또한, 피치 펄스 위치 및 피치 주기에 따라 제 1 여기 신호 내에 시간-도메인 피치 펄스 형상의 제 2 카피를 배열하는 수단 (FD120) 을 포함한다. 일 예에서, 수단들 (FD110 및 FD120) 은, (예컨대, 이 형상을 나타내는 제 1 인코딩 프레임으로부터의 인덱스에 따라) 코드북으로부터 시간-도메인 피치 펄스 형상을 획득하고, 이것을 여기 신호 버퍼에 카피하도록 구성된다. 수단 (FD200) 및/또는 장치 (MF200) 는 또한, (예컨대, 제 1 인코딩 프레임으로부터의 하나 이상의 양자화된 LSP 벡터들을 역양자화하고, 그 결과를 역변환함으로써) 제 1 인코딩 프레임으로부터 한 세트의 LPC 계수값들을 획득하는 수단, 이 세트의 LPC 계수값들에 따라 합성 필터를 구성하는 수단, 및 구성된 합성 필터에 제 1 여기 신호를 적용하여 제 1 디코딩 프레임을 획득하는 수단을 포함하도록 구현될 수도 있다.
도 8b 는 코딩하는 수단 (FD100) 의 구현형태 (FD102) 의 흐름도를 나타낸다. 이 경우, 제 1 인코딩 프레임의 일부는 또한 한 세트의 이득값들의 표현을 포함한다. 수단 (FD102) 은 이 세트의 이득값들 중 하나를 시간-도메인 피치 펄스 형상의 제 1 카피에 적용하는 수단 (FD130) 을 포함한다. 수단 (FD102) 은 또한, 이 세트의 이득값들 중 상이한 하나를 시간-도메인 피치 펄스 형상의 제 2 카피에 적용하는 수단 (FD140) 을 포함한다. 일 예에서, 수단 (FD130) 은 그 이득값을 수단 (FD110) 내의 형상에 적용하고, 수단 (FD140) 은 그 이득값을 수단 (FD120) 내의 형상에 적용한다. 다른 예에서, 수단 (FD130) 은 그 이득값을 수단 (FD110) 이 제 1 카피를 배열한 여기 신호 버퍼의 일부에 적용하고, 수단 (FD140) 은 그 이득값을 수단 (FD120) 이 제 2 카피를 배열한 여기 신호 버퍼의 일부에 적용한다. 수단 (FD102) 을 포함하는 장치 (MF200) 의 구현형태는, 구성된 합성 필터에 결과적인 이득-조정 여기 신호를 적용하여 제 1 디코딩 프레임을 획득하는 수단을 포함하도록 구성될 수도 있다.
장치 (MF200) 는 또한 제 2 인코딩 프레임의 일부를 디코딩하여 제 2 여기 신호를 획득하는 수단 (FD200) 을 포함하며, 여기서 이 일부는 피치 펄스 형상 차동 및 피치 주기 차동의 표현들을 포함한다. 수단 (FD200) 은 시간-도메인 피치 펄스 형상 및 피치 펄스 형상 차동에 기초하여 제 2 피치 펄스 형상을 계산하는 수단 (FD210) 을 포함한다. 수단 (FD200) 은 또한, 피치 주기 및 피치 주기 차동에 기초하여 제 2 피치 주기를 계산하는 수단 (FD220) 을 포함한다. 수단 (FD200) 은 또한, 피치 펄스 위치 및 제 2 피치 주기에 따라 제 2 여기 신호 내에 제 2 피치 펄스 형상의 2 개 이상의 카피들을 배열하는 수단 (FD230) 을 포함한다. 수단 (FD230) 은 피치 펄스 위치로부터 대응 오프셋으로서 제2 여기 신호 내에 카피들의 각각에 대한 위치를 계산하도록 구성될 수도 있으며, 여기서 각 오프셋은 제 2 피치 주기의 정수배이다. 수단 (FD200) 및/또는 장치 (MF200) 는, 또한 (예컨대, 제 2 인코딩 프레임으로부터의 하나 이상의 양자화된 LSP 벡터들을 역양자화하고, 그 결과를 역변환함으로써) 제 2 인코딩 프레임으로부터 한 세트의 LPC 계수값들을 획득하는 수단, 이 세트의 LPC 계수값들에 따라 합성 필터를 구성하는 수단, 및 구성된 합성 필터에 제 2 여기 신호를 적용하여 제 2 디코딩 프레임을 획득하는 수단을 포함하도록 구현될 수도 있다.
도 9a 는 디지털화된 스피치 신호 (S100) 를 (예컨대, 일련의 프레임들로서) 수신하고, 통신 채널 (C100) (예컨대, 유선 통신, 광통신, 및/또는 무선 통신 링크) 상에서의 스피치 디코더 (AD10) 로의 송신을 위한 대응 인코딩 신호 (S200) 를 (예컨대, 일련의 대응 인코딩 프레임들로서) 생성하도록 배열되는 스피치 인코더 (AE10) 를 나타낸다. 스피치 디코더 (AD10) 는 인코딩된 스피치 신호 (S200) 의 수신된 버전 (S300) 을 디코딩하고 대응 출력 스피치 신호 (S400) 를 합성하도록 배열된다. 스피치 인코더 (AE10) 는 장치 (MF100) 의 인스턴스를 포함하고, 그리고/또는 방법 (M100) 의 구현형태를 수행하도록 구현될 수도 있다. 스피치 디코더 (AD10) 는 장치 (MF200) 의 인스턴스를 포함하고, 그리고/또는 방법 (M200) 의 구현형태를 수행하도록 구현될 수도 있다.
전술한 바와 같이, 스피치 신호 (S100) 는 본 기술분야에 알려진 다양한 방법, 이를테면 펄스 코드 변조 (pulse code modulation; PCM), 압신된 mu-law, 또는 A-law 들 중 어느 하나에 따라 디지털화 및 양자화된 (예컨대, 마이크로폰에 의해 캡처되는 바와 같은) 아날로그 신호를 나타낸다. 신호는 또한, 잡음 억제 동작, 인지 가중 동작, 및/또는 다른 필터링 동작과 같은, 아날로그 및/또는 디지털 도메인에서의 다른 사전 처리 동작들을 거칠 수도 있다. 추가적으로 또는 이와 달리, 이러한 동작들은 스피치 인코더 (AE10) 내에서 수행될 수도 있다. 스피치 신호 (S100) 의 인스턴스는 또한 디지털화 및 양자화된 (예컨대, 마이크로폰들의 어레이에 의해 캡쳐되는 바와 같은) 아날로그 신호들의 조합을 나타낼 수도 있다.
도 9b 는, 디지털화된 스피치 신호 (S100) 의 제 1 인스턴스를 수신하고, 통신 채널 (C100) 의 제 1 인스턴스 (C110) 상에서의 스피치 디코더 (AD10) 의 제 1 인스턴스 (AD10a) 로의 송신을 위해 인코딩 신호 (S200) 의 대응 인스턴스 (S210) 를 생성하도록 배열되는 스피치 인코더 (AE10) 의 제 1 인스턴스 (AE10a) 를 나타낸다. 스피치 디코더 (AD10a) 는 인코딩 스피치 신호 (S210) 의 수신 버전 (S310) 을 디코딩하고, 출력 스피치 신호 (S400) 의 대응 인스턴스 (S410) 를 합성하도록 배열된다.
도 9b 는 또한, 디지털화된 스피치 신호 (S100) 의 제 2 인스턴스 (S120) 를 수신하고, 통신 채널 (C100) 의 제 2 인스턴스 (C120) 상에서의 스피치 디코더 (AD10) 의 제 2 인스턴스 (AD10b) 로의 송신을 위해 인코딩 신호 (S200) 의 대응 인스턴스 (S220) 를 생성하도록 배열되는 스피치 인코더 (AE10) 의 제 2 인스턴스 (AE10b) 를 나타낸다. 스피치 디코더 (AD10b) 는 인코딩된 스피치 신호 (S220) 의 수신 버전 (S320) 을 디코딩하고, 출력 스피치 신호 (S400) 의 대응 인스턴스 (S420) 를 합성하도록 배열된다.
스피치 인코더 (AE10a) 및 스피치 디코더 (AD10b) (유사하게, 스피치 인코더 (AE10b) 및 스피치 디코더 (AD10a)) 는 스피치 신호들을 송신 및 수신하는, 예를 들어 도 14 와 관련하여 후술하는 사용자 단말기들, 지상국들 (ground stations), 또는 게이트웨이들을 포함하는 임의의 통신 디바이스에서 함께 사용될 수도 있다. 본 명세서에 기재된 바와 같이, 스피치 인코더 (AE10) 는 다수의 상이한 방법으로 구현될 수도 있으며, 스피치 인코더들 (AE10a 및 AE10b) 은 스피치 인코더 (AE10) 의 상이한 구현형태들의 인스턴스들일 수도 있다. 마찬가지로, 스피치 디코더 (AD10) 는 다수의 상이한 방법으로 구현될 수도 있으면, 스피치 디코더들 (AD1Oa 및 AD1Ob) 은 스피치 디코더 (AD10) 의 상이한 구현형태들의 인스턴스들일 수도 있다.
도 10a 는 스피치 신호의 제 1 프레임을 제 1 인코딩 프레임으로서 인코딩하도록 구성되는 제 1 프레임 인코더 (100) 및 스피치 신호의 제 2 프레임을 제 2 인코딩 프레임으로서 인코딩하도록 구성되는 제 2 프레임 인코더 (200) 를 포함하는 일반적인 구성에 따라 스피치 신호의 프레임들을 인코딩하는 장치 (A100) 의 블록도를 나타내며, 여기서 제 2 프레임은 제 1 프레임 다음에 온다. 스피치 인코더 (AE10) 는 장치 (A100) 의 인스턴스를 포함하도록 구현될 수도 있다. 제 1 프레임 인코더 (100) 는, (예컨대, 작업 (E110) 의 각종 구현형태들과 관련하여 전술한 바와 같이) 제 1 프레임의 적어도 하나의 피치 펄스로부터의 정보에 기초하여, 한 세트의 시간-도메인 피치 펄스 형상들 중에서 하나를 선택하도록 구성되는 피치 펄스 형상 선택기 (110) 를 포함한다. 인코더 (100) 는 또한, (예컨대, 작업 (E120) 의 각종 구현형태들과 관련하여 전술한 바와 같이) 제 1 프레임의 단말 피치 펄스의 위치를 계산하도록 구성되는 피치 펄스 위치 계산기 (120) 를 포함한다. 인코더 (100) 는 또한, (예컨대, 작업 (E130) 의 각종 구현형태들과 관련하여 전술한 바와 같이) 제 1 프레임의 피치 프레임의 피치 주기를 추정하도록 구성되는 피치 주기 추정기 (130) 를 포함한다. 인코더 (100) 는 인코딩 프레임을 템플릿에 따른 패킷으로서 생성하도록 구성될 수도 있다. 예를 들어, 인코더 (100) 는 본 명세서에 기재된 바와 같이 패킷 생성기 (170 및/또는 570) 의 인스턴스를 포함할 수도 있다. 도 10b 는, (예컨대, 작업 (E140) 의 각종 구현형태들과 관련하여 전술한 바와 같이) 제 1 프레임의 상이한 피치 펄스들에 대응하는 한 세트의 이득값들을 계산하도록 구성되는 이득값 계산기 (140) 도 또한 포함하는 인코더 (100) 의 구현형태 (102) 의 블록도를 나타낸다.
제 2 프레임 인코더 (200) 는, (예컨대, 작업 (E210) 의 각종 구현형태들과 관련하여 전술한 바와 같이) 제 2 프레임의 피치 펄스 형상과 제 1 프레임의 피치 펄스 형상 사이의 피치 펄스 형상 차동을 계산하도록 구성되는 피치 펄스 형상 차동 계산기 (210) 를 포함한다. 인코더 (200) 는 또한, (예컨대, 작업 (E220) 의 각종 구현형태들과 관련하여 전술한 바와 같이) 제 2 프레임의 피치 주기와 제 1 프레임의 피치 주기 사이의 피치 주기 차동을 계산하도록 구성되는 피치 펄스 차동 계산기 (220) 를 포함한다.
도 11a 는 제 1 프레임 디코더 (300) 및 제 2 프레임 디코더 (400) 를 포함하는 일반적인 구성에 따라 스피치 신호의 여기 신호들을 디코딩하는 장치 (A200) 의 블록도를 나타낸다. 디코더 (300) 는 제 1 인코딩 프레임의 일부를 디코딩하여 제 1 여기 신호를 획득하도록 구성되며, 여기서, 이 일부는 시간-도메인 피치 펄스 형상, 피치 펄스 위치, 및 피치 주기의 표현들을 포함한다. 디코더 (300) 는 피치 펄스 위치에 따라 제 1 여기 신호 내에서 시간-도메인 피치 펄스 형상의 제 1 카피를 배열하도록 구성된 제 1 여기 신호 생성기 (310) 를 포함한다. 여기 신호 생성기 (310) 는 또한, 피치 펄스 위치 및 피치 주기에 따라 제 1 여기 신호 내에 시간-도메인 피치 펄스 형상의 제 2 카피를 배열하도록 구성된다. 예를 들어, 생성기 (310) 는 본 명세서에 기재된 바와 같이 작업 (D110 및 D120) 의 구현형태들을 수행하도록 구성될 수도 있다. 이 예에서, 디코더 (300) 는 또한, (예컨대, 제 1 인코딩 프레임으로부터의 하나 이상의 양자화된 LSP 벡터들을 역양자화하고, 그 결과를 역변환함으로써) 제 1 인코딩 프레임으로부터 디코더 (300) 에 의해 획득된 한 세트의 LPC 계수값들에 따라 구성되고, 여기 신호를 필터링하도록 배열되어 제 1 디코딩 프레임을 획득하는 합성 필터 (320) 를 포함한다.
도 11b 는, 제 1 인코딩 프레임의 일부가 또한 한 세트의 이득값들의 표현을 포함하는 경우에 있어서, 제 1 곱셈기 (330) 및 제 2 곱셈기 (340) 를 포함하는 제 1 여기 신호 생성기 (310) 의 구현형태 (312) 의 블록도를 나타낸다. 제 1 곱셈기 (330) 는 이 세트의 이득값들 중 하나를 시간-도메인 피치 펄스 형상의 제 1 카피에 적용하도록 구성된다. 예를 들어, 제 1 곱셈기 (330) 는 본 명세서에 기재된 바와 같이 작업 (D130) 의 구현형태를 수행하도록 구성될 수도 있다. 제 2 곱셈기 (340) 는 이 세트의 이득값들 중 상이한 하나를 시간-도메인 피치 펄스 형상의 제 2 카피에 적용하도록 구성된다. 예를 들어, 제 2 곱셈기 (340) 는 본 명세서에 기재된 바와 같이 작업 (D140) 의 구현형태를 수행하도록 구성될 수도 있다. 생성기 (312) 를 포함하는 디코더 (300) 의 구현형태에서, 합성 필터 (320) 는 결과적인 이득-조정 여기 신호를 필터링하도록 배열되어 제 1 디코딩 프레임을 획득할 수도 있다. 제 1 곱셈기 (330) 및 제 2 곱셈기 (340) 는, 상이한 구조들을 이용하거나 동일한 구조를 상이한 시간에 이용하여 구현될 수도 있다.
제 2 프레임 디코더 (400) 는 제 2 인코딩 프레임의 일부를 디코딩하여 제 2 여기 신호를 획득하도록 구성되며, 여기서 피치 펄스 형상 차동 및 피치 주기 차동의 표현들을 포함한다. 디코더 (400) 는 피치 펄스 형상 계산기 (410) 및 피치 주기 계산기 (420) 를 포함하는 제 2 여기 신호 생성기 (440) 를 포함한다. 피치 펄스 형상 계산기 (410) 는 시간-도메인 피치 펄스 형상 및 피치 펄스 형상 차동에 기초하여 제 2 피치 펄스 형상을 계산하도록 구성된다. 예를 들어, 피치 펄스 형상 계산기 (410) 는, 본 명세서에 기재된 바와 같이 작업 (D210) 의 구현형태를 수행하도록 구성될 수도 있다. 피치 주기 계산기 (420) 는 피치 주기 및 피치 주기 차동에 기초하여 제 2 피치 주기를 계산하도록 구성된다. 예를 들어, 피치 주기 계산기 (420) 는 본 명세서에 기재된 바와 같이 작업 (D220) 의 구현형태를 수행하도록 구성될 수도 있다. 여기 신호 생성기 (440) 는 피치 펄스 위치 및 제 2 피치 주기에 따라 제 2 여기 신호 내에 제 2 피치 펄스 형상의 2 개 이상의 카피들을 배열하도록 구성된다. 예를 들어, 생성기 (440) 는 본 명세서에 기재된 작업 (D230) 의 구현형태를 수행하도록 구성될 수도 있다. 이 예에서, 디코더 (400) 는 또한, (예컨대, 제 1 인코딩 프레임으로부터의 하나 이상의 양자화된 LSP 벡터들을 역양자화하고, 그 결과를 역변환함으로써) 제 1 인코딩 프레임으로부터 디코더 (400) 에 의해 획득된 한 세트의 LPC 계수값들에 따라 구성되고, 제 2 여기 신호를 필터링하도록 배열되어 제 2 디코딩 프레임을 획득하는 합성 필터 (430) 를 포함한다. 합성 필터들 (320, 430) 은 상이한 구조들을 이용하거나 동일한 구조를 상이한 시간에 이용하여 구현될 수도 있다. 스피치 디코더 (AD10) 는 장치 (A200) 의 인스턴스를 포함하도록 구현될 수도 있다.
도 12a 는 스피치 인코더 (AE10) 의 멀티-모드 구현형태 (AE20) 의 블록도를 나타낸다. 인코더 (AE20) 는, 제 1 프레임 인코더 (100) (예컨대, 인코더 (102)) 의 구현형태, 제 2 프레임 인코더 (200) 의 구현형태, 무성음 프레임 인코더 (UE10) (예컨대, QNELP 인코더), 및 코딩 방식 선택기 (C200) 를 포함한다. 코딩 방식 선택기 (C200) 는 (예컨대, 후술하는 바와 같은 수정된 EVRC 프레임 분류 방식에 따라) 스피치 신호 (S100) 의 인커밍 프레임들의 특성들을 분석하여, 선택기들 (50a, 50b) 을 통해 각 프레임에 대해 인코더들 (100, 200), 및 UE10 중 적절한 하나를 선택하도록 구성된다. 제 2 프레임 인코더 (200) 를 구현하는 것 및 무성음 프레임 인코더 (UE10) 를 구현하여 1/4 레이트 NELP (QNELP) 코딩 방식을 적용하는 것이 바람직할 수도 있다. 도 12b 는 제 1 프레임 디코더 (300) 의 구현형태 (예컨대, 디코더 (302)), 제 2 프레임 인코더 (400) 의 구현형태, 무성음 프레임 디코더 (UD10) (예컨대, QNELP 디코더), 및 코딩 방식 탐색기 (C300) 를 포함하는 스피치 인코더 (AD10) 의 아날로그 멀티-모드 구현형태 (AD20) 의 블록도를 나타낸다. 코딩 방식 검출기 (C300) 는 (예컨대, 인코딩 프레임의 하나 이상의 모드 비트, 이를테면 첫 번째 비트 및/또는 마지막 비트에 따라) 수신된 인코딩 스피치 신호 (S300) 의 인코딩 프레임들의 포맷들을 결정하여, 선택기들 (90a, 90b) 을 통해 각 인코딩 프레임을 위해 디코더들 (300, 400), 및 UD10 중 대응하는 적절한 하나를 선택하도록 구성된다.
도 13 은 스피치 인코더 (AE10) 의 구현형태 내에 포함될 수도 있는 잔차 생성기 (R10) 의 블록도를 나타낸다. 생성기 (R10) 는 스피치 신호 (S100) 의 현재의 프레임에 기초하여 한 세트의 LPC 계수값들을 계산하도록 구성되는 LPC 분석 모듈 (R110) 을 포함한다. 변환 블록 (R120) 은 이 세트의 LPC 계수값들을 한 세트의 LSF 들로 변환하도록 구성되며, 양자화기 (quantizer) (R130) 는 LSF 들을 양자화하여 LPC 파라미터들 (SL10) 을 생성하도록 구성된다. 역양자화기 (R140) 는 양자화된 LPC 파라미터들 (SL10) 로부터 한 세트의 디코딩된 LSF 들을 획득하도록 구성되고, 역변환 블록 (R150) 은 이 세트의 디코딩된 LSF 들로부터 한 세트의 역변환된 LPC 계수값들을 획득하도록 구성된다. 이 세트의 디코딩된 LPC 계수값들에 따라 구성되는 백색화 필터 (whitening filter) (R160) (분석 필터로도 지칭됨) 는, 스피치 신호 (S100) 를 처리하여 LPC 잔차 (SR10) 를 생성한다. 잔차 생성기 (R10) 는 또한 특정 애플리케이션에 적합하다고 간주되는 임의의 다른 설계에 따라 LPC 잔차를 생성하도록 구현될 수도 있다. 잔차 생성기 (R10) 의 인스턴스는 프레임 인코더들 (104, 204), 및 UE10 중 어느 하나 이상 내에서 구현될 수도 있고, 그리고/또는 프레임 인코더들 (104, 204), 및 UE10 중 어느 하나 이상 중에서 공유될 수도 있다.
도 14 는 위성 (10), 지상국들 (20a, 20b), 및 사용자 단말기들 (30a, 30b) 을 포함하는 위성 통신용 시스템의 개략적인 다이어그램을 나타낸다. 위성 (10) 은 가능하다면 하나 이상의 다른 위성들을 통해 지상국들 (20a 및 20b) 사이, 사용자 단말기들 (30a 및 30b) 사이, 또는 지상국 및 사용자 단말기 사이에서 반이중 채널 또는 전이중 채널을 거쳐 음성 통신을 중계하도록 구성될 수도 있다. 사용자 단말기들 (30a, 30b) 의 각각은, 모바일 전화기 또는 무선 모뎀이 장착된 휴대형 컴퓨터, 지상 차량 또는 우주선 내에 탑재된 통신 유닛과 같은 무선 위성 통신용의 휴대형 디바이스, 또는 위성 음성 통신용의 다른 디바이스일 수도 있다. 지상국들 (20a, 20b) 의 각각은 음성 통신 채널을, 아날로그 또는 펄스 코드 변조 (PCM) 네트워크 (예컨대, 공중 전화 교환망 (a public switched telephone network 또는 PSTN)) 일 수도 있는 각각의 네트워크 (40a, 40b) 및/또는 데이터 네트워크 (예컨대, 인터넷, 근거리 네트워크 (LAN), 캠퍼스 네트워크 (CAN), 도시권 네트워크 (MAN), 광역 네트워크 (WAN), 링 네트워크 (ring network), 스타 네트워크 (star network), 및/또는 토큰 링 네트워크 (token ring network)) 로 라우팅하도록 구성된다. 지상국들 (20a, 20b) 중 일방 또는 양방은, 음성 통신 신호를 다른 형식 (예컨대, 아날로그, PCM, 더 높은 비트 레이트 코딩 방식, 등) 으로 및/또는 다른 형식으로부터 코드변환하도록 구성된다. 본 명세서에 기재된 방법들 중 하나 이상은 도 14 에 나타낸 디바이스들 (10, 20a, 20b, 30a, 및 30b) 중 임의의 하나 이상에 의해 수행될 수도 있고, 본 명세서에 기재된 장치 중 하나 이상은 이러한 디바이스들 중 임의의 하나 이상에 포함될 수도 있다.
PWI 인코딩 동안 추출된 프로토타입의 길이는 프레임으로부터 프레임으로 변화할 수도 있는 피치 래그의 현재 값과 통상적으로 동일하다. 따라서, 디코더로의 송신을 위해 프로토타입을 양자화하는 것은 차원 (dimension) 이 가변적인 벡터를 양자화한다는 문제점을 나타낸다. 종래의 PWI 및 PPP 코딩 방식에서, 가변-차원 프로토타입 벡터의 양자화는 (예컨대, 이산-시간 푸리에 변환 (discrete-time Fourier transform; DTFT)) 동작을 이용하여) 시간-도메인 벡터를 복소수 값의 주파수-도메인 벡터로 변환함으로써 통상적으로 수행된다. 이러한 동작은 피치 펄스 형상 차동 계산 작업 (E210) 과 관련하여 전술했다. 그 후, 이 복소수 값의 가변-차원 벡터의 진폭은 샘플링되어, 고정된 차원의 벡터를 획득한다. 진폭 벡터의 샘플링은 불균일할 수도 있다. 예를 들어, 고주파수보다는 저주파수에서 더 높은 분해능 (resolution) 으로 벡터를 샘플링하는 것이 바람직할 수도 있다.
온셋 프레임 다음에 오는 유성음 프레임들에 대해 차동 PWI 인코딩을 수행하는 것이 바람직할 수도 있다. 풀-레이트 PPP 코딩 모드에서, 주파수-도메인 벡터의 위상은 진폭과 유사한 방법으로 샘플링되어, 고정-차원 벡터를 획득한다. 그러나, QPPP 코딩 모드에서, 이러한 위상 정보를 디코더로 반송하기 위해 이용가능한 비트는 없다. 이 경우, 피치 래그는 차동적으로 (예컨대, 이전 프레임의 피치 래그에 상대적으로) 인코딩되며, 위상 정보는 또한 하나 이상의 이전 프레임으로부터의 정보에 기초하여 추정되어야 한다. 예를 들어, 천이 프레임 코딩 모드 (예컨대, 작업 (E100)) 가 온셋 프레임을 인코딩하는데 이용되는 경우, 후속하는 프레임에 대한 위상 정보는 피치 래그 및 펄스 위치 정보로부터 도출될 수도 있다.
온셋 프레임들을 인코딩함에 있어서, 프레임 내의 피치 펄스들 모두를 검출하기 위해 예기될 수 있는 절차를 수행하는 것이 바람직할 수도 있다. 예를 들어, 견고한 피치 피크 검출 동작의 이용이 예기되어, 후속하는 프레임들을 위해 더 양호한 래그 추정치 및/또는 위상 참조를 제공할 수도 있다. 후속하는 프레임이 차동 코딩 방식과 같은 상대적 코딩 방식 (예컨대, 작업 (E200)) 을 이용하여 인코딩되는 경우에 있어서, 신뢰할만한 참조값들은, 이러한 방식들은 에러 전파에 통상적으로 영향받기 쉬우므로, 특히 중요할 수도 있다. 전술한 바와 같이, 이 설명에서는 피치 펄스의 위치가 그 피크의 위치에 의해 표시되지만, 다른 문맥에서는 피치 펄스의 위치가 그 첫 번째 또는 마지막 샘플과 같은 펄스의 다른 특징의 위치에 의해 등가적으로 표시될 수도 있다.
도 15a 는 작업들 (L1OO, L200, 및 L300) 을 포함하는 일반적인 구성에 따른 방법 (M300) 의 흐름도를 나타낸다. 작업 (L100) 은 프레임의 단말 피치 피크를 위치확인한다. 특정 구현형태에서, 작업 (L100) 은, (A) 샘플 진폭에 기초한 양 및 (B) 프레임에 대한 양의 평균 사이의 관계에 따라, 샘플을 단말 피치 피크로서 선택하도록 구성된다. 이러한 일 예에서, 양은 샘플 크기 (즉, 절대값) 이고, 이 경우 프레임 평균은
Figure 112011040599508-pct00001
로서 계산될 수도 있으며, 여기서 s 는 샘플값 (즉, N 진폭) 을 나타내고, N 은 프레임에서의 샘플들의 수를 나타내며, i 는 샘플 인덱스이다. 이러한 다른 예에서, 양은 샘플 에너지 (즉, 진폭의 제곱) 이며, 이 경우 프레임 평균은
Figure 112011040599508-pct00002
로서 계산될 수도 있다. 아래의 설명에서, 에너지가 사용된다.
작업 (L100) 은 프레임의 최초 피치 피크로서 또는 프레임의 최종 피치 피크로서 단말 피치 피크를 위치확인하도록 구성될 수도 있다. 최초 피치 피크를 위치확인하기 위해, 작업 (L100) 은 프레임의 첫 번째 샘플에서 시작하도록 구성될 수도 있고, 적절한 시점에 작업을 진행할 수도 있다. 최종 피치 피크를 위치확인하기 위해, 작업 (L100) 은 프레임의 최종 샘플에서 시작하도록 구성될 수도 있고 적절한 시점에 작업을 진행할 수도 있다. 후술하는 특정 예들에서, 작업 (L100) 은 프레임의 최종 피치 피크로서 단말 피치 피크를 위치확인하도록 구성된다.
도 15b 는 하부작업들 (L110, L120, 및 L130) 을 포함하는 작업 (L100) 의 구현형태 (L102) 의 블록도를 나타낸다. 작업 (L110) 은 단말 피치 피크가 되기에 적당한 프레임에서 최종 샘플을 위치확인한다. 이 예에서, 작업 (L110) 은 프레임 평균에 상대적인 그 에너지가 대응 임계값 (TH1) 을 초과하는 (다르게는, 대응 임계값 (TH1) 보다 작지 않은) 최종 샘플을 위치확인한다. 일 예에서, TH1 의 값은 6 이다. 이러한 샘플이 프레임에서 발견되지 않는다면, 방법 (M300) 은 종결되고 다른 코딩 모드 (예컨대, QPPP) 가 프레임으로 사용된다. 그렇지 않다면, 작업 (L120) 은 (도 16a 에 나타낸 바와 같이) 이 샘플 전의 윈도우 내에서 검색하여 가장 큰 진폭을 갖는 샘플을 찾고, 이 샘플을 임시의 피크 후보로서 선택한다. 작업 (L120) 에서의 검색 윈도우는 최소 허용가능 래그 값과 동일한 폭 (WL1) 을 갖는 것이 바람직할 수도 있다. 일 예에서, WL1 의 값은 20 개의 샘플들이다. 검색 윈도우에서는 하나보다 많은 샘플이 가장 큰 진폭을 갖는 경우에 있어서, 작업 (L120) 은 첫 번째의 이러한 샘플, 최종의 이러한 샘플, 또는 임의의 다른 이러한 샘플을 선택하도록 다양하게 구성될 수도 있다.
작업 (L130) 은 (도 16b 에 나타낸 바와 같이) 임시의 피크 후보 전의 윈도우 내에 가장 큰 진폭을 갖는 샘플을 찾음으로써 최종 피치 피크 선택을 검증 (verify) 한다. 작업 (L130) 에서 서치 윈도우는 최초 래그 추정치의 50% 와 100% 사이 또는 50% 와 75% 사이의 폭 (WL2) 을 갖는 것이 바람직할 수도 있다. 최초 래그 추정치는 가장 최근의 (즉, 이전 프레임으로부터의) 래그 추정치와 통상적으로 동일하다. 일 예에서, WL2 의 값은 최초의 래그 추정치의 5/8 과 동일하다. 새로운 샘플의 진폭이 임시의 피크 후보의 진폭보다 더 크다면, 작업 (L130) 은 대신에 최종 피치 피크로서 이 새로운 샘플을 선택한다. 다른 구현형태에서는, 새로운 샘플의 진폭이 임시의 피크 후보의 진폭보다 더 크다면, 작업 (L130) 은 새로운 임시의 피크 후보로서 이 새로운 샘플을 선택하고 이러한 샘플이 발견되지 않을 때까지 새로운 임시의 피크 후보 전에 폭 (WL2) 의 윈도우 내에서 검색을 반복한다.
작업 (L200) 은 프레임에 대한 추정된 래그 값을 계산한다. 작업 (L200) 은 단말 피치 피크에 인접하는 피치 펄스의 피크를 위치확인하고, 래그 추정치를 이들 2 개의 피크들 사이의 거리로서 계산하도록 통상적으로 구성된다. 프레임 경계들 내에서만 검색 및/또는 단말 피치 피크 및 인접하는 피치 피크 사이의 거리를 요청하여, 최소 허용가능 래그 값 (예컨대, 20 개의 샘플들) 보다 더 크도록 (다르게는, 최소 허용가능 래그 값보다 더 적지 않도록) 작업 (L200) 을 구성하는 것이 바람직할 수도 있다.
최초 래그 추정치를 이용하여 인접하는 피크를 발견하도록 작업 (L200) 을 구성하는 것이 바람직할 수도 있다. 그러나, 먼저, 작업 (L200) 이 피치 더블링 에러 (pitch doubling error) (피치 트리플링 에러 (pitch tripling error) 및/또는 피치 쿼드러플링 에러 (pitch quadrupling error) 도 포함할 수 있음) 에 대한 최초 래그 추정치를 검사하는 것이 바람직할 수도 있다. 통상적으로 최초 래그 추정치는 상관-기반의 방법을 이용하여 결정될 것이다. 피치 더블링 에러들은 피치 추정치의 상관 기반의 방법들에 공통적이며, 통상적으로 꽤 청취가능하다. 도 15c 는 작업 (L200) 의 구현형태 (L202) 의 흐름도를 나타낸다. 작업 (L202) 은 피치 더블링 에러들에 대한 최초 래그 추정치를 검사하는, 선택적이지만 추천되는 하부작업 (L210) 을 포함한다. 작업 (L210) 은 단말 피치 피크로부터, 예컨대 1/2, 1/3, 및 1/4 래그의 간격으로, 협소한 윈도우들 내의 피치 피크들을 검색하도록 구성되며, 후술하는 바와 같이 반복될 수도 있다.
도 17a 는 하부작업들 (L212, L214, 및 L216) 을 포함하는 작업 (L210) 의 구현형태 (L210a) 의 흐름도를 나타낸다. 검사될 가장 작은 피치 분수 (예컨대, 래그/4) 에 있어서, 작업 (L212) 은 (예컨대, 절단 에러 (truncation error) 또는 라운딩 에러 (rounding error) 내에서) 피치 분수와 실질적으로 동일한 거리에 의해 그 중심이 단말 피치 피크로부터의 오프셋인 작은 윈도우 (예컨대, 5 개의 샘플들) 내에서 검색하여, (예컨대, 진폭, 크기, 또는 에너지의 관점에서) 최대값을 갖는 샘플을 발견한다. 도 18 의 (a) 는 이러한 동작을 도시하고 있다.
작업 (T214) 은 최대값의 샘플 (즉, "후보") 의 하나 이상의 특징을 추정하고, 이들 값을 각각의 임계값들과 비교한다. 추정된 특징들은 후보의 샘플 에너지, 평균 프레임 에너지 (예컨대, 피크-투-RMS 에너지) 에 대한 후보 에너지의 비율, 및/또는 단말 피크 에너지에 대한 후보 에너지의 비율을 포함할 수도 있다. 작업 (L214) 은 임의의 순서로 이러한 추정들을 수행하도록 구성될 수도 있으며, 추정들이 서로에 대해 직렬 및/또는 병렬로 수행될 수도 있다.
작업 (L214) 이 후보의 부근을 단말 피치 피크의 유사 부근과 상관시키는 것이 바람직할 수도 있다. 이 특징 추정에 있어서, 작업 (L214) 은 후보에서 중심에 위치한 길이 N1 의 샘플들의 세그먼트를 단말 피치 피크에서 중심에 위치한 동일 길이의 세그먼트와 상관시키도록 통상적으로 구성된다. 일 예에서, N1 의 값은 17 개의 샘플들과 동일하다. 작업 (L214) 이 (예컨대, 0 내지 1 의 범위 내에서의 결과를 갖는) 정규화된 상관을 수행하도록 구성되는 것이 바람직할 수도 있다. 작업 (L214) 은, (예를 들어, 타이밍 오프셋 및/또는 샘플링 에러를 설명하기 위해), 예컨대 후보 전 및 후보 후의 하나의 샘플에서 중심에 위치하는 길이 N1 의 세그먼트들에 대한 상관을 반복하고, 가장 큰 상관 결과를 선택하는 것이 바람직할 수도 있다. 상관 윈도우가 프레임 경계를 넘어 연장되는 경우에 있어서, 상관 윈도우를 시프트 또는 절단하는 것이 바람직할 수도 있다. (상관 윈도우가 절단되는 경우에 있어서, 아직 정규화되지 않았다면, 상관 결과를 정규화하는 것이 바람직할 수도 있다.) 일 예에서, 도 19a 의 열 (column) 들에 나타낸 바와 같은 3 개 세트의 조건들 중 어느 하나가 충족된다면, 인접하는 피치 피크로서 후보가 수락되며, 여기서 임계값 (T) 은 6 과 동일할 수도 있다.
작업 (T214) 이 인접하는 피치 피크를 발견한다면, 작업 (L216) 은 현재의 래그 추정치를 단말 피치 피크와 인접하는 피치 피크 사이의 거리로서 계산한다. 그렇지 않다면, 작업 (L210a) 이 (도 18 의 (b) 에 나타낸 바와 같이) 단말 피크의 다른 측 상에서 반복되며, 그 후 (도 18 (c) 내지 (f) 에 나타낸 바와 같이) 인접하는 피치 피크가 발견될 때까지, 작업 (L210a) 은 검사될 다른 피치 분수들에 대한 단말 피크의 2 개의 측들 사이에서 최소로부터 최대로 교번한다. 인접하는 피치 피크가 단말 피치 피크 및 가장 근접한 프레임 경계 사이에서 발견된다면, 단말 피치 피크는 인접하는 피치 피크로서 재라벨링되고, 새로운 피크는 단말 피치 피크로서 라벨링된다. 대안적인 구현형태에서, 작업 (L210) 은 전위측 (leading side) 전의 단말 피치 피크의 후위측 (trailing side) (즉, 작업 (L100) 에서 이미 검색되었던 측) 상에서 검색하도록 구성된다.
분수 래그 테스트 작업 (L210) 이 피치 피크를 위치확인하지 않는다면, 작업 (L220) 은 (예컨대, 최초 래그 추정치에 의해 단말 피치 위치로부터의 오프셋인 윈도우 내에서의) 최초 래그 추정치에 따라 단말 피치 피크에 인접하는 피치 피크를 검색한다. 도 17b 는 하부작업들 (L222, L224, L226, 및 L228) 을 포함하는 작업 (L220) 의 구현형태 (L220a) 의 흐름도를 나타낸다. 작업 (L222) 은 (오픈 서클이 단말 피치 피크를 나타내는 도 19b 에 나타낸 바와 같이) 최종 피크의 좌측으로 일 래그의 거리 주변의 중심에 위치한 폭 (WL3) 의 윈도우 내에서 후보 (예컨대, 진폭 또는 크기의 관점에서 최대값을 갖는 샘플) 를 발견한다. 일 예에서, WL3 의 값은 최초 래그 추정치의 0.55 배와 동일하다. 작업 (L224) 은 후보 샘플의 에너지를 평가한다. 예를 들어, 작업 (L224) 은 후보의 에너지의 측정치 (예컨대, 피크-투-RMS 에너지와 같은 프레임 평균 에너지에 대한 샘플 에너지의 비율) 가 대응 임계치 (TH3) 보다 더 큰지 (다르게는, 임계치 (TH3) 보다 더 작지 않은지) 의 여부를 결정하도록 구성될 수도 있다. TH3 의 예시적인 값들은 1, 1.5, 3, 및 6 을 포함한다.
작업 (L226) 은 후보의 부근을 단말 피치 피크의 유사한 부근과 상관시킨다. 작업 (L226) 은 후보의 중심에 위치하는 길이 N2 의 샘플들의 세그먼트를, 단말 피치 피크의 중심에 위치하는 동일 길이의 세그먼트와 상관시키도록 통상적으로 구성된다. N2 의 값들의 예들은 10, 11, 및 17 개의 샘플들을 포함한다. 정규화된 상관을 수행하도록 작업 (L226) 을 구성하는 것이 바람직할 수도 있다. 예컨대, (예를 들어, 타이밍 오프셋 및/또는 샘플링 에러를 설명하기 위해) 후보 전 및 후보 후의 일 샘플의 중심에 위치한 세그먼트들의 상관을 반복하고 가장 큰 상관 결과를 선택하도록 작업 (L226) 을 구성하는 것이 바람직할 수도 있다. 상관 윈도우가 프레임 경계를 넘어 연장되는 경우에 있어서는, 상관 윈도우를 시프트 또는 절단하는 것이 바람직할 수도 있다. (상관 윈도우가 절단되는 경우에 있어서, 상관 결과가 아직 정규화되지 않았다면 상관 결과를 정규화하는 것이 바람직할 수도 있다.) 작업 (L226) 은 또한 상관 결과가 대응 임계치 (TH4) 보다 더 큰지 (대응 임계치 (TH4) 보다 더 작은지) 의 여부를 결정한다. TH4 의 예시적인 값들은 0.75, 0.65, 및 0.45 를 포함한다. 작업 (L224 및 L226) 의 테스트들은 TH3 및 TH4 에 대한 상이한 세트들의 값들에 따라 조합될 수도 있다. 이러한 일 예에서, 이하 세트들의 값들 중 어느 하나가 포지티브 결과들 (TH3 = 1 및 TH4 = 0.75; TH3 = 1.5 및 TH4 = 0.65; TH3 = 3 및 TH4 = 0.45; TH3 = 6 (이 경우, 작업 (L226) 의 결과는 포지티브로 됨)) 을 생성한다면, L224 및 L226 의 결과는 포지티브이다.
작업들 (L224 및 L226) 의 결과가 포지티브라면, 후보는 인접하는 피치 피크로서 수락되며, 작업 (T228) 은 이 샘플과 단말 피치 피크 사이의 거리로서 현재의 래그 추정치를 계산한다. 작업 (L224 및 L226) 은 서로와 순서대로 및/또는 병행하여 실행할 수도 있다. 작업 (L220) 은 또한 작업 (L224 및 L226) 중 하나만을 포함하도록 구현될 수도 있다. 작업 (L220) 은 (오픈 서클이 단말 피치 피크를 나타내는 도 19c 에 나타낸 바와 같이) 인접하는 피치 피크를 발견하지 않고 완결된다면, 단말 피치 피크의 후위측 상에서 작업 (L220) 을 반복하는 것이 바람직할 수도 있다.
작업 (L210 및 L220) 중 어느 것도 피치 피크를 위치확인하지 않는다면, 작업 (L230) 은 단말 피치 피크의 전위측 상의 피치 피크에 대한 오픈 윈도우 검색을 수행한다. 도 17c 는 하부작업 (L232, L234, L236, 및 L238) 을 포함하는 작업 (L230) 의 구현형태 (L230a) 의 흐름도를 나타낸다. 단말 피치 피크로부터 떨어진 샘플 일정 거리 (D1) 에서 시작하는 경우, 작업 (L232) 은 평균 프레임 에너지에 상대적인 그 에너지가 임계값 (예컨대, TH1) 을 초과하게 (다르게는, 임계값보다 더 작지 않게) 되는 샘플을 발견한다. 도 20a 는 이러한 동작을 도시하고 있다. 일 예에서, D1 의 값은 20 샘플들과 같은 최소 이용가능 래그 값이다. 작업 (L234) 은 (도 20b 에 나타낸 바와 같이) 이 샘플의 폭 (WL4) 의 윈도우 내에서 후보 (예컨대, 진폭 또는 크기의 관점에서 최대값을 갖는 샘플) 를 발견한다. 일 예에서, WL4 의 값은 20 샘플들과 동일하다.
작업 (L236) 은 후보의 부근을 단말 피치 피크의 유사한 부근과 상관시킨다. 작업 (L236) 은 후보의 중심에 위치한 길이 N3 의 샘플들의 세그먼트를 단말 피치 피크의 중심에 위치한 동일 길이의 세그먼트와 상관시키도록 통상적으로 구성된다. 일 예에서, N3 의 값은 11 샘플들과 동일하다. 정규화된 상관을 수행하도록 작업 (L326) 을 구성하는 것이 바람직할 수도 있다. 예컨대, (예를 들어, 타이밍 오프셋 및/또는 샘플링 에러를 설명하기 위해) 후보 전 및 후보 후의 일 샘플의 중심에 위치한 세그먼트들에 대한 상관을 반복하고 가장 큰 상관 결과를 선택하도록 작업 (L326) 을 구성하는 것이 바람직할 수도 있다. 상관 윈도우가 프레임 경계를 넘어 연장하는 경우에 있어서, 상관 윈도우를 시프트 또는 절단하는 것이 바람직할 수도 있다. (상관 윈도우가 절단되는 경우에 있어서, 아직 정규화되지 않았다면 상관 결과를 정규화하는 것이 바람직할 수도 있다.) 작업 (T326) 은 상관 결과가 임계값 (TH5) 을 초과하는지 (다르게는, 임계값보다 더 작지 않은지) 의 여부를 결정한다. 일 예에서, TH5 의 값은 0.45 와 동일하다. 작업 (L236) 의 결과가 포지티브라면 후보는 인접하는 피치 피크로서 수락되고, 작업 (T238) 은 이 샘플 및 단말 피치 피크 사이의 거리로서 현재의 래그 평균을 계산한다. 그렇지 않으면, 작업 (L230a) 은 피치 피크가 발견될 때까지 또는 검색이 철저히 수행될 때까지 (예컨대, 도 20c 에 나타낸 바와 같이 이전 검색 윈도우의 좌측에서 시작하는) 프레임에 걸쳐 반복한다.
래그 추정 작업 (L200) 이 완결된 경우, 작업 (L300) 은 프레임에서의 임의의 다른 피치 펄스들의 위치확인를 실행한다. 작업 (L300) 은 상관값 및 현재의 래그 추정치를 이용하여 더 많은 펄스들을 위치확인하도록 구현될 수도 있다. 예를 들어, 작업 (L300) 은 상관값 및 샘플-투-RMS 에너지값과 같은 기준을 이용하여, 래그 추정치 근방의 협소한 윈도우들 내에서의 최대값의 샘플들을 테스트하도록 구성될 수도 있다. 작업 (L300) 은, 래그 추정 작업 (L200) 과 비교될 때, 특히, 단말 피치 피크에 인접하는 피크가 이미 발견되었다면, 더 작은 서치 윈도우 및/또는 완화된 기준 (예컨대, 더 낮은 임계값들) 을 이용하도록 구성될 수도 있다. 예를 들어, 온셋 프레임 또는 다른 천이 프레임에서, 프레임 내의 일부 펄스들이 더 강하게 상관되지 않을 수도 있도록 펄스 형상이 변경될 수도 있고, 펄스의 진폭이 충분히 더 높고 위치가 정확하기만 하면, (예컨대, 현재의 래그 값에 따라) 두 번째 펄스 후의 펄스들에 대한 상관 기준을 완화하거나 심지어는 무시하는 것이 바람직할 수도 있다. 유효한 펄스를 미싱할 확률을 최소화하는 것이 바람직할 수도 있으며, 특히, 큰 래그 값들에 있어서 프레임의 유성음부가 매우 큰 피크가 아닐 수도 있다. 일 예에서, 방법 (M300) 은 프레임당 최소한 8 개의 피치 펄스들을 허용한다.
작업 (L300) 은 다음의 피치 피크에 대한 2 개 이상의 상이한 후보들을 계산하고 이들 후보 중 하나에 따라 피치 피크를 선택하도록 구성될 수도 있다. 예를 들어, 작업 (L300) 은 샘플값에 기초하여 후보 샘플을 선택하고 상관 결과에 기초하여 후보 거리를 계산하도록 구성될 수도 있다. 도 21 은 하부작업들 (L310, L320, L330, L340, 및 L350) 을 포함하는 작업 (L300) 의 구현형태 (L302) 에 대한 흐름도를 나타낸다. 작업 (L310) 은 후보 검색을 위한 앵커 (anchor) 위치를 초기화한다. 예를 들어, 작업 (L310) 은 가장 최근에 수락된 피치 피크의 위치를 초기 앵커 위치로서 이용하도록 구성될 수도 있다. 작업 (L302) 의 첫 번째 반복시에, 예를 들어 앵커 위치는, 이러한 피크가 작업 (L200) 에 의해 위치확인되거나 아니면 단말 피치 피크의 위치에 의해 위치확인된다면, 단말 피치 피크에 인접하는 피치 피크의 위치일 수도 있다. 작업 (L310) 이 래그 승수 m 을 (예컨대, 1 의 값으로) 초기화하는 것이 바람직할 수도 있다.
작업 (L320) 은 후보 샘플을 선택하고 후보 거리를 계산한다. 작업 (L320) 은, 도 22a 에 나타낸 바와 같이, 크게 구역화된 수평선이 현재의 프레임을 나타내는 윈도우 내에서 이들 후보를 검색하도록 구성될 수도 있으면, 여기서, 좌측의 큰 수직선은 프레임 시작부를 나타내고, 우측의 큰 수직선은 프레임 종료부를 나타내고, 점은 앵커 위치를 나타내고, 음영처리된 박스는 검색 윈도우를 나타낸다. 이 예에서, 윈도우는 앵커 위치로부터의 거리가 현재의 래그 추정치와 래그 승수 m 의 곱인 샘플의 중심에 위치하고, 윈도우는 WS 샘플들을 좌측으로 (즉, 시간에 있어서 역방향으로) 연장되고, (WS-1) 샘플들을 우측으로 (즉, 시간에 있어서 순방향으로) 연장된다.
작업 (L320) 은 윈도우 크기 파라미터 (WS) 를 현재의 래그 추정치의 1/5 의 값으로 초기화하도록 구성될 수도 있다. 윈도우 크기 파라미터 (WS) 가 12 샘플들과 같은 적어도 최소값을 갖는 것이 바람직할 수도 있다. 이와 달리, 단말 피치 피크에 인접하는 피치 피크가 아직 발견되지 않았다면, 작업 (L320) 은 윈도우 크기 파라미터 (WS) 를 가능한 한 큰 값, 이를테면 현재의 래그 추정치의 1/2 로 초기화하는 것이 바람직할 수도 있다.
후보 샘플을 발견하기 위해, 작업 (L320) 은 윈도우를 검색하여 최대값을 갖는 샘플을 발견하고, 이 샘플의 위치 및 값을 레코딩한다. 작업 (L320) 은 검색 윈도우 내에서 그 값이 가장 높은 진폭을 갖는 샘플을 선택하도록 구성될 수도 있다. 이와 달리, 작업 (L320) 은 검색 윈도우 내에서 그 값이 가장 높은 크기 또는 가장 높은 에너지를 갖는 샘플을 선택하도록 구성될 수도 있다.
후보 거리는 앵커 위치와의 상관값이 가장 높은 검색 윈도우 내에서의 샘플에 대응한다. 이 샘플을 발견하기 위해, 작업 (L320) 은 각 샘플의 부근을 앵커 위치의 유사한 부근과 상관시키고, 최대 상관 결과 및 대응 거리를 레코딩한다. 작업 (L320) 은 각각의 테스트 샘플의 중심에 위치한 길이 N4 의 샘플들의 세그먼트들을 앵커 위치의 중심에 위치한 동일 길이의 세그먼트와 상관시키도록 통상적으로 구성된다. 일 예에서, N4 의 값은 11 샘플들이다. 작업 (L320) 이 정규화된 상관을 수행하는 것이 바람직할 수도 있다.
전술한 바와 같이, 작업 (T320) 은 동일한 검색 윈도우를 이용하여 후보 샘플 및 후보 거리를 발견하도록 구성될 수도 있다. 그러나, 작업 (T320) 은 또한 이들 2 개의 동작들을 위해 상이한 검색 윈도우들을 이용하도록 구성될 수도 있다. 도 22b 는 작업 (L320) 이 크기 파라미터 (WS1) 를 갖는 윈도우를 통해 후보 샘플에 대한 검색을 수행하는 예를 나타내고, 도 22c 는 작업 (L320) 의 동일한 인스턴스가 상이한 값의 크기 파라미터 (WS2) 를 갖는 윈도우를 통해 후보 거리에 대한 검색을 수행하는 예를 나타낸다.
작업 (L302) 은 후보 샘플, 및 후보 거리에 대응하는 샘플들 중 하나를 피치 피크로서 선택하는 하부작업 (L330) 을 포함한다. 도 23 은 하부작업들 (L334, L336, 및 L338) 을 포함하는 작업 (L330) 의 구현형태 (L332) 의 흐름도를 나타낸다.
작업 (L334) 은 후보 거리를 테스트한다. 작업 (L334) 은 상관 결과를 임계값과 비교하도록 통상적으로 구성된다. 작업 (L334) 은 대응 샘플의 에너지에 기초한 측정치 (예컨대, 프레임 평균 에너지에 대한 샘플 에너지의 비율) 를 임계값과 비교하는 것이 또한 바람직할 수도 있다. 단지 하나의 피치 펄스만이 식별된 경우, 작업 (L334) 은 후보 거리가 적어도 최소값 (예컨대, 20 샘플들과 같은 최소 허용가능 래그 값) 과 동일함을 검증하도록 구성될 수도 있다. 도 24a 의 표의 열 (column) 들은, 후보 거리에 대응하는 샘플을 피치 피크로서 수락할 것인지의 여부를 결정하기 위해, 작업 (L334) 의 구현형태에 의해 이용될 수도 있는 이러한 파라미터들의 값들에 기초하여 4 개의 상이한 세트들의 테스트 조건들을 나타낸다.
작업 (L334) 이 후보 거리에 대응하는 샘플을 피치 피크로서 수락하는 경우, 그 샘플이 더 높은 진폭 (다르게는, 더 높은 크기) 을 갖는다면, 좌측이든 우측이든 (예를 들어, 일 샘플만큼) 피크 위치를 조정하는 것이 바람직할 수도 있다. 이와 달리 또는 추가적으로, 이러한 경우에는, 작업 (L334) 이 윈도우 크기 파라미터 (WS) 의 값을, 작업 (L300) 의 추가적인 반복들을 위한 더 작은 값 (예컨대, 10 샘플들) 으로 설정 (또는 파라미터들 (WS1 및 WS2) 의 일방 또는 양방을 이러한 값으로 설정) 하는 것이 바람직할 수도 있다. 새로운 피치 피크가 프레임에 대해 확인된 두 번째 것이라면, 작업 (L334) 이 현재의 래그 추정치를 앵커 위치와 피크 위치 사이의 거리로서 계산하는 것이 바람직할 수도 있다.
작업 (L302) 은 후보 샘플을 테스트하는 하부작업 (L336) 을 포함한다. 작업 (L336) 은 샘플 에너지의 측정치 (예컨대, 프레임 평균 에너지에 대한 샘플 에너지의 비율) 가 임계값을 초과하는지 (다르게는, 임계값보다 더 작지 않은지) 의 여부를 결정하도록 구성될 수도 있다. 프레임에 대해 얼마나 많은 피치 피크들이 검증되었는지에 따라 임계값을 변화시키는 것이 바람직할 수도 있다. 예를 들어, 단지 하나의 피치 피크만이 프레임에 대해 확인되었다면, 작업 (L336) 은 더 낮은 임계값 (예컨대, T-3) 을 이용하고, 하나보다 많은 피치 피크가 프레임에 대해 이미 확인되었다면, 더 높은 임계값 (예컨대, T) 을 이용하는 것이 바람직할 수도 있다.
작업 (L336) 이 후보 샘플을 두 번째 확인된 피치 피크로서 선택하는 경우, 작업 (L336) 은 단말 피치 피크와의 상관의 결과들에 기초하여, 좌측이든 우측이든 (예를 들어, 일 샘플만큼) 피크 위치를 조정하는 것이 또한 바람직할 수도 있다. 이러한 경우, 작업 (L336) 은, 각각의 이러한 샘플의 중심에 위치한 길이 N5 의 샘플들의 세그먼트를, 단말 피치 피크의 중심에 위치한 동일 길이의 세그먼트와 상관시키도록 구성될 수도 있다 (일 예에서, N5 의 값은 11 샘프들임). 이와 달리 또는 추가적으로, 이러한 경우, 작업 (L336) 은, 작업 (L300) 의 추가적인 반복들을 위해 윈도우 크기 파라미터 (WS) 의 값을 더 작은 값 (예컨대, 10 샘플들) 들로 설정 (또는 파라미터들 (WSl 및 WS2) 의 일방 또는 양방을 이러한 값으로 설정) 하는 것이 바람직할 수도 있다.
프레임에 대해 테스트 작업들 (L334 및 L336) 의 양방이 확인되는데 실패하고 단지 하나의 피치 피크만이 확인된 경우, 작업 (L302) 은 (작업 (L350) 을 통해) 래그 추정치 승수 m 의 값을 증분하고, m 의 새로운 값에서 작업 (L320) 을 반복하여 새로운 후보 샘플 및 새로운 후보 거리를 선택하고, 새로운 후보들에 대해 작업 (L332) 을 반복하도록 구성될 수도 있다.
도 23 에 나타낸 바와 같이, 작업 (L336) 은 후보 거리 테스트 작업 (L334) 의 실패시에 실행되도록 배열될 수도 있다. 작업 (T332) 의 다른 구현형태에서, 후보 거리 테스트 작업 (L334) 은 단지 작업 (L336) 의 실패시에만 실행되도록, 후보 샘플 테스트 작업 (L336) 이 제일 먼저 실행되게 배열될 수도 있다.
작업 (L332) 은 또한 하부작업 (L338) 을 포함한다. 테스트 작업들 (L334 및 L336) 의 양방 모두가 실패되고 하나보다 많은 피치 피크가 프레임에 대해 이미 확인된 경우, 작업 (L338) 은 현재의 래그 추정치를 갖는 후보들의 일방 또는 양방의 일치 (agreement) 를 테스트한다.
도 24b 는 작업 (L338) 의 구현형태 (L338a) 에 대한 흐름도를 나타낸다. 작업 (338a) 은 후보 거리를 테스트하는 하부작업 (L362) 을 포함한다. 후보 거리와 현재의 래그 추정치 사이의 절대적인 차이가 임계값보다 더 작다면 (다르게는, 임계값보다 더 크지 않다면), 작업 (L362) 은 후보 거리를 수락한다. 일 예에서, 임계값은 3 개의 샘플들이다. 작업 (L362) 은 상관 결과 및/또는 대응 샘플의 에너지가 수용할만하게 높음을 검증하는 것이 바람직할 수도 있다. 이러한 일 예에서는, 상관 결과가 0.35 보다 더 작지 않고 프레임 평균 에너지에 대한 샘플 에너지의 비율이 0.5 보다 더 작지 않으면, 작업 (L362) 은 임계값보다 더 작은 (다르게는, 임계값보다 더 크지 않은) 후보 거리를 수락한다. 작업 (L362) 이 후보 거리를 수락하는 경우, 그 샘플이 더 높은 진폭 (다르게는, 더 높은 크기) 을 갖는다면, 작업 (L362) 은 좌측이든 우측이든 (예를 들어, 일 샘플만큼) 피크 위치를 조정하는 것이 또한 바람직할 수도 있다.
작업 (L338a) 은 후보 샘플의 래그 일치를 테스트하는 하부작업 (L364) 을 또한 포함한다. (A) 후보 샘플과 가장 근접한 피치 피크 사이의 거리 및 (B) 현재의 래그 추정치 사이의 절대값 차이가 임계값보다 더 작다면 (다르게는, 임계값보다 더 크다면), 작업 (L364) 은 후보 샘플을 수락한다. 일 예에서, 임계값은 2 개의 샘플과 같은 낮은 값이다. 작업 (L364) 은 후보 샘플의 에너지가 수용할만하게 높음을 검증하는 것이 또한 바람직할 수도 있다. 이러한 일 예에서, 래그 일치 테스트를 거치고 프레임 평균 에너지에 대한 샘플 에너지의 비율이 (T-5) 보다 더 작지 않다면, 작업 (L364) 은 후보 샘플을 수락한다.
도 24b 에 나타낸 작업 (L338a) 의 구현형태는 또한, 작업 (L364) 의 낮은 임계값보다 더 루즈한 (looser) 구역에 대해 후보 샘플의 래그 일치를 테스트하는 다른 하부작업 (L366) 을 포함한다. (A) 후보 샘플 및 가장 근접한 확인된 피크 사이의 거리 및 (B) 현재의 래그 추정치 사이의 절대값 차이가 임계값보다 더 작다면 (다르게는, 임계값보다 더 크지 않다면), 작업 (L366) 은 후보 샘플을 수락한다. 일 예에서, 임계값은 (0.175 * lag) 이다. 후보 샘플의 에너지가 수용할만하게 높음을 작업 (L366) 이 검증하는 것이 또한 바람직할 수도 있다. 이러한 일 예에서, 프레임 평균 에너지에 대한 샘플 에너지의 비율이 (T-3) 보다 더 작지 않다면, 작업 (L366) 은 후보 샘플을 수락한다.
후보 샘플과 후보 거리 양방 모두가 모든 테스트에서 실패한다면, 작업 (T302) 은 (작업 (T350) 을 통해) 래그 추정치 승수 m 을 증분하고, m 의 새로운 값에서 작업 (L320) 을 반복하여 새로운 후보 샘플 및 새로운 후보 거리를 선택하고, 프레임 경계에 도달할 때까지 새로운 후보들에 대해 작업 (L332) 을 반복하도록 구성될 수도 있다. 일단 새로운 피치 피크가 확인되었다면, 프레임 경계에 도달할 때까지 동일 방향으로 다른 피크를 검색하는 것이 바람직할 수도 있다. 이 경우, 작업 (L340) 은 앵커 위치를 새로운 피치 피크로 이동시키고, 래그 추정치 승수 m 의 값을 1 로 재설정한다. 프레임 경계에 도달하는 경우, 앵커 위치를 단말 피치 피크로 초기화하고, 작업 (L300) 을 반대 방향으로 반복하는 것이 바람직할 수도 있다.
일 프레임으로부터 그 다음 프레임까지의 래그 추정치에 있어서의 큰 감소는, 피치 오버플로 (overflow) 에러를 나타낼 수도 있다. 이러한 에러는, 현재의 프레임에 대한 래그 값이 최대 허용가능 래그 값을 초과하도록 피치 주파수에 있어서의 하락에 의해 야기된다. 방법 (M300) 은, (예컨대, 새로운 래그 추정치가 계산될 때, 또는 본 방법의 종료시에) 이전의 래그 추정치와 현재의 래그 추정치 사이의 절대값 차이 또는 상대값 차이를 임계값과 비교하고, 에러가 검출되는 경우 프레임의 가장 큰 피치 피크만을 유지하는 것이 바람직할 수도 있다. 일 예에서, 임계값은 이전의 래그 추정치의 50% 와 동일하다.
큰 크기의 제곱의 비율을 갖는 2 개의 펄스들을 갖는 과도형으로 분류되는 프레임들 (예컨대, 통상적으로 워드 (word) 의 말단을 향해 갈수록 큰 피치 변화를 갖는 프레임들) 에 있어서는, 더욱 작은 피크를 피치 피크로서 수락하기 전, 작은 윈도우만을 통하기보다는 현재의 전체 래그 추정치를 통해 상관시키는 것이 바람직할 수도 있다. 이러한 경우는, 작은 윈도우를 통해 주요 피크와 양호하게 상관시킬 수도 있는 2 차 피크를 통상적으로 갖는 남성의 음성에 의해 일어날 수도 있다. 양 작업들 (L200 및 L300) 중 일방이 이러한 동작을 포함하도록 구현될 수도 있다.
방법 (M300) 의 래그 추정 작업 (L200) 은 방법 (M100) 의 래그 추정 작업 (E130) 과 동일한 작업일 수도 있음을 특히 유의한다. 방법 (M300) 의 단말 피치 피크 위치 작업 (L100) 은 방법 (M100) 의 단말 피치 피크 위치 계산 작업 (E120) 과 동일한 작업일 수도 있음을 특히 유의한다. 양 방법들 (MlOO 및 M300) 이 실행되는 애플리케이션의 경우, 피치 펄스 형상 선택 작업 (E110) 을 배열하여 방법 (M300) 의 종결시에 실행하는 것이 바람직할 수도 있다.
도 27a 는 스피치 신호의 프레임의 피치 피크들을 검출하도록 구성되는 장치 (MF300) 의 블록도를 나타낸다. 장치 (MF300) 는 (예컨대, 작업 (L100) 의 각종 구현형태들을 참조하여 전술한 바와 같이) 프레임의 단말 피치 피크를 위치확인하는 수단 (ML1OO) 을 포함한다. 장치 (MF300) 는 (예컨대, 작업 (L200) 의 각종 구현형태를 참조하여 전술한 바와 같이) 프레임의 피치 래그를 추정하는 수단 (ML200) 을 포함한다. 장치 (MF300) 는 (예컨대, 작업 (L300) 의 각종 구현형태를 참조하여 전술한 바와 같이) 프레임의 추가적인 피치 피크들을 위치확인하는 수단 (ML300) 을 포함한다.
도 27b 는 스피치 신호의 프레임의 피치 피크들을 검출하도록 구성되는 장치 (A300) 의 블록도를 나타낸다. 장치 (A300) 는 (예컨대, 작업 (L100) 의 각종 구현형태를 참조하여 전술한 바와 같이) 프레임의 단말 피치 피크를 위치확인하도록 구성되는 단말 피치 피크 위치확인기 (A310) 를 포함한다. 장치 (A300) 는 (예컨대, 작업 (L200) 의 각종 구현형태를 참조하여 전술한 바와 같이) 프레임의 피치 래그를 추정하도록 구성되는 피치 래그 추정기 (A320) 를 포함한다. 장치 (A300) 는 (예컨대, 작업 (L300) 의 각종 구현형태를 참조하여 전술한 바와 같이) 프레임의 추가적인 피치 피크들을 위치확인하도록 구성되는 추가적인 피치 피크 위치확인기 (A330) 를 포함한다.
도 27c 는 스피치 신호의 프레임의 피치 피크들을 검출하도록 구성되는 장치 (MF350) 의 블록도를 나타낸다. 장치 (MF350) 는 (예컨대, 작업 (L100) 의 각종 구현형태를 참조하여 전술한 바와 같이) 프레임의 피치 피크를 검출하는 수단 (ML150) 을 포함한다. 장치 (MF350) 는 (예컨대, 작업 (L320 및 L320b) 의 각종 구현형태를 참조하여 전술한 바와 같이) 후보 샘플을 선택하는 수단 (ML250) 을 포함한다. 장치 (MF350) 는 (예컨대, 작업 (L320 및 L320a) 의 각종 구현형태를 참조하여 전술한 바와 같이) 후보 거리를 선택하는 수단 (ML260) 을 포함한다. 장치 (MF350) 는 (예컨대, 작업 (L330) 의 각종 구현형태를 참조하여 전술한 바와 같이) 후보 샘플 및 후보 거리에 대응하는 샘플 중 하나를 프레임의 피치 피크로서 선택하는 수단 (ML350) 을 포함한다.
도 27d 는 스피치 신호의 프레임의 피치 피크들을 검출하도록 구성되는 장치 (A350) 의 블록도를 나타낸다. 장치 (A350) 는 (예컨대, 작업 (L100) 의 각종 구현형태를 참조하여 전술한 바와 같이) 프레임의 피치 피크를 검출하도록 구성되는 피크 검출기 (150) 를 포함한다. 장치 (A350) 는 (예컨대, 작업 (L320 및 L320b) 의 각종 구현형태를 참조하여 전술한 바와 같이) 후보 샘플을 선택하도록 구성되는 샘플 선택기 (250) 를 포함한다. 장치 (A350) 은 (예컨대, 작업 (L320 및 L320a) 의 각종 구현형태를 참조하여 전술한 바와 같이) 후보 거리를 선택하도록 구성되는 거리 선택기 (260) 를 포함한다. 장치 (350A) 는 (예컨대, 작업 (L330) 의 각종 구현형태를 참조하여 전술한 바와 같이) 후보 샘플 및 후보 거리에 대응하는 샘플 중 하나를 프레임의 피치 피크로서 선택하도록 구성되는 피크 선택기 (350) 를 포함한다.
스피치 인코더 (AE10), 작업 (E100), 제 1 프레임 인코더 (100), 및/또는 수단 (FE100) 을 구현하여, 프레임의 단말 피치 펄스의 위치를 고유하게 나타내는 인코딩된 프레임을 생성하는 것이 바람직할 수도 있다. 래그 값과 조합된 단말 피치 펄스의 위치는, 이러한 시간-동조 정보가 부족할 수도 있는 이하의 프레임 (예컨대, QPPP 와 같은 코딩 방식을 이용하여 인코딩된 프레임) 을 디코딩하는 중요한 위상 정보를 제공한다. 이러한 위치 정보를 전송하는데 필요한 피트들의 수를 최소화하는 것이 바람직할 수도 있다. 160-비트 (일반적으로, N 비트) 프레임에서 고유한 위치를 표현하기 위해 8 개의 비트들 (일반적으로,
Figure 112011040599508-pct00003
비트들) 이 통상적으로 필요하지만, 본 명세서에 설명된 바와 같은 방법은 단지 7 개의 비트들 (일반적으로,
Figure 112011040599508-pct00004
비트들) 에서만 단말 피치 펄스의 위치를 인코딩하는데 이용될 수도 있다. 이 방법은 피치 펄스 위치 모드 값으로서의 이용을 위해 7 비트 값들 중 하나 (예를 들어, 127 (일반적으로,
Figure 112011040599508-pct00005
)) 를 예약한다. 이 설명에서, 용어 "모드 값" 은 파라미터의 실제 값 대신에 동작 모드의 변경을 나타내는데 채용되는 파라미터 (예컨대, 피치 펄스 위치 또는 추정된 피치 주기) 의 확률값을 나타낸다.
단말 피치 펄스의 위치가 최종 샘플 (즉, 프레임의 최후 경계) 에 상대적으로 주어지는 상황에 있어서, 프레임은 이하의 3 가지 경우들 중 하나에 정합할 것이다:
경우 1: 프레임의 최종 샘플에 상대적인 단말 피치 펄스의 위치는
Figure 112011040599508-pct00006
보다 더 작고 (예컨대, 도 29a 에 나타낸 바와 같은 160-비트 프레임에 있어서는 127 보다 작음), 프레임은 하나보다 많은 피치 펄스를 포함한다. 이 경우, 단말 피치 펄스의 위치는
Figure 112011040599508-pct00007
비트들 (7 비트들) 로 인코딩되며, 피치 래그 또한 (예컨대, 7 비트들로) 송신된다.
경우 2: 프레임의 최종 샘플에 상대적인 단말 피치 펄스의 위치는
Figure 112011040599508-pct00008
보다 더 작고 (예컨대, 도 29a 에 나타낸 바와 같은 160-비트 프레임에 있어서는, 127 보다 작음), 프레임은 단지 하나의 피치 펄스만을 포함한다. 이 경우, 단말 피치 펄스의 위치는
Figure 112011040599508-pct00009
비트들 (예컨대, 7 비트들) 로 인코딩되며, 피치 래그는 래그 모드 값 (이 예에서는,
Figure 112011040599508-pct00010
(예컨대, 127)) 으로 설정된다.
경우 3: 프레임의 최종 샘플에 상대적인 단말 피치 펄스의 위치는
Figure 112011040599508-pct00011
보다 더 크다면 (예컨대, 도 29b 에 나타낸 바와 같은 160-비트 프레임에 있어서는, 126 보다 더 크다면), 프레임은 하나보다 많은 피치 펄스를 포함하지 않을 것이다. 160-비트 프레임과 8 kHz 의 샘플링 레이트에 있어서, 이것은 대략 프레임의 첫 번째 20 % 에서는 적어도 250 Hz 의 피치에서의 활동을 수반하면서, 프레임의 잔차에서는 피치 펄스들을 갖지 않음을 암시할 것이다. 이러한 프레임은 온셋 프레임으로서는 분류되지 않을 것이다. 이 경우에는, 실제 펄스 위치 대신에, 피치 펄스 위치 모드 값 (예컨대, 전술한 바와 같이
Figure 112011040599508-pct00012
또는 127) 이 송신되고, 래그 비트들은 프레임의 첫 번째 샘플 (즉, 프레임의 초기 경계) 에 대한 단말 피치 펄스의 위치를 반송하는데 이용된다. 대응 디코더는 인코딩 프레임의 위치 비트들이 피치 펄스 위치 모드 값 (예컨대,
Figure 112011040599508-pct00013
의 펄스 위치) 을 나타내는지의 여부를 테스트하도록 구성될 수도 있다. 만일 그렇다면, 디코더는 대신에 인코딩 프레임의 래그 비트들로부터 프레임의 첫 번째 샘플에 대한 단말 피치 펄스의 위치를 획득할 수도 있다.
160-비트 프레임에 적용되는 바와 같은 경우 3 에서는, 33 개의 이러한 위치들이 가능하다 (즉, 0 내지 32). 위치들 중 하나를 다른 위치로 라운딩함으로써 (예컨대, 위치 (159) 를 위치 (158) 로 라운딩함으로써 또는 위치 (127) 를 위치 (128) 로 라운딩함으로써), 실제 위치는 5 비트들만으로 송신될 수도 있고, 다른 정보를 반송하기 위해 인코딩된 프레임의 7 개의 래그 비트들 중 2 개를 남겨둘 수 있다. 하나 이상의 피치 펄스 위치들을 다른 피치 펄스 위치들로 라운딩하는 이러한 방식은 또한, (예컨대, 인접하는 위치들의 각 쌍을 인코딩하기 위한 단일 위치로 라운딩함으로써) 임의의 다른 길이의 프레임들에 대해 이용되어, 인코딩될 고유한 피치 펄스 위치들의 총 수를 가능한 한 1/2 또는 그 이상만큼 감소시킬 수도 있다.
도 28 은 상기 3 가지 경우들에 따라 동작하는 일반적인 구성에 의한 방법 (M500) 의 흐름도를 나타낸다. 방법 (M500) 은 r 비트들을 이용한 q 비트 프레임에서 단말 피치 펄스의 위치를 인코딩하도록 구성되며, 여기서 r 은 log2 q 미만이다. 전술한 바와 같은 일 예에서, q 는 160 과 동일하며, r 은 7 과 동일하다. 방법 (M500) 은 스피치 인코더 (AE10) 의 구현형태 내에서 (예를 들어, 작업 (E100) 의 구현형태, 제 1 프레임 인코더 (100) 의 구현형태, 및/또는 수단 (FE100) 의 구현형태 내에서) 수행될 수도 있다. 이러한 방법은 일반적으로 1 보다 더 큰 r 의 임의의 정수값이 요청될 수도 있다. 스피치 애플리케이션들에 있어서는, r 은 통상적으로 (65 로부터 1023 까지의 q 의 값들에 대응하는) 6 으로부터 9 까지의 범위에서의 값을 갖는다.
방법 (M500) 은 작업 (T510, T520, 및 T530) 을 포함한다. 작업 (T510) 은 (프레임의 최후 샘플에 상대적인) 단말 피치 펄스 위치가 (2r - 2) 보다 더 큰지 (예컨대, 126 보다 더 큰지) 의 여부를 판정한다. 결과가 참 (true) 이라면, 프레임은 상기 경우 3 에 정합한다. 이 경우, 작업 (T520) 은 (예컨대, 인코딩된 프레임을 반송하는 패킷의) 단말 피치 펄스 위치 비트들을 피치 펄스 위치 모드 값 (예컨대, 전술한 바와 같이 2r - 1 또는 127) 으로 설정하고, 프레임의 첫 번째 샘플에 상대적인 단말 피치 펄스의 위치와 동일한 (예컨대, 패킷의) 래그 비트들을 설정한다.
작업 (T510) 의 결과가 거짓 (false) 이라면, 작업 (T530) 은 프레임이 단지 하나의 피치 펄스만을 포함하는지의 여부를 판정한다. 작업 (T530) 의 결과가 참이라면, 프레임은 상기 경우 2 에 정합하고, 래그 값을 송신할 필요가 없게 된다. 이 경우, 작업 (T540) 은 (예컨대, 패킷의) 래그 비트들을 래그 모드 값 (예컨대, 2r - 1) 으로 설정한다.
작업 (T530) 이 거짓이라면, 프레임은 하나보다 많은 피치 펄스를 포함하고 프레임의 종료부에 상대적인 단말 피치 펄스의 위치는 (2r - 2) 보다 더 크지 않다 (예컨대, 126 보다 더 크지 않다). 이러한 프레임은 상기 경우 1 에 정합하며, 작업 (T550) 은 r 비트들에서의 위치를 인코딩하고 래그 값을 래그 비트들로 인코딩한다.
단말 피치 펄스의 위치가 첫 번째 샘플에 상대적으로 주어지는 상황 (즉, 최초의 경계) 에 있어서, 프레임은 이하의 3 가지 경우들 중 하나와 정합할 것이다:
경우 1: 프레임의 첫 번째 샘플에 상대적인 단말 피치 펄스의 위치는
Figure 112011040599508-pct00014
보다 더 크고 (예컨대, 도 29c 에 나타낸 바와 같은 160-비트 프레임에 있어서는 32 보다 더 크고), 프레임은 하나보다 더 많은 피치 펄스를 포함한다. 이 경우, 단말 피치 펄스의 위치 마이너스
Figure 112011040599508-pct00015
Figure 112011040599508-pct00016
비트들 (예컨대, 7 비트들) 로 인코딩되고, 피치 래그도 또한 (예컨대, 7 비트들로) 송신된다.
경우 2: 프레임의 첫 번째 샘플에 상대적인 단말 피치 펄스의 위치는
Figure 112011040599508-pct00017
보다 더 크고 (도 29c 에 나타낸 바와 같은 160-비트에 있어서는 32 보다 더 크고), 프레임은 단지 하나의 피치 펄스만을 포함한다. 이 경우, 단말 피치 펄스 마이너스
Figure 112011040599508-pct00018
의 위치는
Figure 112011040599508-pct00019
비트들 (예컨대 7 비트들) 로 인코딩되며, 피치 래그는 래그 모드 값 (이 예에서,
Figure 112011040599508-pct00020
(예컨대, 127)) 으로 설정된다.
경우 3: 단말 피치 펄스의 위치가
Figure 112011040599508-pct00021
보다 더 크지 않다면 (예컨대, 도 29d 에 나타낸 바와 같은 160-비트 프레임에 있어서는, 32 보다 크지 않다면), 프레임은 하나보다 많은 피치 펄스를 포함하지는 않을 것이다. 160-비트 프레임 및 8 kHz 의 샘플링에 있어서, 이것은 대략 프레임의 처음 20 % 에서는 적어도 250 Hz 의 피치에서 활성화를 수반하면서, 프레임의 잔차에서는 피치 펄스들을 갖지 않을 것이다. 이러한 프레임은 온셋 프레임으로서 분류되지 않을 것이다. 이 경우, 실제 펄스 위치 대신에 피치 펄스 위치 모드 값 (예컨대,
Figure 112011040599508-pct00022
또는 127) 이 송신되며, 래그 비트들은 프레임의 첫 번째 샘플 (즉, 초기 경계) 에 대한 단말 피치 펄스의 위치를 송신하는데 이용된다. 대응 디코더는 인코딩된 프레임의 위치 비트들이 피치 펄스 위치 모드 값 (예컨대,
Figure 112011040599508-pct00023
의 펄스 위치) 을 나타내는지의 여부를 테스트하도록 구성될 수도 있다. 만일 그러하다면, 대신에 디코더는 인코딩된 프레임의 래그 비트들로부터 프레임의 첫 번째 샘플에 대한 단말 피치 펄스의 위치를 획득할 수도 있다.
160-비트 프레임에 적용되는 바와 같은 경우 3 에서는, 33 개의 이러한 위치들이 가능하다 (0 내지 32). 위치들 중 하나를 다른 위치로 라운딩함으로써 (예컨대, 위치 0 을 위치 1 로 라운딩하거나 또는 위치 32 를 위치 31 로 라운딩함으로써), 실제 위치가 단지 5 비트들만으로 송신되고, 인코딩된 프레임의 7 개의 래그 비트들 중 2 개를 남겨두어 다른 정보를 반송할 수도 있다. 펄스 위치들 중 하나 이상을 다른 펄스 위치들로 라운딩하는 이러한 방식은 또한, (예컨대, 인접한 위치들의 각 쌍을 인코딩하기 위한 단일 위치로 라운딩함으로써) 임의의 다른 길이의 프레임들을 위해 이용되어, 인코딩될 고유한 위치들의 총 수를 가능한 한 1/2 또는 그 이상만큼 감소시킬 수도 있다. 본 기술분야의 당업자는, 단말 피치 펄스의 위치가 첫 번째 샘플에 상대적으로 주어지는 상황을 위해 방법 (M500) 이 변형될 수도 있음을 인식할 것이다.
도 30a 는 작업들 (E310 및 E320) 을 포함하는 일반적인 구성에 따라 스피치 신호 프레임 (M400) 을 처리하는 방법의 흐름도를 나타낸다. 방법 (M400) 은 스피치 인코더 (AE10) 의 구현형태 내에서 (예를 들어 작업 (E100) 의 구현형태, 제 1 프레임 인코더 (100) 의 구현형태, 및/또는 수단 (FE100) 의 구현형태 내에서) 수행될 수도 있다. 작업 (E310) 은 제 1 스피치 신호 프레임 내에서의 위치 ("제 1 위치") 를 계산한다. 제 1 위치는 프레임의 최후 샘플에 대한 (다르게는, 프레임의 첫 번째 샘플에 대한) 프레임의 단말 피치 펄스의 위치이다. 작업 (E310) 은 본 명세서에 기재된 바와 같은 펄스 위치 계산 작업 (E120 또는 L100) 의 인스턴스로서 구현될 수도 있다. 작업 (E320) 은 제 1 스피치 신호 프레임을 반송하고 제 1 위치를 포함하는 제 1 패킷을 생성한다.
방법 (M400) 은 또한 작업들 (E330 및 E340) 을 포함한다. 작업 (E330) 은 제 2 스피치 신호 프레임 ("제 2 위치") 내에서의 위치를 계산한다. 제 2 위치는 (A) 프레임의 첫 번째 샘플 및 (B) 프레임의 최종 샘플 중 하나에 대한 프레임의 단말 피치 펄스의 위치이다. 작업 (E330) 은 본 명세서에 기재된 바와 같이 펄스 위치 계산 작업 (E120) 의 인스턴스로서 구현될 수도 있다. 작업 (E340) 은 제 2 스피치 신호 프레임을 반송하는 제 2 패킷을 생성하고 프레임 내에서의 제3 위치를 포함한다. 제 3 위치는 프레임의 첫 번째 샘플 및 프레임의 최종 샘플 중 다른 하나에 대한 단말 피치 펄스의 위치이다. 환언하면, 작업 (T330) 이 최종 샘플에 대한 제 2 위치를 계산한다면, 제 3 위치는 첫 번째 샘플에 대한 것이거나 그 반대의 경우이다.
특정한 일 예에서, 제 1 위치는 프레임의 최종 샘플에 대한 제 1 스피치 신호 프레임의 최종 피치 펄스의 위치이며, 제 2 프레임은 프레임의 최종 샘플에 대한 제 2 스피치 신호 프레임의 최종 피치 펄스의 위치이며, 제 3 위치는 프레임의 첫 번째 샘플에 대한 제 2 스피치 신호 프레임의 최종 피치 펄스의 위치이다.
방법 (M400) 에 의해 처리되는 스피치 신호 프레임들은 통상적으로 LPC 잔차 신호의 프레임들이다. 제 1 스피치 신호 프레임 및 제 2 스피치 신호 프레임은 동일한 음성 통신 세션으로부터 발생될 수도 있고, 또는 상이한 음성 통신 세션으로부터 발생될 수도 있다. 예를 들어, 제 1 스피치 신호 프레임 및 제 2 스피치 신호 프레임은 한 사람에 의해 스피킹되는 스피치 신호로부터 발생될 수도 있고, 또는 상이한 사람에 의해 각각 스피킹되는 2 가지의 상이한 스피치 신호들로부터 발생될 수도 있다. 스피치 신호 프레임들은, 피치 펄스 위치들이 계산되기 전 및/또는 후, 다른 처리 동작들 (예컨대, 인지 가중) 을 거칠 수도 있다.
제 1 패킷 및 제 2 패킷의 양방 모두는 정보의 상이한 항목들에 대한 패킷 내에서의 대응 위치들을 나타내는 패킷 기재 (패킷 템플릿으로도 지칭됨) 에 따르는 것이 바람직할 수도 있다. (예컨대, 작업들 (E320 및 E340) 에 의해 수행되는 바와 같은) 패킷을 생성하는 동작은 이러한 템플릿에 따라 정보의 상이한 항목들을 버퍼에 기록하는 것을 포함할 수도 있다. 이러한 템플릿에 따른 패킷을 생성하는 것은 (예컨대, 패킷에 의해 반송되는 값들을 패킷 내에서의 값들의 위치들에 따른 대응 파라미터들과 연관시킴으로써) 패킷의 디코딩을 용이하게 하는데 바람직할 수도 있다.
패킷 템플릿의 길이는 인코딩된 프레임의 길이 (예컨대, 1/4 레이트 코딩 방식을 위한 40 비트들) 와 동일할 수도 있다. 이러한 일 예에서, 피킷 템플릿은 LSP 값들 및 인코딩 모드를 나타내는데 이용되는 17 개의 비트들의 영역, 단말 피치 펄스의 위치를 나타내는데 이용되는 7 개의 비트들의 영역, 추정 (estimating) 된 피치 주기를 나타내는데 이용되는 7 개의 비트들의 영역, 펄스 형상을 나타내는데 이용되는 7 개의 비트들의 영역, 및 이득 프로파일을 나타내는데 이용되는 2 개의 비트들의 영역을 포함한다. 다른 예들은 LSP 값들에 대한 영역은 더 작고 이에 상응하는 이득 프로파일에 대한 영역은 더 큰 템플릿들을 포함한다. 이와 달리, 패킷 템플릿은 (예컨대, 패킷은 하나의 인코딩된 프레임보다 더 많이 반송하는 경우에) 인코딩된 프레임보다 더 길 수도 있다. 패킷 생성 동작, 또는 이러한 동작을 수행하도록 구성되는 패킷 생성기는 또한 (예컨대, 일부 프레임 정보가 다른 프레임 정보보다 덜 자주 인코딩되는 경우에) 상이한 길이들의 패킷들을 생성하도록 구성될 수도 있다.
일반적인 일 예에서, 방법 (M400) 은 제 1 세트의 비트 위치 및 제 2 세트의 비트 위치를 포함하는 패킷 템플릿을 이용하도록 구현된다. 이러한 경우, 작업 (E320) 은 제 1 위치가 제 1 세트의 비트 위치들을 차지하기 위해 제 1 패킷을 생성하도록 구성될 수도 있고, 작업 (E340) 은 제 3 위치는 제 2 세트의 비트 위치들을 차지하기 위해 제 2 패킷을 생성하도록 구성될 수도 있다. 제 1 세트의 비트 위치 및 제 2 세트의 비트 위치는 분리되어 있는 것 (즉, 양방의 세트들에는 패킷의 비트가 존재하지 않도록 하는 것) 이 바람직할 수 있다. 도 31a 는 분리되어 있는 제 1 세트의 비트 위치 및 제 2 세트의 비트 위치를 포함하는 패킷 템플릿 (PT10) 의 일 예를 나타낸다. 이 예에서는, 제 1 세트 및 제 2 세트의 각각은 연속되는 일련의 비트 위치들이다. 그러나, 일반적으로 일 세트 내에서의 비트 위치들은 서로 인접할 필요는 없다. 도 31b 는 분리되어 있는 제 1 세트의 비트 위치 및 제 2 세트의 비트 위치를 포함하는 다른 패킷 템플릿 (PT20) 의 예를 나타낸다. 이 예에서, 제 1 세트는 하나 이상의 다른 비트 위치만큼 서로 독립되어 있는 2 개의 일련의 비트 위치들을 포함한다. 패킷 템플릿에서의 2 개의 분리된 세트들의 비트 위치들은, 예를 들어 도 31c 에 도시된 바와 같이, 적어도 부분적으로라도 번갈아 끼워져 있을 수도 있다.
도 30b 는 방법 (M400) 의 구현형태 (M410) 의 흐름도를 나타낸다. 방법 (M410) 은 제 1 위치를 임계값과 비교하는 작업 (E350) 을 포함한다. 작업 (E350) 은, 제 1 위치가 임계값보다 더 작은 경우의 제 1 상태를 갖고 제 1 위치가 임계값보다 더 큰 경우의 제 2 상태를 갖는 결과를 생성한다. 이러한 경우, 작업 (E320) 은 제 1 상태를 갖는 작업 (E350) 의 결과에 응답하여 제 1 패킷을 생성하도록 구성될 수도 있다.
일 예에서, 작업 (E350) 의 결과는, 제 1 위치가 임계값보다 더 작은 경우의 제 1 상태를 갖고 그렇지 않은 경우 (즉, 제 1 위치가 임계값보다 더 작지 않은 경우) 의 제 2 상태를 갖는다. 다른 예에서, 작업 (E350) 의 결과는 제 1 위치가 임계값보다 더 크지 않은 경우의 제 1 상태를 갖고 그렇지 않은 경우 (즉, 제 1 위치가 임계값보다 더 큰 경우) 의 제 2 상태를 갖는다. 작업 (E350) 은 본 명세서에 기재된 바와 같은 작업 (T510) 의 인스턴스로서 구현될 수도 있다.
도 30c 는 방법 (M410) 의 구현형태 (M420) 의 흐름도를 나타낸다. 방법 (M420) 은 제 2 위치를 임계값과 비교하는 작업 (E360) 을 포함한다. 작업 (E360) 은 제 2 위치가 임계값보다 더 작은 경우의 제 1 상태를 갖고 제 2 위치가 임계값보다 더 큰 경우의 제 2 상태를 갖는 결과를 생성한다. 이러한 경우, 작업 (E340) 은 제 2 상태를 갖는 작업 (E360) 의 결과에 대응하여 제 2 패킷을 생성하도록 구성될 수도 있다.
일 예에서, 작업 (E360) 의 결과는 제 2 위치가 임계값보다 더 작은 경우의 제 1 상태를 갖고 그렇지 않은 경우 (즉, 제 2 위치가 임계값보다 더 작지 않은 경우) 의 제 2 상태를 갖는다. 다른 예에서, 작업 (E360) 의 결과는 제 2 위치가 임계값보다 더 크지 않은 경우의 제 1 상태를 가지며, 그렇지 않은 경우 (즉, 제 2 위치가 임계값보다 더 큰 경우) 의 제 2 상태를 갖는다. 작업 (E360) 은 본 명세서에 기재된 바와 같은 작업 (T510) 의 인스턴스로서 구현될 수도 있다.
방법 (M400) 은 제 2 위치에 기초하여 제 3 위치를 획득하도록 통상적으로 구성된다. 예를 들어, 방법 (M400) 은, 프레임 길이로부터 제 2 위치를 차감하여 그 결과를 감쇠시킴으로써, 또는 프레임 길이보다 더 작은 값인 값으로부터 제 2 위치를 차감함으로써, 또는 제 2 위치와 프레임 길이에 기초하여 다른 동작을 수행함으로써, 제 3 위치를 계산하는 작업을 포함할 수도 있다. 그러나, 그렇지 않으면, 방법 (M400) 은 (예컨대, 작업 (E120) 을 참조하여) 본 명세서에 기재된 피치 펄스 위치 계산 동작들 중 어느 하나에 따라 제 3 위치를 획득하도록 구성될 수도 있다.
도 32a 는 방법 (M400) 의 구현형태 (M430) 의 흐름도를 나타낸다. 방법 (M430) 은 프레임의 피치 주기를 추정하는 작업 (E370) 을 포함한다. 작업 (E370) 은 본 명세서에 기재된 바와 같은 피치 주기 추정 작업 (E130 또는 L200) 의 인스턴스로서 구현될 수도 있다. 이 경우, 패킷 생성 작업 (E320) 은, 추정되는 피치 주기를 나타내는 인코딩된 피치 주기값을 제 1 패킷이 포함하도록 구현된다. 예를 들어, 작업 (E320) 은, 인코딩된 피치 주기값이 패킷의 제 2 세트의 비트 위치들를 차지하도록 구성될 수도 있다. 방법 (M430) 은, (예컨대, 작업 (E370) 내에서) 추정되는 피치 주기를 최소 피치 주기값 (예컨대, 20) 에 상대적인 오프셋으로서 나타내도록, 인코딩된 피치 주기값을 계산하도록 구성될 수도 있다. 예를 들어, 방법 (M430) (예컨대, 작업 (E370)) 은, 추정되는 피치 주기로부터 최소 피치 주기값을 차감함으로써, 인코딩된 피치 주기값을 계산하도록 구성될 수도 있다.
도 32b 는 본 명세서에 기재된 바와 같은 비교 작업 (E350) 도 또한 포함하는 방법 (M430) 의 구현형태 (M440) 의 흐름도를 나타낸다. 도 32c 는 본 명세서에 기재된 바와 같은 비교 작업 (E360) 도 또한 포함하는 방법 (M440) 의 구현형태 (M450) 의 흐름도를 나타낸다.
도 33a 는 스피치 신호 프레임들을 처리하도록 구성되는 장치 (MF400) 의 블록도를 나타낸다. 장치 (MF100) 는, (예컨대, 작업 (E310, E120, 및/또는 L1OO) 의 각종 구현형태들을 참조하여 전술한 바와 같이) 제 1 위치 (FE310) 를 계산하는 수단, 및 (예컨대, 작업 (E320) 의 각종 구현형태들을 참조하여 전술한 바와 같이) 제 1 패킷 (FE320) 을 생성하는 수단을 포함한다. 장치 (MF100) 는, (예컨대, 작업 (E330, E120, 및/또는 L1OO) 의 각종 구현형태들을 참조하여 전술한 바와 같이) 제 2 위치 (FE330) 를 계산하는 수단, 및 (예컨대, 작업 (E340) 의 각종 구현형태들을 참조하여 전술한 바와 같이) 제 2 패킷 (FE340) 을 생성하는 수단을 포함한다. 장치 (MF400) 는 또한 (예컨대, 방법 (M400) 을 참조하여 전술한 바와 같이) 제 3 위치를 계산하는 수단을 포함할 수도 있다.
도 33b 는 (예컨대, 작업 (E350) 의 각종 구현형태들을 참조하여 전술한 바와 같이) 제 1 위치를 임계값과 비교하는 수단 (FE350) 도 또한 포함하는 장치 (MF400) 의 구현형태 (MF410) 의 블록도를 나타낸다. 도 33c 는 (예컨대, 작업 (E360) 의 각종 구현형태들을 참조하여 전술한 바와 같이) 제 2 위치를 임계값과 비교하는 수단 (FE360) 도 또한 포함하는 장치 (MF410) 의 구현형태 (MF420) 의 블록도를 나타낸다.
도 34a 는 장치 (MF400) 의 구현형태 (MF430) 의 블록도를 나타낸다. 장치 (MF430) 는 (예컨대, 작업 (E370, E130, 및 L200) 의 각종 구현형태들을 참조하여 전술한 바와 같이) 제 1 프레임의 피치 주기를 추정하는 수단 (FE370) 을 포함한다. 도 34b 는 수단 (FE370) 을 포함하는 장치 (MF430) 의 구현형태 (MF440) 의 블록도를 나타낸다. 도 34c 는 수단 (FE360) 을 포함하는 장치 (MF440) 의 구현형태 (MF450) 의 블록도를 나타낸다.
도 35a 는 피치 펄스 위치 계산기 (160) 및 패킷 생성기 (170) 를 포함하는 일반적인 구성에 따라 스피치 신호 프레임들을 처리하는 장치 (예컨대, 프레임 인코더) (A400) 의 블록도를 나타낸다. 피치 펄스 위치 계산기 (160) 는, (예컨대, 작업 (E310, E120, 및/또는 L1OO) 을 참조하여 전술한 바와 같이) 제 1 스피치 신호 프레임 내에서의 제 1 위치를 계산하고, (예컨대, 작업 (E330, E120, 및/또는 L1OO) 을 참조하여 전술한 바와 같이) 제 2 스피치 신호 프레임 내에서의 제 2 위치를 계산하도록 구성된다. 예를 들어, 피치 펄스 위치 계산기 (160) 는 본 명세서에 기재된 바와 같이 피치 펄스 위치 계산기 (120) 또는 단말 피치 위치확인기 (A310) 의 인스턴스로서 구현될 수도 있다. 패킷 생성기 (170) 는 (예컨대, 작업 (E320) 을 참조하여 전술한 바와 같이) 제 1 스피치 신호 프레임을 나타내고 제 1 위치를 포함하는 제 1 패킷을 생성하고, (예컨대, 작업 (E340) 을 참조하여 전술한 바와 같이) 제 2 스피치 신호 프레임을 나타내고 제 2 스피치 신호 프레임 내에서의 제 3 위치를 포함하는 제 2 패킷을 생성하도록 구성된다.
패킷 생성기 (170) 는 인코딩 모드, 펄스 형상, 하나 이상의 LSP 벡터, 및/또는 이득 프로파일과 같은, 인코딩된 프레임의 다른 파라미터 값들을 나타내는 정보를 포함하는 패킷을 생성하도록 구성될 수도 있다. 패킷 생성기 (170) 는 장치 (A400) 의 다른 엘리먼트들로부터의 정보 및/또는 장치 (A400) 를 포함하는 디바이스의 다른 엘리먼트들로부터의 정보를 수신하도록 구성될 수도 있다. 예를 들어, 장치 (A400) 는 (예컨대, 스피치 신호 프레임들을 생성하기 위해) LPC 분석을 수행하거나 또는 잔차 생성기 (RG10) 의 인스턴스와 같은 다른 엘리먼트로부터 LPC 분석 파라미터들 (예컨대, 하나 이상의 LSP 벡터들) 을 수신하도록 구성될 수도 있다.
도 35b 는 비교기 (180) 를 또한 포함하는 장치 (A400) 의 구현형태 (A402) 의 블록도를 나타낸다. 비교기 (180) 는, (예컨대, 작업 (E350) 의 각종 구현형태들을 참조하여 전술한 바와 같이) 제 1 위치를 임계값과 비교하여, 제 1 위치가 임계값보다 더 작은 경우의 제 1 상태 및 제 1 위치가 임계값보다 더 큰 경우의 제 2 상태를 갖는 제 1 출력을 생성하도록 구성된다. 이 경우, 패킷 생성기 (170) 는 제 1 상태를 갖는 제 1 출력에 응답하여 제 1 패킷을 생성하도록 구성될 수도 있다.
비교기 (180) 는, (예컨대, 작업 (E360) 의 각종 구현형태들을 참조하여 전술한 바와 같이) 제 2 위치를 임계값과 비교하여, 제 2 위치가 임계값보다 더 작은 경우의 제 1 상태 및 제 2 위치가 임계값보다 더 큰 경우의 제 2 상태를 갖는 제 2 출력을 생성하도록 구성된다. 이 경우, 패킷 생성기 (170) 는 제 2 상태를 갖는 제 2 출력에 응답하여 제 2 패킷을 생성하도록 구성될 수도 있다.
도 35c 는, (예컨대, 작업 (E370, E130, 및/또는 L200) 을 참조하여 전술한 바와 같이) 제 1 스피치 신호 프레임의 피치 주기를 추정하도록 구성되는 피치 주기 추정기 (190) 를 포함하는 장치 (A400) 의 구현형태 (A404) 의 블록도를 나타낸다. 예를 들어, 피치 주기 추정기 (190) 는 본 명세서에 기재된 바와 같이 피치 주기 추정기 (130) 또는 피치 래그 추정기 (A320) 의 인스턴스로서 구현될 수도 있다. 이 경우, 패킷 생성기 (170) 는, 추정되는 피치 주기를 나타내는 일 세트의 비트들이 제 2 세트의 비트 위치들을 차지하게 하기 위해 제 1 패킷을 생성하도록 구성된다. 도 35d 는 피치 주기 추정기 (190) 를 포함하는 장치 (A402) 의 구현형태 (A406) 의 블록도를 나타낸다.
스피치 인코더 (AE10) 는 장치 (A400) 를 포함하도록 구현될 수도 있다. 예를 들어, 스피치 인코더 (AE20) 의 제 1 프레임 인코더 (104) 는, 피치 펄스 위치 계산기 (120) 가 또한, (가능한 한 피치 주기 추정기 (130) 는 추정기 (190) 로서도 또한 기능하게 하면서) 계산기 (160) 로서도 또한 기능하게 하는 장치 (A400) 의 인스턴스를 포함하도록 구성될 수도 있다.
도 36a 는, 일반적인 구성에 따라, 인코딩된 프레임 (예컨대, 패킷) (M550) 을 디코딩하는 방법의 흐름도를 나타낸다. 방법 (M550) 은 작업들 (D305, D310, D320, D330, D340, D350, 및 D360) 을 포함한다. 작업 (D305) 은 인코딩된 프레임으로부터 값들 (P 및 L) 을 추출한다. 인코딩된 프레임이 본 명세서 기재된 바와 같은 패킷 템플릿을 따르는 경우에는, 작업 (D305) 은 인코딩된 프레임의 제 1 세트의 비트 위치들로부터 P 를 추출하고, 인코딩된 프레임의 제 2 세트의 비트 위치들로부터 L 을 추출하도록 구성될 수도 있다. 작업 (D310) 은 P 를 피치 위치 모드 값과 비교한다. P 가 피치 위치 모드 값과 동일하다면, 작업 (D320) 은 디코딩된 프레임의 첫 번째 샘플 및 최종 샘플 중에서 하나에 상대적인 펄스 위치를 L 로부터 획득한다. 작업 (D320) 은 또한, 하나의 값을 프레임에서의 펄스들의 수 N 으로 할당한다. P 가 피치 위치 모드 값과 동일하지 않다면, 작업 (D330) 은 디코딩된 프레임의 첫 번째 샘플 및 최종 샘플 중 다른 하나에 상대적인 펄스 위치를 P 로부터 획득한다. 작업 (D340) 은 L 을 피치 주기 모드 값과 비교한다. L 이 피치 주기 모드 값과 동일하다면, 작업 (D350) 은 하나의 값을 프레임에서의 펄스들의 수 N 으로 할당한다. 그렇지 않으면, 작업 (D360) 은 L 로부터 피치 주기 값을 획득한다. 일 예에서, 작업 (D360) 은, L 에 최소 피치 주기 값을 가산함으로써, 피치 주기 값을 계산하도록 구성된다. 본 명세서에 기재된 바와 같은 프레임 디코더 (300) 또는 수단 (FD100) 이 방법 (M550) 을 수행하도록 구성될 수도 있다.
도 37 은 작업들 (D410, D420, 및 D430) 을 포함하는 일반적인 구성에 따라 패킷을 디코딩하는 방법 (M560) 의 흐름도를 나타낸다. 작업 (D410) 은 (예컨대, 방법 (M400) 의 구현형태에 의해 생성되는 바와 같이) 제 1 패킷으로부터 제 1 값을 추출한다. 제 1 패킷이 본 명세서에 기재된 바와 같은 템플릿에 따르는 경우, 작업 (D410) 은 패킷의 제 1 세트의 비트 위치들들로부터 제 1 값을 추출하도록 구성될 수도 있다. 작업 (D420) 은 제 1 값을 피치 펄스 위치 모드 값과 비교한다. 작업 (D420) 은 제 1 값이 피치 펄스 위치 모드 값과 동일한 경우의 제 1 상태, 및 그렇지 않은 경우의 제 2 상태를 갖는 결과를 생성하도록 구성될 수도 있다. 작업 (D430) 은 제 1 값에 따라 제 1 여기 신호 내에 피치 펄스를 배열한다. 작업 (D430) 은 본 명세서에 기재된 바와 같은 작업 (D110) 의 인스턴스로서 구현될 수도 있으며, 제 2 상태를 갖는 작업 (D420) 의 결과에 응답하여 실행하도록 구성될 수도 있다. 작업 (D430) 은, 첫 번째 샘플 및 최종 샘플 중에서 하나에 상대적인 그 피크의 위치가 제 1 값과 일치하게 하기 위해, 제 1 여기 신호 내에 피치 펄스를 배열하도록 구성될 수도 있다.
방법 (M560) 은 또한 작업 (D440, D450, D460, 및 D470) 을 포함한다. 작업 (D440) 은 제 2 패킷으로부터 제 2 값을 추출한다. 제 2 패킷이 본 명세서에 기재된 바와 같은 템플릿에 따르는 경우, 작업 (D440) 은 패킷의 제 1 세트의 비트 위치들로부터 제 2 값을 추출하도록 구성될 수도 있다. 작업 (D470) 은 패킷이 본 명세서에 기재된 바와 같은 템플릿에 따르는 경우, 작업 (D470) 은 패킷의 제 2 세트의 비트 위치들로부터 제 3 값을 추출하도록 구성될 수도 있다. 작업 (D450) 은 제 2 값을 피치 펄스 위치 모드 값과 비교한다. 작업 (D450) 은 제 2 값이 피치 펄스 위치 모드 값과 동일한 경우의 제 1 상태, 및 그렇지 않은 경우의 제 2 상태를 갖는 결과를 생성하도록 구성될 수도 있다. 작업 (D460) 은 제 3 값에 따라 제 2 여기 신호 내에 피치 펄스를 배열한다. 작업 (D460) 은 본 명세서에 기재된 바와 같은 작업 (D110) 의 다른 인스턴스로서 구현될 수도 있으며, 제 1 상태를 갖는 작업 (D450) 의 결과에 응답하여 실행하도록 구성될 수도 있다.
작업 (D460) 은, 첫 번째 샘플 및 최종 샘플 중에서 다른 하나에 상대적인 그 피크의 위치가 제 3 값과 일치하게 하기 위해, 제 2 여기 신호 내에 피치 펄스를 배열하도록 구성될 수도 있다. 예를 들어, 작업 (D430) 이 제 1 여기 신호의 최종 샘플에 상대적인 그 피크의 위치가 제 1 값과 일치하게 하기 위해 제 1 여기 신호 내에 피치 펄스를 배열한다면, 작업 (D460) 은 제 2 여기 신호의 첫 번째 샘플에 상대적인 그 피크의 위치가 제 3 값과 일치하게 하기 위해 제 2 여기 신호 내에 피치 펄스를 배열하도록 구성될 수도 있고, 그 반대의 경우일 수도 있다. 본 명세서에 기재된 바와 같은 프레임 디코더 (300) 또는 수단 (FD100) 이 방법 (M560) 을 수행하도록 구성될 수도 있다.
도 38 은 작업들 (D480 및 D490) 을 포함하는 방법 (M560) 의 구현형태 (M570) 의 흐름도를 나타낸다. 작업 (D480) 은 제 1 패킷으로부터 제 4 값을 추출한다. 제 1 패킷이 본 명세서에 기재된 바와 같은 템플릿에 따르는 경우, 작업 (D48) 은 패킷의 제 2 세트의 비트 위치들로부터 제 4 값 (예컨대, 인코딩된 피치 주기 값) 을 추출하도록 구성될 수도 있다. 제 4 값에 기초하여, 작업 (D490) 은 제 1 여기 신호 내에 다른 피치 펄스 ("제 2 피치 펄스") 를 배열한다. 작업 (D490) 은 또한, 제 1 값에 기초하여 제 1 여기 신호 내에 제 2 피치 펄스를 배열하도록 구성될 수도 있다. 예를 들어, 작업 (D490) 은 제 1 배열 피치 펄스에 상대적인 제 1 여기 신호 내에 제 2 피치 펄스를 배열하도록 구성될 수도 있다. 작업 (D490) 은 본 명세서에 기재된 바와 같은 작업 (D120) 의 인스턴스로서 구현될 수도 있다.
작업 (D490) 은 2 개의 피치 피크들 사이의 거리가 제 4 값에 기초한 피치 주기 값과 동일하게 하기 위해 제 2 피치 피크를 배열하도록 구성될 수도 있다. 이러한 경우, 작업 (D480) 또는 작업 (D49O) 은 피치 주기 값을 계산하도록 구성될 수도 있다. 예를 들어, 작업 (D480) 또는 작업 (D490) 은 최소 피치 주기 값을 제 4 값에 가산함으로써 피치 주기 값을 계산하도록 구성될 수도 있다.
도 39 는 패킷들을 디코딩하는 장치 (MF560) 의 블록도를 나타낸다. 장치 (MF560) 는 (예컨대, 작업 (D410) 의 각종 구현형태들을 참조하여 전술한 바와 같이) 제 1 패킷으로부터 제 1 값을 추출하는 수단 (FD410), (예컨대, 작업 (D420) 의 각종 구현형태들을 참조하여 전술한 바와 같이) 제 1 값을 피치 펄스 위치 모드 값과 비교하는 수단 (FD420), 및 (예컨대, 작업 (D430) 의 각종 구현형태들을 참조하여 전술한 바와 같이) 제 1 값에 따라 제 1 여기 신호 내에 피치 펄스를 배열하는 수단 (FD430) 을 포함한다. 수단 (FD430) 은 본 명세서에 기재된 바와 같은 수단 (FD110) 의 인스턴스로서 구현될 수도 있다. 장치 (MF560) 는 또한, (예컨대, 작업 (D440) 의 각종 구현형태들을 참조하여 전술한 바와 같이) 제 2 패킷으로부터 제 2 값을 추출하는 수단 (FD440), (예컨대, 작업 (D470) 의 각종 구현형태들을 참조하여 전술한 바와 같이) 제 2 패킷으로부터 제 3 값을 추출하는 수단 (FD470), (예컨대, 작업 (D450) 의 각종 구현형태들을 참조하여 전술한 바와 같이) 제 2 값을 피치 펄스 위치 모드 값과 비교하는 수단 (FD450), 및 (예컨대, 작업 (D460) 의 각종 구현형태들을 참조하여 전술한 바와 같이) 제 3 값에 따라 제 2 여기 신호 내에 피치 펄스를 배열하는 수단 (FD460) 을 포함한다. 수단 (FD460) 은 수단 (FD110) 의 다른 인스턴스로서 구현될 수도 있다.
도 40 은 장치 (MF560) 의 구현형태 (MF570) 의 블록도를 나타낸다. 장치 (MF570) 는 (예컨대, 작업 (D480) 의 각종 구현형태를 참조하여 전술한 바와 같이) 제 1 패킷으로부터 제 4 값을 추출하는 수단 (FD480), 및 (예컨대, 작업 (D490) 의 각종 구현형태들을 참조하여 전술한 바와 같이) 제 4 값에 기초하여 제 1 여기 신호 내에 다른 피치 펄스를 배열하는 수단 (FD490) 을 포함한다. 수단 (FD490) 은 본 명세서 기재된 바와 같은 수단 (FD120) 의 인스턴스로서 구현될 수도 있다.
도 36b 는 패킷들을 디코딩하는 장치 (A560) 의 블록도를 나타낸다. 장치 (A560) 는 (예컨대, 작업 (D410) 의 각종 구현형태를 참조하여 전술한 바와 같이) 제 1 패킷으로부터 제 1 값을 추출하도록 구성되는 패킷 파서 (packet parser) (510), (예컨대, 작업 (D420) 의 각종 구현형태를 참조하여 전술한 바와 같이) 제 1 값을 피치 펄스 위치 모드 값과 비교하도록 구성되는 비교기 (520), 및 (예컨대, 작업 (D430) 의 각종 구현형태를 참조하여 전술한 바와 같이) 제 1 값에 따라 제 1 여기 신호 내에 피치 펄스를 배열하도록 구성되는 여기 신호 생성기 (530) 를 포함한다. 패킷 파서 (510) 는 또한 (예컨대, 작업 (D440) 의 각종 구현형태를 참조하여 전술한 바와 같이) 제 2 패킷으로부터 제 2 값을 추출하고, (예컨대, 작업 (D470) 의 각종 구현형태를 참조하여 전술한 바와 같이) 제 2 패킷으로부터 제 3 값을 추출하도록 구성된다. 비교기 (520) 는 또한 (예컨대, 작업 (D450) 의 각종 구현형태를 참조하여 전술한 바와 같이) 제 2 값을 피치 펄스 위치 모드 값과 비교하도록 구성된다. 여기 신호 생성기 (530) 는 또한 (예컨대, 작업 (D460) 의 각종 구현형태를 참조하여 전술한 바와 같이) 제 3 값에 따라 제 2 여기 신호 내에 피치 펄스를 배열하도록 구성된다. 여기 신호 생성기 (530) 는 본 명세서에 기재된 바와 같은 제 1 여기 신호 생성기 (310) 의 인스턴스로서 구현될 수도 있다.
장치 (A560) 의 다른 구현형태에서, 패킷 파서 (510) 는 또한 (예컨대, 작업 (D480) 의 각종 구현형태를 참조하여 전술한 바와 같이) 제 1 패킷으로부터 제 4 값을 추출하도록 구성되고, 여기 신호 생성기 (530) 는 또한 (예컨대, 작업 (D490) 의 각종 구현형태를 참조하여 전술한 바와 같이) 제 4 값에 기초하여 제 1 여기 신호 내에 다른 피치 펄스를 배열하도록 구성된다.
스피치 디코더 (AD10) 는 장치 (A560) 를 포함하도록 구현될 수도 있다. 예를 들어, 스피치 디코더 (AD20) 의 제 1 프레임 디코더 (304) 는, 제 1 여기 신호 생성기 (310) 가 또한 여기 신호 생성기 (530) 로서도 기능하도록, 장치 (A560) 의 인스턴스를 포함하게 구현될 수도 있다.
1/4 레이트는 프레임당 40 개의 비트들을 허용한다. 인코딩 작업 (E100), 인코더 (100), 또는 수단 (FE100) 의 구현형태에 의해 적용되는 바와 같은 천이 프레임 코딩 포맷 (예컨대, 패킷 템플릿) 의 일 예에서, 17 개의 비트들의 영역은 LSP 값들 및 코딩 모드를 나타내는데 이용되고, 7 개의 비트들의 영역은 단말 피치 펄스의 위치를 나타내는데 이용되고, 7 개의 비트들의 영역은 래그를 나타내는데 이용되고, 7 개의 비트들의 영역은 펄스 형상을 나타내는데 이용되고, 2 개의 비트의 영역은 이득 프로파일을 나타내는데 이용된다. 다른 예들은 LSP 값들에 대한 영역이 더 작고 이에 상응하여 이득 프로파일에 대한 영역이 더 큰 포맷들을 포함한다.
대응 디코더 (예컨대, 디코더 (300 또는 560), 또는 수단 (FDlOO 또는 MF560) 의 구현형태, 또는 디코딩 방법 (M550 또는 M560) 이나 디코딩 작업 (D100) 의 구현형태를 수행하는 디바이스) 는, 표시된 펄스 형상 벡터를 단말 피치 펄스 위치 및 래그 값에 의해 나타내는 위치들의 각각에 카피하고, 이득 VQ 테이블 출력에 따라 결과적인 신호를 스케일링함으로써, 펄스 형상 VQ 테이블 출력으로부터 여기 신호를 구축하도록 구성될 수도 있다. 표시된 펄스 형상 벡터가 래그 값보다 더 긴 경우, 인접한 펄스들 사이의 임의의 오버랩은, 오버랩된 값의 각 쌍을 평균화함으로써, 각 쌍 중 하나의 값 (예컨대, 가장 높거나 가장 낮은 값, 또는 좌측이나 우측 상의 펄스에 속하는 값) 을 선택함으로써, 또는 래그 값을 넘는 샘플들을 단순히 폐기함으로써, 핸들링될 수도 있다. 유사하게, (예컨대, 피치 펄스 피크 위치 및/또는 래그 추정치에 따라) 여기 신호의 첫 번째 피치 펄스 또는 최종 피치 펄스를 배열하는 경우, 프레임 경계 외측에 속하는 임의의 샘플들은 인접한 프레임의 대응 샘플들과 평균화되거나 또는 단순히 폐기될 수도 있다.
여기 신호의 피치 펄스들은 단순하게 임펄스들 또는 스파이크들인 것은 아니다. 오히려, 피치 펄스는 화자-종속형인 시간을 통한 진폭 프로파일 또는 형상을 통상적으로 가지며, 이 형상을 유지하는 것은 화자 인식을 위해 중요할 수도 있다. 후속하는 유성음 프레임들에 대한 참조 (예컨대, 프로토타입) 로서 기능하는 피치 펄스 형상의 양호한 표현을 인코딩하는 것이 바람직할 수도 있다.
피치 펄스들의 형상들은 화자 식별 및 인식을 위해 지각적으로 중요한 정보를 제공한다. 이 정보를 디코더에게 제공하기 위해, (예컨대, 작업 (E100), 인코더 (100), 또는 수단 (FE100) 의 구현형태에 의해 수행되는 바와 같은) 천이 프레임 코딩 방식은 인코딩된 프레임에 피치 펄스 형상 정보를 포함하도록 구성될 수도 있다. 피치 펄스 형상을 인코딩하는 것은 그 차원이 가변하는 벡터를 양자화한다는 문제점을 제시할 수도 있다. 예를 들어, 잔차에서의 피치 주기의 길이, 및 피치 펄스의 길이는 광범위하게 변화될 수도 있다. 전술한 바와 같은 일 예에서, 허용가능한 피치 래그 값은 20 내지 146 샘플들의 범위 내에 있다.
펄스를 주파수 도메인으로 변환하지 않으면서 피치 펄스의 형상을 인코딩하는 것이 바람직할 수도 있다. 도 41 은, 프레임 인코더 (100) 의 구현형태에 의해 및/또는 수단 (FE100) 의 구현형태에 의해, 작업 (E100) 의 구현형태 내에서 수행될 수도 있는 일반적인 구성에 따라 프레임을 인코딩하는 방법 (M600) 의 흐름도를 나타낸다. 방법 (M600) 은 작업들 (T610, T620, T630, T640, 및 T650) 을 포함한다. 작업 (T610) 은, 프레임이 단일의 피치 펄스 또는 다수의 피치 펄스들을 갖는지의 여부를 따라, 2 개의 처리 경로들 중 하나를 선택한다. 작업 (T610) 을 수행하기 전에, 피치 펄스들 (예컨대, 방법 (M300)) 을 검출하는 방법에 대해 적어도 충분히 수행하여, 프레임이 단일의 피치 펄스 또는 다수의 피치 펄스들을 갖는지의 여부를 결정하는 것이 바람직할 수도 있다.
단일 펄스 프레임에 있어서, 작업 (T620) 은 한 세트의 상이한 단일 펄스 벡터 양자화 (VQ) 테이블들 중 하나를 선택한다. 이 예에서, 작업 (T620) 은, (예컨대, 작업 (E120 또는 L100), 수단 (FE120 또는 ML100), 피치 펄스 위치 계산기 (120), 또는 단말 피크 위치확인기 (A310) 에 의해 계산되는 바와 같이) 프레임 내에서의 피치 펄스의 위치에 따라 VQ 테이블을 선택하도록 구성된다. 그 후, 작업 (T630) 은, 선택된 VQ 테이블의 벡터를 선택함으로써 (예컨대, 선택된 VQ 테이블 내에서 최적의 정합을 발견하고 대응 인덱스를 출력함으로써) 펄스 형상을 양자화한다.
작업 (T630) 은 에너지에 있어서 정합될 펄스 형상에 가장 근접한 펄스 형상 벡터를 선택함으로써 구성될 수도 있다. 정합될 펄스 형상은 전체 프레임, 또는 피크를 포함하는 프레임의 얼마 더 작은 부분 (예컨대, 피크의 얼마 거리 내, 이를테면 프레임 길이의 1/4 내의 세그먼트) 일 수도 있다. 정합하는 동작을 수행하기 전에, 정합될 펄스 형상의 진폭을 정규화하는 것이 바람직할 수도 있다.
일 예에서, 작업 (T630) 은, 정합될 펄스 형상과 선택된 테이블의 각 펄스 형상 벡터 사이의 차이를 계산하고, 가장 작은 에너지와의 차이에 대응하는 펄스 형상 벡터를 선택하도록 구성된다. 다른 예에서, 작업 (T630) 은 그 에너지가 정합될 펄스 형상의 에너지에 가장 근접한 펄스 형상 벡터를 선택하도록 구성된다. 이러한 경우들에 있어서, (피치 펄스 또는 다른 벡터와 같은) 샘플들의 시퀀스의 에너지는 샘플들의 제곱의 합으로서 계산될 수도 있다. 작업 (T630) 은 본 명세서에 설명된 바와 같은 펄스 형상 선택 작업 (E110) 의 인스턴스로서 구현될 수도 있다.
단일-펄스 VQ 테이블들의 세트에서의 각 테이블은 프레임의 길이만큼 클 수도 있는 벡터 차원 (예컨대, 160 개의 샘플들) 을 갖는다. 각 테이블은 그 테이블에서의 벡터들에 정합되는 펄스 형상들과 동일한 벡터 차원을 갖는 것이 바람직할 수도 있다. 특정한 일 예에서, 단일 펄스 VQ 테이블들의 세트는 3 개의 테이블들을 포함하며, 각 테이블은 펄스 형상이 7-비트 인덱스로서 인코딩될 수 있도록 128 엔트리들까지를 갖는다.
대응 디코더 (예컨대, 디코더 (300, MF560 또는 A560) 의 구현형태, 또는 디코딩 작업 (D100) 또는 방법 (M560) 의 구현형태를 수행하는 수단 (FD100) 이나 디바이스) 는, (예컨대, 본 명세서에 기재된 바와 같은 여기 작업 (D305 또는 D440), 수단 (FD440), 또는 패킷 파서 (510) 에 의해 결정되는 바와 같이) 인코딩된 프레임의 펄스 위치 값이 피치 펄스 위치 모드 값 (예컨대, (2r - 1) 또는 127) 과 동일하다면, 프레임을 단일 펄스로서 식별하도록 구성될 수도 있다. 이러한 결정은 본 명세서에 기재된 바와 같은 비교 작업 (D310 또는 D450) 또는 비교기 (520) 의 출력에 기초할 수도 있다. 이와 달리 또는 추가적으로, 이러한 디코더는, 래그 값이 피치 주기 모드 값 (예컨대, (2r-1) 또는 127) 과 동일하다면, 프레임을 단일 펄스로서 식별하도록 구성될 수도 있다.
작업 (T640) 은, 다수의 펄스 프레임으로부터, 정합되는 적어도 하나의 피치 펄스를 추출한다. 예를 들어, 작업 (T640) 은 최대 이득을 갖는 피치 펄스 (예컨대, 가장 높은 피크를 포함하는 피치 펄스) 를 추출하도록 구성될 수도 있다. 추출된 피치 펄스의 길이는, (예컨대, 작업 (E370, E130, 또는 L200) 에 의해 계산되는 바와 같은) 추정되는 피치 주기와 동일한 것이 바람직할 수도 있다. 펄스를 추출할 때, 피크는 하나 이상의 중요한 샘플들의 불연속 및/또는 생략을 초래할 수도 있는 추출된 펄스의 첫 번째 샘플 또는 최종 샘플이 되지 않도록 하는 것이 바람직할 수도 있다. 몇몇 경우들에서는, 피크 후의 정보가 피크 전의 정보보다 스피치 품질 측면에서 더 중요할 수도 있으므로, 피크가 시작부 근방에 있도록 펄스를 추출하는 것이 바람직할 수도 있다. 일 예에서, 작업 (T640) 은 피치 피크 전의 2 개의 샘플들을 시작하는 피치 주기로부터 형상을 추출한다. 이러한 접근법은 피크 후에 발생하는 샘플들을 캡처하는 것을 가능하게 하며, 중요한 형상 정보를 포함할 수도 있다. 다르 예에서, 중요한 정보를 또한 포함할 수도 있는, 피크 전의 더 많은 샘플들을 캡처하는 것이 더 바람직할 수도 있다. 추가적인 예에서, 작업 (T640) 은 피크의 중심에 위치하는 피치 주기를 추출하도록 구성된다. 작업 (T640) 이, 프레임으로부터 하나보다 더 많은 피치 펄스를 추출 (예컨대, 가장 높은 피크들을 갖는 2 개의 피치 펄스들을 추출) 하고, 정합되는 평균 펄스 형상을 이 추출된 피치 펄스들로부터 계산하는 것이 바람직할 수도 있다. 작업 (T640) 및/또는 작업 (T660) 은, 펄스 형상 벡터 선택을 수행하기 전, 정합되는 펄스 형상의 진폭을 정규화하는 것이 바람직할 수도 있다.
멀티-펄스 프레임에 있어서, 작업 (T650) 은 래그 값 (또는 추출된 프로토타입의 길이) 에 기초하여 펄스 형상 VQ 테이블을 선택한다. 9 개 또는 10 개의 펄스 형상 VQ 테이블들의 세트를 제공하여 멀티-펄스 프레임들을 인코딩하는 것이 바람직할 수도 있다. 이 세트에서의 VQ 테이블들의 각각은 상이한 벡터 차원을 가지며 상이한 래그 범위 또는 "빈" 과 연관된다. 이러한 경우, 작업 (T650) 은 빈이 (작업 (E370, E130, 또는 L200) 에 의해 계산되는 바와 같은) 현재의 추정된 피치 주기를 포함한다고 결정하고, 그 빈에 대응하는 VQ 테이블을 선택한다. 예를 들어, 현재의 추정되는 피치 주기가 105 샘플들과 동일하다면, 작업 (T650) 은 101 샘플들에서 110 샘플들까지의 래그 범위를 포함하는 빈에 대응하는 VQ 테이블을 선택할 수도 있다. 일 예에서는, 펄스 형상이 7-비트 인덱스로서 인코딩될 수 있도록 멀티-펄스 형상 VQ 테이블들의 각각이 128 엔트리들까지 갖는다. 통상적으로, VQ 테이블에서의 모든 펄스 형상 벡터들은 동일한 벡터 차원을 가질 것인 반면, VQ 테이블들의 각각은 통상적으로 (예컨대, 대응하는 빈의 래그 범위에서 가장 큰 값과 등가인) 상이한 벡터 차원을 가질 것이다.
작업 (T660) 은 선택된 VQ 테이블의 벡터를 선택함으로써 (예컨대, 선택된 VQ 테이블 내에서의 최적의 정합을 발견하고 대응 인덱스를 출력함으로써), 펄스 형상을 양자화한다. 양자화될 펄스 형상의 길이가 테이블 엔트리들의 길이에 정확히 정합하지 않을 수도 있기 때문에, 작업 (T660) 은, 테이블로부터 (종료부에서) 펄스 형상을 제로-패딩 (zero-pad) 하도록 구성되어, 최적의 정합을 선택하기 전에 대응 테이블 벡터 크기에 정합시킬 수도 있다. 이와 달리 또는 추가적으로, 작업 (T660) 은 펄스 형상을 절단시키도록 구성되어 테이블로부터 최적의 정합을 선택하기 전에 대응 테이블 벡터 크기에 정합시킬 수도 있다.
가능한 (허용가능한) 래그 값들의 범위는 빈들로 균일하게 또는 불균일하게 분할될 수도 있다. 도 42a 에 도시된 바와 같은 균일한 분할의 일 예에서, 20 내지 146 샘플들의 래그 범위는 이하의 9 개의 빈들, 즉 20-33, 34-47, 48-61, 62-75, 76-89, 90-103, 104-117, 118-131, 및 132-146 샘플들로 분할된다. 이 예에서, 15 개의 샘플들의 폭을 갖는 마지막 빈을 제외한 모든 빈들은 14 개의 샘플들의 폭을 갖는다.
전술한 바와 같은 균일한 분할은, 낮은 피치 주파수에서의 품질과 비교할 때, 높은 피치 주파수에서는 감소된 품질을 초래할 수도 있다. 상기 예에서, 작업 (T660) 은, 20 개의 샘플들의 길이를 갖는 피치 펄스를 정합 전에 65 % 만큼 연장 (예컨대, 제로-패딩) 하도록 구성될 수도 있는 반면, 132 샘플들의 길이를 갖는 피치 펄스는 단지 11 % 만큼만 연장 (예컨대, 제로-패딩) 될 수도 있다. 불균일한 분할을 이용할 때의 잠재적인 하나의 이점은 상이한 래그 빈들 중에서 최대한의 상대적 연장과 등가화된다는 것이다. 도 42b 에 도시된 바와 같은 불균일한 분할의 일예에서, 20 내지 146 샘플들의 래그 범위는 이하의 9 개의 빈들, 즉 20-23, 24-29, 30-37, 38-47, 48-60, 61-76, 77-96, 97-120, 및 121-146 샘플들로 분할된다. 이 경우, 작업 (T660) 은 20 개의 샘플들의 길이를 갖는 피치 펄스를 정합 전에 15 % 만큼 연장 (예컨대, 제로-패딩) 하고, 121 샘플들의 길이를 갖는 피치 펄스를 21 % 만큼 연장 (예컨대, 제로-패딩) 하도록 구성될 수도 있다. 이 분할 방식에서, 20-146 샘플들의 범위 내에서의 임의의 피치 펄스의 최대 연장은 단지 25 % 에 불과하다.
대응 디코더 (예컨대, 디코더 (300, MF560, 또는 A560) 또는 수단 (FD100) 의 구현형태, 또는 디코딩 작업 (D100) 또는 방법 (M560) 의 구현형태를 수행하는 디바이스) 는 인코딩된 프레임으로부터 래그 값 및 펄스 형상 인덱스 값을 획득하고, 래그 값을 이용하여 적절한 펄스 형상 VQ 테이블을 선택하고, 펄스 형상 인덱스 값을 이용하여 선택된 펄스 형상 VQ 테이블로부터 원하는 펄스 형상을 선택하도록 구성될 수도 있다.
도 43a 는 작업들 (E410, E420, 및 E430) 을 포함하는 일반적인 구성에 따라 피치 펄스 (M650) 의 형상을 인코딩하는 방법의 흐름도를 나타낸다. 작업 (E410) 은 스피치 신호 프레임 (예컨대, LPC 잔차의 프레임) 의 피치 주기를 추정한다. 작업 (E410) 은 본 명세서에 기재된 바와 같은 피치 주기 추정 작업 (E130, L200, 및/또는 E370) 의 인스턴스로서 구현될 수도 있다. 추정된 피치 주기에 기초하여, 작업 (E420) 은 펄스 형상 벡터들의 복수의 테이블들 중 하나를 선택한다. 작업 (E420) 은 본 명세서에 기재된 바와 같은 작업 (T650) 의 인스턴스로서 구현될 수도 있다. 스피치 신호 프레임 중 적어도 하나의 피치 펄스로부터의 정보에 기초하여, 작업 (E430) 은 펄스 형상 벡터들의 선택된 테이블에서 펄스 형상 벡터를 선택한다. 작업 (E430) 은 본 명세서에 기재된 바와 같은 작업 (T660) 의 인스턴스로서 구현될 수도 있다.
테이블 선택 작업 (E420) 은 추정된 피치 주기에 기초한 값을 복수의 상이한 값들의 각각과 비교하도록 구성될 수도 있다. 본 명세서에 기재된 바와 같은 한 세트의 래그 범위 빈들 중 어느 것이 추정된 피치 주기를 포함하는지를 결정하기 위해, 예를 들어 작업 (E420) 은 추정된 피치 주기를 이 세트의 빈들 중 2 개 이상의 각각의 상한 범위들 (또는 하한 범위들) 과 비교하도록 구성될 수도 있다.
벡터 선택 작업 (E430) 은, 펄스 형상 벡터들의 선택된 테이블에서, 정합될 피치 펄스에 에너지 측면에서 가장 근접한 펄스 형상 벡터를 선택하도록 구성될 수도 있다. 일 예에서, 작업 (E430) 은 정합될 피치 펄스와 선택된 테이블의 각 펄스 형상 사이의 차이를 계산하고, 가장 작은 에너지와의 차이에 대응하는 펄스 형상 벡터를 선택하도록 구성된다. 다른 예에서는, 작업 (E430) 은 그 에너지가 정합될 피치 펄스의 에너지에 가장 근접한 펄스 형상 벡터를 선택하도록 구성된다. 이러한 경우들에서, (피치 펄스 또는 다른 벡터와 같은) 샘플들의 시퀀스의 에너지는 샘플들의 제곱의 합으로서 계산될 수도 있다.
도 43b 는 작업 (E440) 을 포함하는 방법 (M650) 의 구현형태 (M660) 의 흐름도를 나타낸다. 작업 (E440) 은 (A) 추정된 피치 주기에 기초한 제 1 값 및 (B) 선택된 테이블에서 선택된 펄스 형상 벡터를 식별하는 제 2 값 (예컨대, 테이블 인덱스) 을 포함하는 패킷을 생성한다. 제 1 값은 추정된 피치 주기를 최소 피치 주기 값 (예컨대, 20) 에 상대적인 오프셋으로서 나타낼 수도 있다. 예를 들어, 방법 (M660) (예컨대, 작업 (E410)) 은 추정된 피치 주기로부터 최소 피치 주기 값을 차감함으로써 제 1 값을 계산하도록 구성될 수도 있다.
작업 (E440) 은 비트 위치들의 각각의 분리된 세트들에서 제 1 값 및 제 2 값을 포함하는 패킷을 생성하도록 구성될 수도 있다. 예를 들어, 작업 (E440) 은 본 명세서에 기재된 바와 같이 제 1 세트의 비트 위치들 및 제 2 세트의 비트 위치들을 갖는 템플릿에 따라 패킷을 생성하도록 구성될 수도 있으며, 제 1 세트 및 제 2 세트는 분리되어 있다. 이러한 경우, 작업 (E440) 은 본 명세서에 기재된 바와 같이 패킷 생성 작업 (E320) 의 인스턴스로서 구현될 수도 있다. 작업 (E440) 의 이러한 구현형태는 제 1 세트의 비트 위치들에서의 피치 펄스 위치, 제 2 세트의 비트 위치들에서의 제 1 값, 및 제 1 세트 및 제 2 세트와 분리된 제 3 세트의 비트 위치들에서의 제 2 값을 생성하도록 구성될 수도 있다.
도 43c 는 작업 (E450) 을 포함하는 방법 (M650) 의 구현형태 (M670) 의 흐름도를 나타낸다. 작업 (E450) 은 스피치 신호 프레임의 복수의 피치 펄스들 중으로부터 피치 펄스를 추출한다. 작업 (E450) 은 본 명세서에 기재된 바와 같은 작업 (T640) 의 인스턴스로서 구현될 수도 있다. 작업 (E450) 은 에너지 측정치에 기초하여 피치 펄스를 선택하도록 구성될 수도 있다. 예를 들어, 작업 (E450) 은 그 피크가 가장 높은 에너지를 갖는 피치 펄스를 선택하도록 구성될 수도 있으며, 그 피치 펄스는 가장 높은 에너지를 갖는다. 방법 (M670) 에서, 벡터 선택 작업 (E430) 은 추출된 피치 펄스에 (또는 추출된 피치 펄스와 다른 추출된 피치 펄스의 평균과 같은 추출된 피치 펄스에 기초한 펄스 형상에) 최적의 정합인 펄스 형상 벡터를 선택하도록 구성될 수도 있다.
도 46a 는 작업들 (E460, E470, 및 E480) 을 포함하는 방법 (M650) 의 구현형태 (M680) 의 흐름도를 나타낸다. 작업 (E460) 은 제 2 스피치 신호 프레임 (예컨대, LPC 잔차의 프레임) 의 피치 펄스의 위치를 계산한다. 제 1 스피치 신호 프레임 및 제 2 스피치 신호 프레임은 동일한 음성 통신 세션으로부터 발생될 수도 있고, 또는 상이한 음성 통신 세션들로부터 발생될 수도 있다. 예를 들어, 제 1 스피치 신호 프레임 및 제 2 스피치 신호 프레임은 한 사람에 의해 스피킹되는 스피치 신호로부터 발생될 수도 있고, 또는 상이한 사람에 의해 각각 스피킹되는 상이한 스피치 신호들로부터 발생될 수도 있다. 스피치 신호 프레임들은, 피치 펄스 위치들이 계산되기 전 및/또는 후, 다른 처리 동작들 (예컨대, 인지 가중) 을 거칠 수도 있다.
계산된 피치 펄스 위치에 기초하여, 작업 (E470) 은 펄스 형상 벡터들의 복수의 테이블들 중 하나를 선택한다. 작업 (E470) 은 본 명세서에 기재된 바와 같은 작업 (T620) 의 인스턴스로서 구현될 수도 있다. 작업 (E470) 은 (예컨대, 작업 (E460) 또는 그렇지 않으면 방법 (M680) 에 의해) 제 2 스피치 신호 프레임은 단지 하나의 피치 펄스만을 포함한다는 결정에 응답하여 실행될 수도 있다. 제 2 스피치 신호 프레임으로부터의 정보에 기초하여, 작업 (E480) 은 펄스 형상 벡터들의 선택된 테이블에서 펄스 형상 벡터를 선택한다. 작업 (E480) 은 본 명세서에 기재된 바와 같은 작업 (T630) 의 인스턴스로서 구현될 수도 있다.
도 44a 는 피치 펄스의 형상을 인코딩하는 장치 (MF650) 의 블록도를 나타낸다. 장치 (MF650) 는, (예컨대, 작업 (E410, E130, L200, 및/또는 E370) 의 각종 구현형태들을 참조하여 전술한 바와 같이) 스피치 신호 프레임의 피치 주기를 추정하는 수단 (FE410), (예컨대, 작업 (E420 및/또는 T650) 의 각종 구현형태들을 참조하여 전술한 바와 같이) 펄스 형상 벡터들의 테이블을 선택하는 수단 (FE420), 및 (예컨대, 작업 (E430 및/또는 T660) 의 각종 구현형태를 참조하여 전술한 바와 같이) 선택된 테이블에서 펄스 형상 벡터를 선택하는 수단 (FE430) 을 포함한다.
도 44b 는 장치 (MF650) 의 구현형태 (MF660) 의 블록도를 나타낸다. 장치 (MF660) 는, (예컨대, 작업 (E440) 을 참조하여 전술한 바와 같이) (A) 추정되는 피치 주기에 기초한 제 1 값 및 (B) 선택된 테이블에서 선택된 펄스 형상 벡터를 식별하는 제 2 값 수단 (FE440) 을 포함한다. 도 44c 는 (예컨대, 작업 (E450) 을 참조하여 전술한 바와 같이) 스피치 신호 프레임의 복수의 피치 펄스들 중으로부터 피치 펄스를 추출하는 수단 (FE450) 을 포함하는 장치 (MF650) 의 구현형태 (MF670) 의 블록도를 나타낸다.
도 46b 는 장치 (MF650) 의 구현형태 (MF680) 의 블록도를 나타낸다. 장치 (MF680) 는 (예컨대, 작업 (E460) 을 참조하여 전술한 바와 같이) 제 2 스피치 신호 프레임의 피치 펄스의 위치를 계산하는 수단 (FE460), (예컨대, 작업 (E470) 을 참조하여 전술한 바와 같이) 이 계산된 피치 펄스 위치에 기초하여 복수의 펄스 형상 벡터들 중으로부터 하나를 선택하는 수단 (FE470), (예컨대, 작업 (E480) 을 참조하여 전술한 바와 같이) 제 2 스피치 신호 프레임으로부터의 정보에 기초하여 펄스 형상 벡터들의 선택된 테이블에서 펄스 형상 벡터를 선택하는 수단 (FE480) 을 포함한다.
도 45a 는 피치 펄스의 형상을 인코딩하는 장치 (A650) 의 블록도를 나타낸다. 장치 (A650) 는 (예컨대, 작업 (E410, E130, L200, 및/또는 E370) 의 각종 구현형태들을 참조하여 전술한 바와 같이) 스피치 신호 프레임의 피치 주기를 추정하도록 구성된 피치 주기 추정기 (540) 를 포함한다. 예를 들어, 피치 주기 추정기 (540) 는 본 명세서에 기재된 바와 같은 피치 주기 추정기 (130, 190, 또는 A320) 의 인스턴스로서 구현될 수도 있다. 장치 (A650) 는 또한, (예컨대, 작업 (E420 및/또는 T650) 의 각종 구현형태들을 참조하여 전술한 바와 같이), 이 추정된 피치 주기에 기초하여 펄스 형상 벡터들의 테이블을 선택하도록 구성된 벡터 테이블 선택기 (550) 를 포함한다. 장치 (A650) 는 또한 (예컨대, 작업 (E430 및/또는 T660) 의 각종 구현형태를 참조하여 전술한 바와 같이), 스피치 신호 프레임의 적어도 하나의 피치 펄스로부터의 정보에 기초하여, 이 선택된 테이블에서 펄스 형상 벡터를 선택하도록 구성된 펄스 형상 벡터 선택기 (560) 를 포함한다.
도 45b 는 (예컨대, 작업 (E440) 을 참조하여 전술한 바와 같이) (A) 추정된 피치 주기에 기초한 제 1 값 및 (B) 선택된 테이블에서 선택된 펄스 형상 벡터를 식별하는 제 2 값을 포함하는 패킷을 생성하도록 구성된 패킷 생성기 (570) 를 포함하는 장치 (A650) 의 구현형태 (A660) 의 블록도를 나타낸다. 패킷 생성기 (570) 는 본 명세서에 기재된 패킷 생성기 (170) 의 인스턴스로서 구현될 수도 있다. 도 45c 는 (예컨대, 작업 (E450) 을 참조하여 전술한 바와 같이) 스피치 신호 프레임의 복수의 피치 펄스들 중으로부터 피치 펄스를 추출하도록 구성된 피치 펄스 추출기 (580) 를 포함하는 장치 (A650) 의 구현형태 (A670) 의 블록도를 나타낸다.
도 46c 는 장치 (A65O) 의 구현형태 (A680) 의 블록도를 나타낸다. 장치 (A680) 는 (작업 (E460) 을 참조하여 전술한 바와 같이) 제 2 스피치 신호 프레임의 피치 펄스의 위치를 계산하도록 구성된 피치 펄스 위치 계산기 (590) 를 포함한다. 예를 들어, 피치 펄스 위치 계산기 (590) 는 본 명세서에 기재된 바와 같은 피치 펄스 위치 계산기 (120 또는 160) 또는 단말 피크 위치확인기 (A310) 의 인스턴스로서 구현될 수도 있다. 이 경우, 벡터 테이블 선택기 (550) 는 또한, (작업 (E470) 을 참조하여 전술한 바와 같이) 계산된 피치 펄스 위치에 기초하여 펄스 형상 벡터들의 복수의 테이블들 중 하나를 선택하도록 구성되고, 펄스 형상 벡터 선택기 (560) 는 또한 (작업 (E480) 을 참조하여 전술한 바와 같이) 제 2 스피치 신호 프레임으로부터의 정보에 기초하여 펄스 형상 벡터들의 선택된 테이블에서 펄스 형상 벡터를 선택하도록 구성된다.
스피치 인코더 (AE10) 는 장치 (A650) 를 포함하도록 구현될 수도 있다. 예를 들어, 스피치 인코더 (AE20) 의 제 1 프레임 인코더 (104) 는 피치 주기 추정기 (130) 가 또한 추정기 (540) 로서 기능하도록 장치 (A650) 의 인스턴스를 포함하도록 구현될 수도 있다. 제 1 프레임 인코더 (104) 의 이러한 구현형태는 또한 장치 (A400) 의 인스턴스 (예를 들어, 패킷 생성기 (170) 가 또한 패킷 생성기 (570) 로서 기능하게 하는 장치 (A402) 의 인스턴스) 를 포함할 수도 있다.
도 47a 는 일반적인 구성에 따라 피치 펄스 (M800) 의 형상을 디코딩하는 방법의 블록도를 나타낸다. 방법 (M800) 은 작업들 (D510, D520, D530, 및 D540) 을 포함한다. 작업 (D510) 은 (예컨대, 방법 (M660) 의 구현형태에 의해 생성되는 바와 같은) 인코딩된 스피치 신호의 패킷으로부터 인코딩된 피치 주기 값을 추출한다. 작업 (D510) 은 본 명세서에 기재된 바와 같은 작업 (D480) 의 인스턴스로서 구현될 수도 있다. 인코딩된 피치 주기 값에 기초하여, 작업 (D520) 은 펄스 형상 벡터들의 복수의 테이블들 중 하나를 선택한다. 작업 (D530) 은 패킷으로부터 인덱스를 추출한다. 인덱스에 기초하여, 작업 (D540) 은 선택된 테이블로부터 펄스 형상 벡터를 획득한다.
도 47b 는 작업들 (D550 및 D560) 을 포함하는 방법 (M800) 의 구현형태 (M810) 의 블록도를 나타낸다. 작업 (D550) 은 패킷으로부터 피치 펄스 위치 지시자를 추출한다. 작업 (D550) 은 본 명세서에 기재된 바와 같은 작업 (D410) 의 인스턴스로서 구현될 수도 있다. 피치 펄스 위치 지시자에 기초하여, 작업 (D560) 은 펄스 형상 벡터에 기초한 피치 펄스를 여기 신호 내에 배열한다. 작업 (D560) 은 본 명세서에 기재된 바와 같은 작업 (D430) 의 인스턴스로서 구현될 수도 있다.
도 48a 는 작업들 (D570, D575, D580, 및 D585) 을 포함하는 방법 (M800) 의 구현형태 (M820) 의 블록도를 나타낸다. 작업 (D570) 은 제 2 패킷으로부터 피치 펄스 위치 지시자를 추출한다. 제 2 패킷은 제 1 패킷과 동일한 음성 통신 세션으로부터 발생될 수도 있고, 상이한 음성 통신 세션으로부터 발생될 수도 있다. 작업 (D570) 은 본 명세서에 기재된 바와 같은 작업 (D410) 의 인스턴스로서 구현될 수도 있다. 제 2 패킷으로부터의 피치 펄스 위치 지시자에 기초하여, 작업 (D575) 은 펄스 형상 벡터들의 제 2 복수의 테이블들 중 하나를 선택한다. 작업 (D580) 은 제 2 패킷으로부터 인덱스를 추출한다. 제 2 패킷으로부터의 인덱스에 기초하여, 작업 (D585) 은 제 2 복수의 테이블들 중 선택된 하나로부터 펄스 형상 벡터를 획득한다. 방법 (M820) 은 또한 획득된 펄스 형상 벡터에 기초하여 여기 신호를 생성하도록 구성될 수도 있다.
도 48b 는 피치 펄스의 형상을 디코딩하는 장치 (MF800) 의 블록도를 나타낸다. 장치 (MF800) 는 (예컨대, 작업 (D510) 의 각종 구현형태들을 참조하여 본 명세서에 설명된 바와 같이) 인코딩된 피치 주기 값을 패킷으로부터 추출하는 수단 (FD510), (예컨대, 작업 (D520) 의 각종 구현형태들을 참조하여 본 명세서에 설명된 바와 같이) 펄스 형상 벡터들의 복수의 테이블들 중 하나를 선택하는 수단 (FD520), (예컨대, 작업 (D530) 의 각종 구현형태들을 참조하여 본 명세서에 설명된 바와 같이) 패킷으로부터 인덱스를 추출하는 수단 (FD530), 및 (예컨대, 작업 (D540) 의 각종 구현형태들을 참조하여 본 명세서에 설명된 바와 같이) 선택된 테이블로부터 펄스 형상 벡터를 획득하는 수단 (FD540) 을 포함한다.
도 49a 는 장치 (MF800) 의 구현형태 (MF810) 의 블록도를 나타낸다. 장치 (MF810) 는 (예컨대, 작업 (D550) 의 각종 구현형태들을 참조하여 본 명세서에 설명된 바와 같이) 패킷으로부터 피치 펄스 위치 지시자를 추출하는 수단 (FD550) 및 (예컨대, 작업 (D560) 의 각종 구현형태들을 참조하여 본 명세서에 설명된 바와 같이) 여기 신호 내에 펄스 형상 벡터에 기초한 피치 펄스를 배열하는 수단 (FD560) 을 포함한다.
도 49b 는 장치 (MF800) 의 구현형태 (MF820) 의 블록도를 나타낸다. 장치 (MF820) 는 (예컨대, 작업 (D570) 의 각종 구현형태들을 참조하여 본 명세서에 설명된 바와 같이) 피치 펄스 위치 지시자를 추출하는 수단 (FD570) 및 (예컨대, 작업 (D575) 의 각종 구현형태들을 참조하여 본 명세서에 설명된 바와 같이) 제 2 패킷으로부터의 위치 지시자에 기초하여 펄스 형상 벡터들의 제 2 복수의 테이블들 중 하나를 선택하는 수단 (FD575) 을 포함한다. 장치 (MF820) 는 또한 (예컨대, 작업 (D580) 의 각종 구현형태들을 참조하여 본 명세서에 기재된 바와 같이) 제 2 패킷으로부터 인덱스를 추출하는 수단 (FD580) 및 (예컨대, 작업 (D585) 의 각종 구현형태들을 참조하여 본 명세서에 기재된 바와 같이) 제 2 패킷으로부터의 인덱스에 기초하여 제 2 복수의 테이블들 중 선택된 하나로부터 펄스 형상 벡터를 획득하는 수단 (FD585) 을 포함한다.
도 50a 는 피치 펄스의 형상을 디코딩하는 장치 (A800) 의 블록도를 나타낸다. 장치 (A800) 는 (작업 (D510) 의 각종 구현형태들을 참조하여 본 명세서에 기재된 바와 같이) 인코딩된 피치 주기 값을 패킷으로부터 추출하고, (작업 (D530) 의 각종 구현형태들을 참조하여 본 명세서에 설명된 바와 같이) 패킷으로부터 인덱스를 추출하도록 구성된 패킷 파서 (610) 를 포함한다. 패킷 파서 (620) 는 본 명세서에 기재된 바와 같이 패킷 파서 (510) 의 인스턴스로서 구현될 수도 있다. 장치 (A800) 는 또한 (예컨대, 작업 (D520) 의 각종 구현형태들을 참조하여 본 명세서에 설명된 바와 같이) 펄스 형상 벡터들의 복수의 테이블들 중 하나를 선택하도록 구성된 벡터 테이블 선택기 (620) 및 (예컨대, 작업 (D540) 의 각종 구현형태들을 참조하여 본 명세서에 설명된 바와 같이) 선택된 테이블로부터 펄스 형상 벡터를 획득하도록 구성된 벡터 테이블 판독기 (630) 를 포함한다.
패킷 파서 (610) 는 또한 (예컨대, 작업들 (D570 및 D580) 의 각종 구현형태들을 참조하여 본 명세서에 설명된 바와 같이) 제 2 패킷으로부터 펄스 위치 지시자 및 인덱스를 추출하도록 구성될 수도 있다. 벡터 테이블 선택기 (620) 는 또한 (예컨대, 작업 (D575) 의 각종 구현형태들을 참조하여 본 명세서에 기재된 바와 같이) 제 2 패킷으로부터의 위치 지시자에 기초하여 펄스 형상 벡터들의 복수의 테이블들 중 하나를 선택하도록 구성될 수도 있다. 벡터 테이블 판독기 (630) 는 또한 (예컨대, 작업 (D585) 의 각종 구현형태들을 참조하여 본 명세서에 기재된 바와 같이) 제 2 패킷으로부터의 인덱스에 기초하여 제 2 복수의 테이블들 중 선택된 하나로부터 펄스 형상 벡터를 획득하도록 구성될 수도 있다. 도 50b 는 (예컨대, 작업 (D560) 의 각종 구현형태들을 참조하여 본 명세서에 기재된 바와 같이) 펄스 형상 벡터에 기초한 피치 펄스를 여기 신호 내에 배열하도록 구성된 여기 신호 생성기 (640) 를 포함하는 장치 (A800) 의 구현형태 (A810) 의 블록도를 나타낸다. 여기 신호 생성기 (640) 는 본 명세서에 설명된 바와 같이 여기 신호 생성기 (310 및 530) 의 인스턴스로서 구현될 수도 있다.
스피치 인코터 (AE10) 는 장치 (A800) 를 포함하도록 구현될 수도 있다. 예를 들어, 스피치 인코더 (AE20) 의 제 1 프레임 인코더 (104) 는 장치 (A800) 의 인스턴스를 포함하도록 구현될 수도 있다. 제 1 프레임 인코더 (104) 의 이러한 구현형태는 또한 장치 (A560) 의 인스턴스를 포함할 수도 있으며, 이 경우, 패킷 파서 (510) 는 또한 패킷 파서 (620) 로서도 기능할 수도 있고 및/또는 여기 신호 생성기 (530) 는 또한 여기 신호 생성기 (640) 로서도 기능할 수도 있다.
(예컨대, 스피치 인코더 (AE20) 의 구현형태에 따른) 구성에 의한 스피치 인코더는 3 가지 또는 4 가지의 코딩 방식들, 즉 전술한 바와 같은 1/4 레이트 NELP (QNELP) 코딩 방식, 1/4 레이트 PPP (QPPP) 코딩 방식, 및 천이 프레임 코딩 방식을 이용하여 프레임들의 상이한 부류들을 인코딩한다. QNELP 코딩 방식은 무성음 프레임들 및 다운-과도형 프레임들을 인코딩하는데 이용된다. QNELP 코딩 방식, 또는 1/8 NELP 코딩 방식은 침묵 프레임들 (예컨대, 배경 잡음) 을 인코딩하는데 이용될 수도 있다. QPPP 코딩 방식은 유성음 프레임들을 인코딩하는데 이용된다. 천이 프레임 코딩 방식은 업-과도형 (즉, 온셋) 프레임들 및 과도형 프레임들을 인코딩하는데 이용될 수도 있다. 도 26 의 테이블은 이들 4 가지의 코딩 방식들의 각각에 대한 비트 할당의 예를 나타낸다.
현대의 보코더들은 통상적으로 스피치 프레임들의 분류를 수행한다. 예를 들어, 이러한 보코더는 프레임을 전술한 6 개의 상이한 부류들, 즉 침묵, 무성음, 유성음, 과도형, 다운-과도형, 및 업-과도형 중 하나로서 분류하는 방식에 따라 동작할 수도 있다. 이러한 방식들의 예들은 미국 공개 특허 출원 제 2002/0111798 호 (Huang) 에 기재되어 있다. 이러한 분류 방식의 일 예는 또한, 3GPP2 (제 3 세대 파트너쉽 프로젝트 2; Third Generation Partnership Project 2) 문서인 "Enhanced Variable Rate Codec, Speech Service Options 3, 68, and 70 for Wideband Spread Spectrum Digital Systems" (3GPP2 C.S0014-C, 2007 년 1 월, www-dot-3gpp2-dot-org 으로 온라인 이용가능) 의 섹션 4.8 (pp. 4-57 내지 4-71) 에도 기재되어 있다. 이 방식은 도 51 의 표에 리스팅된 특징들을 이용하여 프레임들을 분류하고, 이 섹션 4.8 은 본 명세서에 기재된 바와 같이 "EVRC classification scheme" 의 예로서의 참조로써 본 명세서에 통합되어 있다. EVRC 분류 방식의 유사한 예는 도 55 내지 도 63 의 코딩 리스팅들에 기재되어 있다.
도 51 의 표에 나타나 있는 파라미터들 E, EL, 및 EH 는 이하와 같이 (160-비트 프레임으로) 계산될 수도 있으며,
Figure 112011040599508-pct00024
여기서,
Figure 112011040599508-pct00025
Figure 112011040599508-pct00026
은 각각 (12 차 폴-제로 저역 통과 필터를 이용하여) 입력 스피치 신호의 저역 통과 필터링 버전, 및 (12차 폴-제로 고역 통과 필터를 이용하여) 입력 스피치 신호의 고역 통과 필터링 버전이다. EVRC 분류 방식에 이용될 수도 있는 다른 특징들은 이전의 프레임 모드 결정 ("prev_mode"), 이전의 프레임에서의 정상 유성음 스피치의 존재 ("prev_voiced"), 및 현재의 프레임에 대한 음성 활성화 검출 결과 ("curr_va") 를 포함한다.
분류 방식에 이용되는 중요한 특징은 피치 기반의 정규화된 상관 기능 (normalized autocorrelation function; NACF) 이다. 도 52 는 피치-기반의 NACF 를 연산하는 절차의 흐름도를 나타낸다. 먼저, 현재 프레임 및 다음 프레임 (룩-어헤드 (look-ahead) 프레임으로도 지칭됨) 의 LPC 잔차는 약 100 Hz 에서 3-dB 컷-오프 주파수를 갖는 3 차 고역 통과 필터를 통해 필터링된다. 양자화된 LPC 계수 값들을 이용하여 이 잔차를 연산하는 것이 바람직할 수도 있다. 그 후, 필터링된 잔차는 길이 13 의 유한-임펄스-응답 (finite-impulse-response; FIR) 필터로 저역 통과 필터링되고, 2 의 팩터에 의해 데시메이팅된다. 데시메이팅된 신호는
Figure 112011040599508-pct00027
로 나타낸다.
현재 프레임의 2 개의 하부 프레임들에 대한 NACF 들은,
Figure 112011040599508-pct00028
Figure 112011040599508-pct00029
로서 연산되며, 여기서 k = 1, 2 이고, 최대화는
Figure 112011040599508-pct00030
가 되도록 모든 정수 i 에 걸쳐 행해지며,
여기서,
Figure 112011040599508-pct00031
는 피치 추정 루틴 (예컨대, 상관 기반의 기술) 에 의해 추정되는 바와 같은 하부 프레임 k 에 대한 래그 값이다. 현재 프레임의 제 1 하부 프레임 및 제 2 하부 프레임에 대한 이들 값은 또한 nacf_at_pitch[2] ("nacf_ap[2]" 로서도 기재됨) 및 nacf_ap[3] 으로서 각각 참조될 수도 있다. 이전 프레임의 제 1 하부 프레임 및 제 2 하부 프레임에 대한 상기 식에 따라 계산된 NACF 값들은 nacf_ap[0] 및 nacf_ap[1] 로서 각각 참조될 수도 있다.
룩-어헤드 프레임에 대한 NACF 는,
Figure 112011040599508-pct00032
Figure 112011040599508-pct00033
로서 연산되고, 최대화는
Figure 112011040599508-pct00034
가 되는 모든 정수 i 에 걸쳐 행해진다. 이 값은 또한 nacf_ap[4] 로서 참조될 수도 있다.
도 53 은 EVRC 분류 방식을 상위 수준으로 도시하는 흐름도이다. 모드 결정은 이전의 모드 결정 및 NACF 들과 같은 특징에 기초한 상태들 사이에서의 천이로서 간주될 수도 있으며, 여기서 상태는 상이한 프레임 분류들이다. 도 54 는 EVRC 분류 방식에서의 상태들 사이에서 가능한 천이들을 도시하는 상태도이며, 여기서 라벨 S, UN, UP, TR, V, 및 DOWN 은 프레임 분류들인 침묵 (silence), 무성음 (unvoiced), 업-과도형 (up-transient), 과도형 (transient), 유성음 (voiced), 및 다운-과도형 (down-transient) 을 각각 나타낸다.
EVRC 분류 방식은, nacf_at_pitch[2] (현재 프레임의 제 2 하부 프레임 NACF 으로서 "nacf_ap[2]" 로도 기재됨) 및 임계값들 VOICEDTH 및 UNVOICEDTH 사이의 관계에 따라, 3 가지의 상이한 절차들 중 하나를 선택함으로써 구현될 수도 있다. 도 55 및 도 56 에 걸쳐 확장되는 코드 리스팅은, nacf_ap[2] > VOICEDTH 일 때 이용될 수도 있는 절차를 기재하고 있다. 도 57 내지 도 59 에 걸쳐 확장되는 코드 리스팅은, nacf_ap[2] < UNVOICEDTH 일 때 이용될 수도 있는 절차를 기재하고 있다. 도 60 내지 도 63 에 걸쳐 연장되는 코드 리스팅은, nacf_ap[2] >= UNVOICEDTH 및 nacf_ap[2] <= VOICEDTH 일 때 이용될 수도 있는 절차를 기재하고 있다.
특징 curr_ns_snr[O] 의 값에 따라 임계치들 VOICEDTH, LOWVOICEDTH, 및 UNVOICEDTH 의 값들을 변화시키는 것이 바람직할 수도 있다. 예를 들어, curr_ns_snr[O] 의 값이 25 dB 의 SNR 임계치보다 더 작지 않다면, 클린 스피치에 대한 이하의 임계값들, 즉 VOICEDTH = 0.75, LOWVOICEDTH = 0.5, UNVOICEDTH = 0.35 이 적용될 수도 있고, curr_ns_snr[O] 의 값이 25 dB SNR 임계치보다 더 작다면, 잡음 스피치에 대한 이하의 임계값들, 즉 VOICEDTH = 0.65, LOWVOICEDTH = 0.5, UNVOICEDTH = 0.35 가 적용될 수도 있다.
프레임들의 정확한 분류는 저속 (low-rate) 보코더에서 양호한 품질을 확보하기 위해 특히 중요할 수도 있다. 예를 들어, 온셋 프레임이 적어도 하나의 구별되는 피크 또는 펄스를 갖는 경우에 한하여, 본 명세서에 기재된 바와 같은 천이 프레임 코딩 모드를 이용하는 것이 바람직할 수도 있다. 이러한 특징은 신뢰할만한 펄스 검출을 위해 중요할 수도 있으며, 이 신뢰할만한 펄스 검출이 없다면 천이 프레임 코딩 모드가 왜곡된 결과를 생성할 수도 있다. 적어도 하나의 구별되는 피크 또는 펄스가 부족한 프레임들을 인코딩하기 위해서는 PPP 또는 천이 프레임 코딩 방식보다는 NELP 코딩 방식을 이용하는 것이 바람직할 수도 있다. 예를 들어, 이러한 과도형 또는 업-과도형 프레임을 무성음 프레임으로서 재분류하는 것이 바람직할 수도 있다.
이러한 재분류는 하나 이상의 정규화된 자기 상관 기능 (NACF) 값들 및/또는 다른 특징들에 기초할 수도 있다. 재분류는 또한, 프레임의 피크-투-RMS 에너지 값 ("최대 샘플/RMS 에너지") 및/또는 프레임에서의 피치 펄스들의 실제 갯수 ("피크 카운트") 와 같이, EVRC 분류 방식에서 이용되지 않는 특징들에 기초할 수도 있다. 도 64 의 표에 나타낸 8 개의 조건들 중 임의의 하나 이상, 및/또는 도 65 의 표에 나타낸 10 개의 조건들 중 임의의 하나 이상은, 업-과도형 프레임을 무성음 프레임으로서 재분류하는데 이용될 수도 있다. 도 66 의 표에 나타낸 11 개의 조건들 중 임의의 하나 이상, 및/또는 도 67 의 표에 나타낸 11 개의 조건들 중 임의의 하나 이상은, 과동형 프레임을 무성음 프레임으로서 재분류하는데 이용될 수도 있다. 도 68 의 표에 나타낸 4 개의 조건들 중 임의의 하나 이상은 유성음 프레임을 무성음 프레임으로서 재분류하는데 이용될 수도 있다. 저속 잡음으로부터 상대적으로 자유로운 프레임들에 대한 이러한 재분류를 제한하는 것이 또한 바람직할 수도 있다. 예를 들어, curr_ns_snr[O] 의 값이 25 dB 보다 더 작지 않은 경우에 한하여, 도 65, 67, 또는 68 에서의 조건들 중 어느 하나, 또는 도 66 의 최우측 7 개의 조건들 중 어느 하나에 따라 프레임을 재분류하는 것이 바람직할 수도 있다.
반대로, 적어도 하나의 구별되는 피크를 포함하는 무성음 프레임을 업-과도형 프레임 또는 과도형 프레임으로서 재분류하는 것이 바람직할 수도 있다. 이러한 재분류는 하나 이상의 정규화된 자기 상관 기능 (NACF) 값들 및/또는 다른 특징들에 기초할 수도 있다. 재분류는 또한, 프레임의 피크-투-RMS 에너지 값 및/또는 피크 카운트와 같은 EVRC 분류 방식에서 이용되지 않는 특징들에 기초할 수도 있다. 도 69 의 표에 나타낸 7 개의 조건들 중 임의의 하나 이상은 무성음 프레임을 업-과도형 프레임으로서 재분류하는데 이용될 수도 있다. 도 70 의 표에 나타낸 9 개의 조건들 중 임의의 하나 이상은 무성음 프레임을 과도형 프레임으로서 재분류하는데 이용될 수도 있다. 도 71a 의 표에 나타낸 조건은 다운-과도형 프레임을 유성음 프레임으로서 재분류하는데 이용될 수도 있다. 도 71b 의 표에 나타낸 조건은 다운-과도형 프레임을 과도형 프레임으로서 재분류하는데 이용될 수도 있다.
프레임 재분류에 대한 대안으로서, EVRC 분류 방식과 같은 프레임 분류의 방법은 EVRC 분류 방식, 및 전술했고 및/또는 도 64 내지 도 71b 에 기재된 재분류 조건들 중 하나 이상의 조합과 동일한 분류 결과를 생성하도록 변형될 수도 있다.
도 72 는 스피치 인코더 (AE20) 의 구현형태 (AE30) 의 블록도를 나타낸다. 코딩 방식 선택기 (C200) 는 도 55 내지 도 63 의 코드 리스팅들에 기재된 EVRC 분류 방식과 같은 분류 방식을 적용하도록 구성될 수도 있다. 스피치 인코더 (AE30) 는 전술했고 및/또는 도 64 내지 도 71b 에 기재된 조건들 중 하나 이상에 따라 프레임들을 재분류하도록 구성되는 프레임 재분류기 (RC10) 를 포함한다. 프레임 재분류기 (RC10) 는 코딩 방식 선택기 (C200) 로부터 프레임 분류 및/또는 다른 프레임 특징들의 값들을 수신하도록 구성될 수도 있다. 프레임 재분류기 (RC10) 는 추가적인 프레임 특징들의 값들 (예컨대, 피크-투-RMS 에너지 값, 피크 카운트) 을 계산하도록 구성될 수도 있다. 이와 달리, 스피치 인코더 (AE30) 는, EVRC 분류 방식, 및 전술했고 및/또는 도 64 내지 도 71b 에 기재된 재분류 조건들 중 하나 이상의 조합과 동일한 분류 결과를 생성하는 코딩 방식 선택기 (C200) 의 구현형태를 포함하도록 구현될 수도 있다.
도 73a 는 스피치 인코더 (AE10) 의 구현형태 (AE40) 의 블록도를 나타낸다. 스피치 인코더 (AE40) 는, 주기적인 프레임들을 인코딩하도록 구성된 주기적 프레임 인코더 (E70), 및 비주기적인 프레임들을 인코딩하도록 구성된 비주기적 프레임 인코더 (E80) 를 포함한다. 예를 들어, 스피치 인코더 (AE40) 는 선택기들 (60a, 60b) 을 지향하여, 유성음, 과도형, 업-과도형, 또는 다운-과도형으로서 분류된 프레임들에 대해서는 주기적 프레임 인코더 (E70) 를 선택하고, 무성음 또는 침묵으로서 분류된 프레임들에 대해서는 비주기적 프레임 인코더 (E80) 를 선택하도록 구성되는 코딩 방식 선택기 (C200) 의 구현형태를 포함할 수도 있다. 스피치 인코더 (AE40) 의 코딩 방식 선택기 (C200) 는 EVRC 분류 방식, 및 전술했고 및/또는 도 64 내지 도 71b 에 기재된 재분류 조건들 중 하나 이상의 조합과 동일한 분류 결과를 생성하도록 구현될 수도 있다.
도 73b 는 주기적 프레임 인코더 (E70) 의 구현형태 (E72) 의 블록도를 나타낸다. 인코더 (E72) 는 본 명세서에 기재된 바와 같이 제 1 프레임 인코더 (100) 및 제 2 프레임 인코더 (200) 의 구현형태들을 포함한다. 인코더 (E72) 는 또한 코딩 방식 선택기 (C200) 로부터의 분류 결과에 따라 현재 프레임에 대해 인코더들 (100 및 200) 중 하나를 선택하도록 구성되는 선택기들 (80a, 80b) 을 포함한다. 주기적인 프레임들을 위한 디폴트 인코더로서 제 2 프레임 인코더 (200) (예컨대, QPPP 인코더) 를 선택하기 위해, 주기적 프레임 인코더 (E72) 를 구성하는 것이 바람직할 수도 있다. 비주기적 프레임 인코더 (E80) 는 무성음 프레임 인코더 (예컨대, QNELP 인코더) 및 침묵 프레임 인코더 (예컨대, 1/8 레이트 NELP 인코더) 중에서 하나를 선택하도록 유사하게 구현될 수도 있다. 이와 달리, 비주기적 프레임 인코더 (E80) 는 무성음 프레임 인코더 (UE10) 의 인스턴스로서 구현될 수도 있다.
도 74 는 주기적 프레임 인코더 (E72) 의 구현형태 (E74) 의 블록도를 나타낸다. 인코더 (E74) 는, 전술했고 도 64 내지 도 71b 에 기재된 조건들 중 하나 이상에 따라 프레임들을 재분류하고, 선택기들 (80a, 80b) 을 제어하여 재분류의 결과에 따른 현재의 프레임에 대해 인코더들 (100 및 200) 중 하나를 선택하도록 구성되는 프레임 재분류기 (RC10) 의 인스턴스를 포함한다. 추가적인 예에서, 코딩 방식 선택기 (C200) 는 프레임 재분류기 (RC10) 를 포함하거나, 또는 EVRC 분류 방식, 및 전술했고 및/또는 도 64 내지 도 71b 에 기재된 재분류 조건들 중 하나 이상의 조합과 동일한 분류 방식을 수행하고, 이러한 분류 또는 재분류에 의해 지시되는 대로 제 1 프레임 인코더 (100) 를 선택하도록 구성될 수도 있다.
과도형 프레임 및/또는 업-과도형 프레임을 인코딩하기 위해, 전술한 바와 같은 천이 프레임 코딩 모드를 이용하는 것이 바람직할 수도 있다. 도 75a 내지 도 75d 는 본 명세서에 기재된 바와 같은 천이 프레임 코딩 모드의 이용이 바람직할 수도 있는 통상적인 몇몇 프레임 시퀀스들을 나타낸다. 이들 예에서, 천이 프레임 코딩 모드의 이용은, 통상적으로, 굵은 선의 윤곽으로 나타낸 프레임으로 지시될 것이다. 이러한 코딩 모드는 상대적으로 일정한 피치 주기 및 예리한 펄스들을 갖는 전부 유성음 프레임들 또는 일부 유성음 프레임들 상에서 양호하게 통상적으로 수행된다. 그러나, 디코딩된 스피치의 품질은, 예리한 프레임에 펄스들이 부족한 경우 또는 프레임이 보이싱 (voicing) 의 실제 온셋에 선행하는 경우, 감소될 수도 있다. 몇몇 경우들에서는, 천이 프레임 코딩 모드의 이용을 스킵 (skip) 또는 취소하는 것이 바람직할 수도 있으며, 또는 그렇지 않으면 차후의 프레임 (예컨대, 그 다음 프레임) 까지 이 코딩 모드의 이용을 지연시키는 것이 바람직할 수도 있다.
펄스 오검출은 피치 에러, 미싱 펄스 (missing pulses) 및/또는 외부로부터의 펄스의 삽입을 야기할 수도 있다. 이러한 에러들은 디코딩된 스피치에서 팝, 클릭, 및/또는 다른 불연속성들과 같은 왜곡을 초래할 수도 있다. 그러므로, 프레임이 천이 프레임 코딩에 적합하다고 검증하는 것이 바람직할 수도 있으며, 프레임이 적합하지 않을 때 천이 프레임 코딩 모드의 이용을 취소하는 것은, 이러한 문제점들을 감소시키는데 도움을 줄 수도 있다.
과도형 또는 업-과도형 프레임이 천이 프레임 코딩 모드에 부적합하다고 결정될 수도 있다. 예를 들어, 프레임에, 구별되는 예리한 펄스가 부족할 수도 있다. 이러한 경우, 천이 프레임 코딩 모드를 이용하여, 부적합한 프레임 다음에 오는 첫 번째의 적합한 유성음 프레임을 인코딩하는 것이 바람직할 수도 있다. 예를 들어, 온셋 프레임에, 구별되는 예리한 펄스가 부족하다면, 다음에 오는 첫 번째의 적합한 유성음 프레임에 대해 천이 프레임 코딩을 수행하는 것이 바람직할 수도 있다. 이러한 기술은 후속하는 유성음 프레임들에 대해 양호한 참조를 확보하도록 하는데 도움을 줄 수도 있다.
몇몇 경우들에서는, 천이 프레임 코딩 모드의 이용은, 펄스 이득 부정합 문제들 및/또는 예리한 부정합 문제들을 초래할 수도 있다. 단지 한정된 수의 비트들만이 이들 파라미터들을 인코딩하는데 이용가능하며, 그렇지 않고, 천이 프레임 코딩이 나타나지 않더라도, 현재의 프레임은 양호한 참조를 제공하지 않을 수도 있다. 천이 프레임 코딩 모드의 불필요한 이용을 취소하는 것은 이러한 문제점들을 감소시키는데 도움이 될 수도 있다. 그러므로, 천이 프레임 코딩 모드가 다른 코딩 모드보다는 현재의 프레임에 보다 적합하다고 검증하는 것이 바람직할 수도 있다.
천이 프레임 코딩의 이용이 스킵되거나 취소되는 경우, 이러한 동작이 후속하는 유성음 프레임들에 대해 양호한 참조를 제공하는데 도움을 줄 수도 있듯이, 천이 프레임 코딩 모드를 이용하여, 다음에 첫 번째로 오는 적합한 프레임을 인코딩하는 것이 바람직할 수도 있다. 예를 들어, 그 프레임이 적어도 부분적으로 유성음이라면, 바로 그 다음의 프레임에 대해 천이 프레임 코딩을 강제하는 것이 바람직할 수도 있다.
천이 프레임 코딩의 필요성, 및/또는 천이 프레임 코딩의 프레임에 대한 적합성은, 현재의 프레임 분류, 이전의 프레임 분류, (예컨대, 본 명세서에서 언급한 3GPP2 문서 C.S0014-C 의 섹션 4.6.3 에 기재되어 있는 일 예인, 상관 기반의 기술과 같은 피치 추정 루틴에 의해 결정되는) 초기의 래그 값, (방법 (M300) 과 같은 펄스 검출 동작에 의해 결정되는) 변형된 래그 값, 이전 프레임의 래그 값, 및/또는 NACF 값들과 같은 기준에 기초하여 결정될 수도 있다.
양호한 참조 없이 QPPP 를 이용한 결과는 예측불가능할 수도 있으므로, 유성음 세그먼트의 시작부 근방에서는, 천이 프레임 코딩 모드를 이용하는 것이 바람직할 수도 있다. 그러나, 몇몇 경우들에서는, QPPP 가, 천이 프레임 코딩 모드보다 더 양호한 결과를 제공할 것으로 예상될 수도 있다. 예를 들어, 몇몇 경우들에서, 천이 프레임 코딩 모드의 이용은, 열악한 참조를 산출하거나 또는 심지어는 QPPP 를 이용할 때보다 더 부적당한 결과를 야기할 것으로 예상될 수도 있다.
현재의 프레임에 필요하지 않다면, 천이 프레임 코딩을 스킵하는 것이 바람직할 수도 있다. 이러한 경우, QPPP 와 같은 유성음 코딩 모드로 디폴팅하는 것 (예컨대, QPPP 의 연속성을 유지하는 것) 이 바람직할 수도 있다. 천이 프레임 코딩 모드의 불필요한 이용은, (예컨대, 이들 특징에 대한 한정된 비트 예정량 (bit budget) 으로 인해) 이후의 프레임에서의 펄스 이득 및/또는 펄스 형상에 있어서의 부정합의 문제점들을 초래할 수도 있다. QPPP 와 같이, 한정된 시간-동조성을 갖는 유성음 코딩 모드는, 이러한 에러들에 특히 민감할 수도 있다.
천이 프레임 코딩 방식을 이용하여 프레임을 인코딩한 후, 이 인코딩된 결과를 검사하여, 인코딩된 결과가 열악하다면 프레임에 대한 천이 프레임 코딩의 이용을 거절하는 것이 바람직할 수도 있다. 주로 무성음이고 종료부 근방에서만 유성음이 되는 프레임에 있어서, 천이 코딩 모드 (transitional coding mode) 는 무성음부를 펄스들 없이 (예컨대, 0 또는 낮은 값으로) 인코딩하도록 구성될 수도 있고, 또는 천이 코딩 모드는 무성음부의 적어도 일부를 펄스들로 채우도록 구성될 수도 있다. 무성음부가 펄스들 없이 인코딩된다면, 프레임은 찰깍하는 소리 또는 디코딩된 신호에서의 불연속을 생성할 수도 있다. 이러한 경우에는, 대신에, 프레임에 대해 NELP 코딩 방식을 이용하는 것이 바람직할 수도 있다. 그러나, 유성음 세그먼트 상에서 NELP 를 이용하는 것은 왜곡을 야기할 수도 있으므로, 유성음 세그먼트 상에서는 NELP 를 이용하는 것을 피하는 것이 바람직할 수도 있다. 천이 코딩 모드가 프레임에 대해 취소된다면, 대부분의 경우에는, 무성음 코딩 모드 (예컨대, QNELP) 보다는 유성음 코딩 모드 (예컨대, QPPP) 를 이용하여 프레임을 인코딩하는 것이 바람직할 수도 있다. 전술한 바와 같이, 천이 코딩 모드를 이용하기 위한 선택은 천이 코딩 모드와 유성음 코딩 모드 사이에서의 선택으로서 구현될 수도 있다. 양호한 참조 없이 QPPP 를 이용한 결과는 예측불가능할 수도 있기는 하지만 (예컨대, 프레임의 위상이 선행하는 무성음 프레임으로부터 도출될 수도 있기는 하지만), 찰칵하는 소리 또는 디코딩된 신호에서의 불연속을 생성하지 않을 수도 있다. 이러한 경우, 천이 코딩 모드의 이용은 그 다음 프레임까지 연기될 수도 있다.
프레임들 사이에서의 피치 불연속이 검출될 때 프레임에 대해 천이 코딩 모드를 이용하는 결정을 오버라이드 (override) 하는 것이 바람직할 수도 있다. 일 예에서, 작업 (T710) 은 이전의 프레임으로 피치 연속성에 대해 검사 (예컨대, 피치 더블링 에러에 대해 검사) 한다. 프레임이 유성음 또는 과도형으로서 분류되고, 펄스 검출 루틴에 의해 현재의 프레임으로 지시되는 래그 값이 펄스 검출 루틴에 의해 이전의 프레임으로 지시되는 래그 값보다 훨씬 더 작다면 (예컨대, 펄스 검출 루틴에 의해 이전의 프레임으로 지시되는 래그 값의 약 1/2, 1/3, 또는 1/4), 작업은 천이 코딩 모드를 이용하는 결정을 취소한다.
다른 예에서, 작업 (T720) 은 이전의 프레임과 비교되는 피치 오버플로에 대해 검사한다. 피치 오버플로는, 스피치가 최대 허용가능 래그보다 더 높은 래그 값을 발생시키는 매우 작은 피치 주파수를 가질 때 발생한다. 이러한 작업은 이전의 프레임에 대한 래그 값이 크고 (예컨대, 100 샘플들 보다 많고), 피치 추정치에 의해 현재의 프레임으로 지시되는 래그 값들 및 펄스 검출 루틴들 양자 모두가 이전의 피치보다 훨씬 더 작다면 (예컨대 50 % 보다 더 적다면), 천이 코딩 모드를 이용하는 결정을 취소하도록 구성될 수도 있다. 이러한 경우, 프레임의 가장 큰 피치 펄스만을 단일 펄스로서 유지하는 것이 또한 바람직할 수도 있다. 이와 달리, 프레임은 이전의 래그 추정치 및 유성음 코딩 모드 및/또는 상대적 코딩 모드 (예컨대, 작업 (E200), QPPP) 를 이용하여 코딩될 수도 있다.
2 개의 상이한 루틴들로부터의 결과들 중 불일치가 검출되는 경우, 프레임에 대해 천이 코딩 모드를 이용하는 결정을 오버라이드하는 것이 바람직할 수도 있다. 일 예에서, 작업 (T730) 은, 강한 NACF 의 존재시에, 피치 추정 루틴 (예컨대, 본 명세서에서 언급한, 예를 들어 3GPP2 문서 C.S0014-C 의 섹션 4.6.3 에 기재된 바와 같은 상관 기반의 기술) 으로부터의 래그 값 및 펄스 검출 루틴 (예컨대, 방법 (M300)) 으로부터의 추정된 피치 주기 사이에서의 일치에 대해 검사한다. 검출된 제 2 펄스에 대한 피치에서의 매우 높은 NACF 는 2 개의 래그 추정치들 사이에서의 불일치가 예측되지 않는 그러한 것인 양호한 피치 추정치를 나타낸다. 이러한 작업은, 펄스 검출 루틴으로부터의 래그 추정치가 피치 추정 루틴으로부터의 래그 추정치와 매우 상이하다면 (예컨대, 1.6 배, 또는 160 % 보다 더 크다면), 천이 코딩 모드를 이용하는 결정을 취소하도록 구성될 수도 있다.
다른 예에서, 작업 (T740) 은 래그 값 및 단말 펄스의 위치 사이에서의 일치에 대해 검사한다. (피크들 사이의 거리의 평균일 수도 있는) 래그 추정치를 이용하여 인코딩되는 피크 위치들 중 하나 이상이 대응 실제 피크 위치들과 너무 상이한 경우에는, 천이 프레임 코딩 모드를 이용하는 결정을 취소하는 것이 바람직할 수도 있다. 작업 (T740) 은 단말 펄스의 위치 및 펄스 검출 루틴에 의해 계산되는 래그 값을 이용하여, 재구성된 위치들의 각각을 펄스 검출 알고리즘에 의해 검출되는 실제 피치 피크 위치들과 비교하고, 이 차이들 중 어느 하나가 너무 크다면 (8 개의 샘플들보다 더 크다면) 천이 프레임 코딩을 이용하는 결정을 취소하도록 구성될 수도 있다.
추가적인 예에서, 작업 (T750) 은 래그 값과 펄스 위치 사이의 일치에 대해 검사한다. 이러한 작업은, 최종 피치 피크가 최종 프레임 경계로부터 떨어져 있는 하나의 래그 주기보다 더 많다면, 천이 프레임 코딩을 이용하는 결정을 취소하도록 구성될 수도 있다. 예를 들어, 이러한 작업은, 최종 피치 펄스의 위치와 프레임의 종료부 사이의 거리가 최종 래그 추정치 (예컨대, 추정 작업 (L200) 및/또는 방법 (M300) 에 의해 계산되는 래그 값) 보다 더 크다면, 천이 프레임 코딩을 이용하는 결정을 취소하도록 구성될 수도 있다. 이러한 조건은 펄스 오검출 또는 아직 안정화되지 않은 래그를 나타낼 수도 있다.
현재의 프레임이 2 개의 펄스들을 가지며 과도형으로서 분류되고, 2 개의 펄스들에 대한 피크들의 제곱 크기들의 비율이 큰 경우, 2 개의 펄스들의 상관 결과가 대응 임계값보다 더 크지 않다면 (다르게는, 대응 임계값보다 더 작지 않다면) 전체 래그 값에 걸친 2 개의 펄스들을 상관시키고 더 작은 피크를 거절하는 것이 바람직할 수도 있다. 더 작은 피크가 거절된다면, 프레임에 대한 천이 프레임 코딩을 이용하는 결정을 취소하는 것이 바람직할 수도 있다.
도 76 은 프레임에 대한 천이 프레임 코딩을 이용하는 결정을 취소하는데 이용될 수도 있는 2 개의 루틴들에 대한 코드 리스팅을 나타낸다. 이 리스팅에서, mod_lag 는 펄스 검출 루틴으로부터의 래그 값을 나타내고; orig_lag 는 피치 추정 루틴으로부터의 래그 값을 나타내고; pdelay_transient_coding 은 이전의 프레임에 대한 펄스 검출 루틴으로부터의 래그 값을 나타내고; PREV_TRANSIENT_FRAME_E 는 천이 코딩 모드가 이전의 프레임에 대해 이용되었는지의 여부를 나타내고; loc[0] 은 프레임의 최종 피치 피크의 위치를 나타낸다.
도 77 은 천이 프레임 코딩을 이용하는 결정을 취소하는데 이용될 수도 있는 4 가지 상이한 조건들을 나타낸다. 이 표에서, curr_mode 는 현재의 프레임 분류를 나타내고; prev_mode 는 이전의 프레임에 대한 프레임 분류를 나타내고; number_of_pulses 는 현재의 프레임에서의 펄스들의 수를 나타내고; prev_no_of_pulses 는 이전의 프레임에서의 펄스들의 수를 나타내고; pitch_doubling 은 피치 더블링 에러가 현재 프레임에서 검출되었는지의 여부를 나타내고; delta_lag_intra 는 피치 추정 루틴 (예컨대, 본 명세서에서 언급한, 예를 들어 3GPP2 문서 C.S0014-C 의 섹션 4.6.3 에 설명된 바와 같은 상관 기반의 기술) 및 예를 들어 방법 (M300) 과 같은 펄스 검출 루틴 사이의 차이의 절대값 (예컨대, 정수) (또는, 피치 더블링이 검출되었다면, 피치 추정 루틴으로부터의 래그 값의 절반 및 펄스 검출 루틴으로부터의 래그 값 사이의 차이의 절대값) 을 나타내고; delta_lag_inter 는 이전 프레임의 최종 래그 값과 현재 프레임에 대한 피치 추정 루틴으로부터의 래그 값 (또는 피치 더블링이 검출된다면, 래그 값의 절반) 사이의 차이의 절대값 (예컨대, 플로팅 포인트) 을 나타내고; NEED_TRANS 는 현재 프레임에 대한 천이 프레임 코딩 모드의 이용이 이전 프레임의 코딩 동안에 나타났는지의 여부를 나타내고; TRANS_USED 는 천이 코딩 모드가 이전 프레임을 인코딩하는데 이용되었는지의 여부를 나타내고; fully_voiced 는, 최종 래그 값에 의해 분할되는, 단말 피치 펄스의 위치와 프레임의 반대 종료부 사이의 거리의 정수부가 number_of_pulses 마이너스 1 과 동일한지의 여부를 나타낸다. 임계치들에 대한 값들의 예는, T1A = [0.1 * (펄스 검출 루틴으로부터의 래그 값) + 0.5], T1B = [0.05 * (펄스 검출 루틴으로부터의 래그 값) + 0.5], T2A = [0.2 * (이전 프레임에 대한 최종 래그 값)], 및 T2B = [0.15 * (이전 프레임에 대한 최종 래그 값)] 이다.
프레임 재분류기 (RC10) 는, 천이 코딩 모드를 이용하는 결정을 취소하기 위해 작업들 (T710-T750), 도 76 에서의 코딩 리스팅, 및 도 77 에 나타낸 조건들과 같은 전술한 제공형태들 중 하나 이상을 포함하도록 구현될 수도 있다. 예를 들어, 프레임 분류기 (RC10) 는 도 78 에 나타낸 바와 같이 방법 (M700) 을 수행하여, 테스트 작업들 (T710-T750) 중 어느 하나가 실패한다면 천이 코딩 모드를 이용하는 결정을 취소하도록 구현될 수도 있다.
도 79a 는 작업들 (E510, E520, E530, 및 E540) 을 포함하는 일반적인 구성에 따라 스피치 신호 프레임을 인코딩하는 방법 (M900) 의 흐름도를 나타낸다. 작업 (E510) 은 프레임의 잔차 (예컨대, LPC 잔차) 의 피크 에너지를 계산한다. 작업 (E510) 은 가장 큰 진폭을 갖는 샘플 (다르게는, 가장 큰 크기를 갖는 샘플) 의 값을 제곱함으로써 피크 에너지를 계산하도록 구성될 수도 있다. 작업 (E520) 은 잔차의 평균 에너지를 계산한다. 작업 (E520) 은 샘플들의 제곱 값들을 합산하고 이 합산 결과를 프레임에서의 샘플들의 수로 나눔으로써 평균 에너지를 계산하도록 구성될 수도 있다. 계산된 피크 에너지와 계산된 평균 에너지 사이의 관계에 기초하여, 작업 (E530) 은 잡음-여기 코딩 방식 (예컨대, 본 명세서에서 설명된 바와 같은 NELP 방식) 또는 (예컨대, 작업 (E100) 을 참조하여 본 명세서에서 설명된 바와 같은) 비차동 피치 프로토타입 코딩 방식 중 어느 일방을 선택한다. 작업 (E540) 은 작업 (E530) 에 의해 선택된 코딩 방식에 따라 프레임을 인코딩한다. 작업 (E530) 이 비차동 피치 프로토타입 코딩 방식을 선택한다면, 작업 (E540) 은 프레임의 피치 펄스의 시간-도메인 형상의 표현들, 프레임의 피치 펄스의 위치, 및 프레임의 추정된 피치 주기를 포함하는 인코딩된 프레임을 생성하는 것을 포함한다. 예를 들어, 작업 (E540) 은 본 명세서에서 설명된 바와 같은 작업 (E100) 의 인스턴스를 포함하도록 구현될 수도 있다.
통상적으로, 작업 (E530) 의 기초가 되는, 계산된 피크 에너지와 계산된 평균 에너지 사이의 관계는, 피크-투-RMS 에너지의 비율이다. 이러한 비율은 작업 (E530) 에 의해 또는 방법 (M900) 의 다른 작업에 의해 계산될 수도 있다. 코딩 방식의 일부로서, 작업 (E530) 은 이 비율을 하나 이상의 다른 파라미터들의 현재 값에 따라 변경될 수도 있는 임계값과 비교하도록 구성될 수도 있다. 예를 들어, 도 64-도 67, 도 69, 및 도 70 은, 다른 파라미터들의 값들에 따라 상이한 값들 (e.g., 14, 16, 24, 25, 35, 40, 또는 60) 이 이 임계값으로 이용되는 예들을 나타낸다.
도 79b 는 방법 (M900) 의 구현형태 (M910) 의 흐름도를 나타낸다. 이 경우, 작업 (E530) 은, 피크 에너지와 평균 에너지 사이의 관계에 기초하여 그리고 하나 이상의 다른 파라미터 값들에도 또한 기초하여, 코딩 방식을 선택하도록 구성된다. 방법 (M910) 은 프레임에서의 피치 피크들의 수 (작업 (E550)) 및/또는 프레임의 SNR (작업 (E560)) 과 같은 부가적인 파라미터들의 값들을 계산하는 하나 이상의 작업을 포함한다. 코딩 방식 선택 결정의 일부로서, 작업 (E530) 은 이러한 파라미터 값을 하나 이상의 다른 파라미터들의 현재 값에 따라 변경될 수도 있는 임계값과 비교하도록 구성될 수도 있다. 도 65 및 도 66 은 상이한 임계값들 (예컨대, 4 또는 5) 이 작업 (E550) 에 의해 계산되는 현재의 피크 카운트 값을 추정하는데 이용되는 예들을 나타낸다. 작업 (E550) 은 본 명세서에서 설명된 바와 같은 방법 (M300) 의 인스턴스로서 구현될 수도 있다. 작업 (E560) 은 프레임의 SNR 또는 저대역부 또는 고대역부와 같은 프레임의 일부의 SNR (예컨대, 도 51 에 나타낸 바와 같은 curr_ns_snr[O] or curr_ns_snr[1]) 을 계산하도록 구성될 수도 있다. 예를 들어, 작업 (E560) 은 curr_ns_snr[O] (즉, 0-2 kHz 대역의 SNR) 을 계산하도록 구성될 수도 있다. 특정한 일 예에서, 작업 (E530) 은, 도 65 또는 도 67 의 조건들 중 어느 하나, 또는 도 66 의 최우측 7 개의 조건들 중 어느 하나에 따라, 잡음-여기 코딩 방식을 선택하도록 구성되지만, curr_ns_snr[O] 의 값이 임계값 (예컨대, 25 dB) 보다 더 작지 않은 경우에 한하여 그러하다.
도 80a 는 작업들 (E570 및 E580) 을 포함하는 방법 (M900) 의 구현형태 (M920) 의 흐름도를 나타낸다. 작업 (E570) 은 스피치 신호의 그 다음 프레임 ("제 2 프레임") 이 유성음 (예컨대, 고도록 주기적) 임을 결정한다. 예를 들어, 작업 (E570) 은 제 2 프레임 상에서 본 명세서에 설명된 바와 같은 EVRC 분류의 버전을 수행하도록 구성될 수도 있다. 작업 (E530) 이 제 1 프레임 (즉, 작업 (E540) 에서 인코딩된 프레임) 에 대해 잡음-여기 코딩 방식을 선택했다면, 작업 (E580) 은 비차동 피치 프로토타입 코딩 방식에 따라 제 2 프레임을 인코딩한다. 작업 (E580) 은 본 명세서에서 설명된 바와 같은 작업 (E100) 의 인스턴스로서 구현될 수도 있다.
방법 (M920) 은 또한 제 2 프레임의 바로 다음에 오는 제 3 프레임 상에서 차동 인코딩 동작을 수행하는 작업을 포함하도록 구현될 수도 있다. 이러한 작업은 (A) 제 3 프레임의 피치 펄스 형상과 제 2 프레임의 피치 펄스 형상 사이의 차동 및 (B) 제 3 프레임의 피치 주기와 제 2 프레임의 피치 주기 사이의 차동의 표현들을 포함하는 인코딩된 프레임을 생성하는 것을 포함할 수도 있다. 이러한 작업은 본 명세서에서 설명된 바와 같은 작업 (E200) 의 인스턴스로서 구현될 수도 있다.
도 80b 는 스피치 신호 프레임을 인코딩하는 장치 (MF900) 의 블록도를 나타낸다. 장치 (MF900) 는, (예컨대, 작업 (E510) 의 각종 구현형태들을 참조하여 전술한 바와 같은) 피크 에너지를 계산하는 수단 (FE510), (예컨대, 작업 (E520) 의 각종 구현형태들을 참조하여 전술한 바와 같은) 평균 에너지 (FE520) 를 계산하는 수단 (FE520), (예컨대, 작업 (E530) 의 각종 구현형태들을 참조하여 전술한 바와 같은) 코딩 방식 (FE530) 을 선택하는 수단, 및 (예컨대, 작업 (E540) 의 각종 구현형태들을 참조하여 전술한 바와 같은) 프레임을 인코딩하는 수단 (FE540) 을 포함한다. 도 81a 는, (예컨대, 작업 (E550) 의 각종 구현형태들을 참조하여 전술한 바와 같은) 프레임 (FE550) 의 피치 펄스 피크들의 수를 계산하는 수단, 및/또는 (예컨대, 작업 (E560) 의 각종 구현형태들을 참조하여 전술한 바와 같은) 프레임 (FE560) 의 SNR 을 계산하는 수단과 같은 하나 이상의 부가적인 수단을 포함하는 장치 (MF900) 의 구현형태 (MF910) 의 블록도를 나타낸다. 도 81b 는, (예컨대, 작업 (E570) 의 각종 구현형태들을 참조하여 전술한 바와 같은) 스피치 신호의 제 2 프레임이 유성음이라고 지시하는 수단 (FE570), 및 (예컨대, 작업 (E580) 의 각종 구현형태들을 참조하여 전술한 바와 같은) 제 2 프레임을 인코딩하는 수단 (FE580) 을 포함하는 장치 (MF900) 의 구현형태 (MF920) 의 블록도를 나타낸다.
도 82a 는 일반적인 구성에 따라 스피치 신호 프레임을 인코딩하는 장치 (A900) 의 블록도를 나타낸다. 장치 (A900) 는, (예컨대, 작업 (E510) 의 각종 구현형태들을 참조하여 전술한 바와 같은) 프레임의 피크 에너지를 계산하도록 구성된 피크 에너지 계산기 (710), 및 (예컨대, 작업 (E520) 의 각종 구현형태들을 참조하여 전술한 바와 같은) 프레임의 평균 에너지를 계산하도록 구성된 평균 에너지 계산기 (720) 를 포함한다. 장치 (A900) 는 잡음-여기 코딩 방식 (예컨대, NELP 코딩 방식) 에 따라 프레임을 인코딩하도록 선택가능하게 구성되는 제 1 프레임 인코더 (740) 를 포함한다. 인코더 (740) 는 본 명세서에서 설명된 바와 같이 무성음 프레임 인코더 (UE10) 또는 비주기 프레임 인코더 (E80) 의 인스턴스로서 구현될 수도 있다. 장치 (A900) 는 또한 비차동 피치 프로토타입 코딩 방식에 따라 프레임을 인코딩하도록 선택가능하게 구성되는 제 2 프레임 인코더 (750) 를 포함한다. 인코더 (750) 는 프레임의 피치 펄스의 시간-도메인 형상, 프레임의 피치 펄스의 위치, 및 프레임의 추정된 피치 주기의 표현들을 포함하는 인코딩된 프레임을 생성하도록 구성된다. 인코더 (750) 는 본 명세서에서 설명된 바와 같이 프레임 인코더 (100), 장치 (A400), 또는 장치 (A650) 의 인스턴스로서 구현될 수도 있고, 그리고/또는 계산기들 (710 및/또는 720) 을 포함하도록 구현될 수도 있다. 장치 (A900) 는 또한 (예컨대, 작업 (E530) 의 각종 구현형태들을 참조하여 전술한 바와 같이) 프레임 인코더들 (740 및 750) 중 하나로 하여금 프레임을 선택가능하게 인코딩하도록 구성되는 코딩 방식 선택기 (730) 를 포함하며, 여기서, 선택은 계산된 피크 에너지와 계산된 평균 에너지 사이의 관계에 기초한다. 코딩 방식 선택기 (730) 는 본 명세서에서 설명된 바와 같은 코딩 방식 선택기 (C200 또는 C300) 의 인스턴스로서 구현될 수도 있고, 본 명세서에서 설명된 바와 같은 프레임 재분류기 (RC10) 의 인스턴스를 포함할 수도 있다.
스피치 인코더 (AE10) 는 장치 (A900) 를 포함하도록 구현될 수도 있다. 예를 들어, 스피치 인코더 (AE20, AE30, 또는 AE40) 의 코딩 방식 선택기 (C200) 는 본 명세서에서 설명된 바와 같은 코딩 방식 선택기 (730) 의 인스턴스를 포함하도록 구현될 수도 있다.
도 82b 는 장치 (A900) 의 구현형태 (A910) 의 블록도를 나타낸다. 이 경우, 코딩 방식 선택기 (730) 는, (예컨대, 방법 (M910) 에서 구현되는 작업 (E530) 을 참조하여 본 명세서에서 설명된 바와 같이) 피크 에너지와 평균 에너지 사이의 관계에 기초하고 하나 이상의 다른 파라미터 값에도 또한 기초하여, 코딩 방식을 선택하도록 구성된다. 장치 (A910) 는 부가적인 파라미터들의 값들을 계산하는 하나 이상의 엘리먼트를 포함한다. 예를 들어, 장치 (A910) 는 (예컨대, 작업 (E550) 또는 장치 (A300) 를 참조하여 전술한 바와 같이) 프레임에서의 피치 피크들의 수를 계산하도록 구성된 피치 펄스 피크 카운터 (760) 를 포함할 수도 있다. 추가적으로 또는 다르게는, 장치 (A910) 는 (예컨대, 작업 (E560) 을 참조하여 전술한 바와 같이) 프레임의 SNR 을 계산하도록 구성된 SNR 계산기 (770) 를 포함할 수도 있다. 코딩 방식 선택기 (730) 는 카운터 (760) 및/또는 SNR 계산기 (770) 를 포함하도록 구현될 수도 있다.
편의상, 장치 (A900) 을 참조하여 전술한 스피치 신호 프레임은 여기서 "제 1 프레임" 으로 지칭하고, 이 스피치 신호에서 그 다음에 오는 프레임은 "제 2 프레임" 으로 지칭하기로 한다. 코딩 방식 선택기 (730) 는 (예컨대, 방법 (M920) 에서 구현되는 작업 (E570) 을 참조하여 본 명세서에서 설명된 바와 같이) 제 2 프레임 상에서 프레임 분류 동작을 수행하도록 구성될 수도 있다. 예를 들어, 코딩 방식 선택기 (730) 는, 제 1 프레임에 대해 잡음-여기 코딩 방식을 선택하고 제 2 프레임이 유성음이라고 결정하는 것에 응답하여, 제 2 프레임 인코더 (750) 로 하여금 제 2 프레임을 인코딩하게 하도록 (즉, 차동 피치 프로토타입 코딩 방식에 따라) 구성될 수도 있다.
도 83a 는 (예컨대, 작업 (E200) 을 참조하여 본 명세서에서 설명된 바와 같이) 프레임 상에서 차동 인코딩 동작을 수행하도록 구성된 제 3 프레임 인코더 (780) 를 포함하는 장치 (A900) 의 구현형태 (A920) 의 블록도를 나타낸다. 환언하면, 인코더 (780) 는 (A) 현재 프레임의 피치 펄스 형상과 이전 프레임의 피치 펄스 형상 사이의 차동 및 (B) 현재 프레임의 피치 주기와 이전 프레임의 피치 주기 사이의 차동의 표현들을 포함하는 인코딩된 프레임을 생성하도록 구성된다. 장치 (A920) 는 인코더 (780) 가 스피치 신호에서의 제 2 프레임 바로 다음에 오는 제 3 프레임 상에서 차동 인코딩 동작을 수행하도록 구현될 수도 있다.
도 83b 는 작업들 (E610, E620, E630, 및 E640) 을 포함하는 일반적인 구성에 따라 스피치 신호 프레임을 인코딩하는 방법 (M950) 의 흐름도를 나타낸다. 작업 (E610) 은 프레임의 피치 주기를 추정한다. 작업 (E610) 은 본 명세서에서 설명된 바와 같은 작업 (E130, L200, E370, 또는 E410) 의 인스턴스로서 구현될 수도 있다. 작업 (E620) 은 제 1 값과 제 2 값 사이의 관계의 값을 계산하며, 여기서, 제 1 값은 추정된 피치 주기에 기초하고, 제 2 값은 프레임의 다른 파라미터에 기초한다. 계산된 값에 기초하여, 작업 (E630) 은 잡음-여기 코딩 방식 (예컨대, 본 명세서에서 설명된 바와 같은 NELP 방식) 또는 (예컨대, 작업 (E100) 을 참조하여 본 명세서에서 설명된 바와 같은) 비차동 피치 프로토타입 코딩 방식 중 어느 일방을 선택한다. 작업 (E640) 은 작업 (E630) 에 의해 선택된 코딩 방식에 따라 프레임을 인코딩한다. 작업 (E630) 이 비차동 피치 프로토타입 코딩 방식을 선택한다면, 작업 (E640) 은 프레임의 피치 펄스의 시간-도메인 형상, 프레임의 피치 펄스의 위치, 및 프레임의 추정된 피치 주기의 표현들을 포함하는 인코딩된 프레임을 생성하는 것을 포함한다. 예를 들어, 작업 (E640) 은 본 명세서에서 설명된 바와 같은 작업 (E100) 의 인스턴스를 포함하도록 구현될 수도 있다.
도 84a 는 방법 (M950) 의 구현형태 (M960) 의 흐름도를 나타낸다. 방법 (M960) 은 프레임의 다른 파라미터들을 계산하는 하나 이상의 작업을 포함한다. 방법 (M960) 은 프레임의 단말 피치 펄스의 위치를 계산하는 작업 (E650) 을 포함할 수도 있다. 작업 (E650) 은 본 명세서에서 설명된 바와 같은 작업 (E120, L1OO, E310, 또는 E460) 의 인스턴스로서 구현될 수도 있다. 단말 피치 펄스가 프레임의 최종 피치 펄스인 경우, 작업 (E620) 은 단말 피치 펄스와 프레임의 최후 샘플 사이의 거리가 추정된 피치 주기보다 더 크지 않다는 것을 확인하도록 구성될 수도 있다. 작업 (E650) 이 최후 샘플에 상대적인 펄스 위치를 계산한다면, 이 확인은 펄스 위치의 값들과 추정된 피치 주기를 비교함으로써 수행될 수도 있다. 예를 들어, 추정된 피치 주기를 이러한 펄스 위치로부터 차감한 것이 적어도 0 과 등가인 결과를 남긴다면, 조건은 확인된다. 단말 피치 펄스가 프레임의 초기 피치 펄스인 경우, 작업 (E620) 은 단말 피치 펄스와 프레임의 첫 번째 샘플 사이의 거리가 추정된 피치 주기보다 더 크지 않다는 것을 확인하도록 구성될 수도 있다. 이들의 경우 중 어느 일방에서, 확인이 실패한다면, 작업 (E630) 은 (작업 (T750) 을 참조하여 본 명세서에서 설명된 바와 같이) 잡음-여기 코딩 방식을 선택하도록 구성될 수도 있다.
단말 피치 펄스 위치 계산 작업 (E650) 이외에도, 방법 (M960) 은 프레임의 복수의 다른 피치 펄스들을 위치확인하는 작업 (E670) 을 포함할 수도 있다. 이 경우, 작업 (E650) 은 추정된 피치 주기 및 계산된 피치 펄스 위치에 기초한 복수의 피치 펄스 위치들을 계산하도록 구성될 수도 있고, 작업 (E620) 은, 위치확인된 피치 펄스들의 위치들이, 계산된 피치 펄스 위치들과 얼마나 양호하게 일치하는지를 추정하도록 구성될 수도 있다. 예를 들어, 작업 (E620) 이 (A) 위치확인된 피치 펄스의 위치 및 (B) 대응하는 계산된 피치 펄스 위치 사이의 차이들 중 어느 하나가 (작업 (T740) 을 참조하여 전술한 바와 같이) 8 개의 샘플들과 같은 임계값보다 더 크다면, 작업 (E630) 은 잡음-여기 코딩 방식을 선택하도록 구성될 수도 있다.
상기 예들 중 어느 일방에 추가적으로 또는 이와 달리, 방법 (M960) 은 프레임의 잔차 (예컨대, LPC 잔차) 의 자기 상관 값을 최대화하는 래그 값을 계산하는 작업 (E660) 을 포함할 수도 있다. 이러한 래그 값 (또는 "피치 지연") 의 계산은 상기 언급한 3GPP2 문서 C.S0014-C 의 섹션 4.6.3 (pp. 4-44 내지 4-49) 에 설명되어 있으며, 이 섹션은 이러한 계산의 예로서의 참조로써 본 명세서에 통합되어 있다. 이 경우, 작업 (E620) 은, 추정된 피치 주기가 계산된 래그 값의 지정 비율 (예컨대, 160%) 보다 더 크지 않다는 것을 확인하도록 구성될 수도 있다. 확인이 실패한다면, 작업 (E630) 은 잡음-여기 코딩 방식을 선택하도록 구성될 수도 있다. 방법 (M960) 의 관련 구현형태들에서, 작업 (E630) 은, (예컨대, 작업 (T730) 을 참조하여 전술한 바와 같이) 확인이 실패하고 현재의 프레임에 대한 하나 이상의 NACF 값들도 또한 충분히 높다면, 잡음-여기 코딩 방식을 선택하도록 구성될 수도 있다.
상기 예들 중 어느 하나에 추가적으로 또는 이와 달리, 작업 (E620) 은, 추정된 피치 주기에 기초한 값을 스피치 신호의 이전 프레임 (예컨대, 현재 프레임 전의 최후 프레임) 의 피치 주기와 비교하도록 구성될 수도 있다. 이러한 경우, 작업 (E630) 은, (작업 (T710) 을 참조하여 전술한 바와 같이) 추정된 피치 주기가 이전 프레임의 피치 주기보다 훨씬 더 작다면 (예컨대, 이전 프레임의 피치 주기의 약 1/2, 1/3, 또는 1/4), 잡음-여기 코딩 방식을 선택하도록 구성될 수도 있다. 추가적으로 또는 이와 달리, (작업 (T720) 을 참조하여 전술한 바와 같이) 이전의 피치 주기가 크고 (예컨대, 100 개의 샘플들보다 더 많고) 추정된 피치 주기가 이전의 피치 주기의 절반보다 더 작다면, 작업 (E630) 은 잡음-여기 코딩 방식을 선택하도록 구성될 수도 있다.
도 84b 는 작업들 (E680 및 E690) 을 포함하는 방법 (M950) 의 구현형태 (M970) 의 흐름도를 나타낸다. 작업 (E680) 은 스피치 신호의 다음 프레임 ("제 2 프레임") 이 유성음 (예컨대, 고도로 주기적) 이라고 결정한다. (이 경우, 작업 (E640) 에서 인코딩된 프레임은 "제 1 프레임"으로 지칭된다.) 예를 들어, 작업 (E680) 은 제 2 프레임 상에서 본 명세서에 기재된 EVRC 분류의 버전을 수행하도록 구성될 수도 있다. 작업 (E630) 이 제 1 프레임에 대해 잡음-여기 코딩 방식을 선택한다면, 작업 (E690) 은 비차동 피치 프로토타입 코딩 방식에 따라 제 2 프레임을 인코딩한다. 작업 (E690) 은 본 명세서에 기재된 바와 같은 작업 (E100) 의 인스턴스로서 구현될 수도 있다.
방법 (M970) 은 또한 제 2 프레임 바로 다음에 오는 제 3 프레임 상에서 차동 인코딩 동작을 수행하는 작업을 포함하도록 구현될 수도 있다. 이러한 작업은 (A) 제 3 프레임의 피치 펄스 형상과 제 2 프레임의 피치 펄스 형상 사이의 차동 및 (B) 제 3 프레임의 피치 주기와 제 2 프레임의 피치 주기 사이의 차동의 표현들을 포함하는 인코딩된 프레임을 생성하는 것을 포함할 수도 있다. 이러한 작업은 본 명세서에 기재된 바와 같은 작업 (E200) 의 인스턴스로서 구현될 수도 있다.
도 85a 는 스피치 신호 프레임을 인코딩하는 장치 (MF950) 의 블록도를 나타낸다. 장치 (MF950) 는, (예컨대, 작업 (E610) 의 각종 구현형태들을 참조하여 전술한 바와 같이) 프레임의 피치 주기를 추정하는 수단 (FE610), (예컨대, 작업 (E620) 의 각종 구현형태들을 참조하여 전술한 바와 같이) (A) 추정된 피치 펄스에 기초한 제 1 값 및 (B) 프레임의 다른 파라미터에 기초한 제 2 값 사이의 관계의 값을 계산하는 수단 (FE620), (예컨대, 작업 (E630) 의 각종 구현형태들을 참조하여 전술한 바와 같이) 계산된 값에 기초하여 코딩 방식을 선택하는 수단 (FE630), 및 (예컨대, 작업 (E640) 의 각종 구현형태들을 참조하여 전술한 바와 같이) 선택된 코딩 방식에 따라 프레임을 인코딩하는 수단 (FE640) 을 포함한다.
도 85b 는, (예컨대, 작업 (E650) 의 각종 구현형태들을 참조하여 전술한 바와 같이) 프레임의 단말 피치 펄스의 위치를 계산하는 수단 (FE650), (예컨대, 작업 (E660) 의 각종 구현형태들을 참조하여 전술한 바와 같이) 프레임의 잔차의 자기 상관 값을 최대화하는 래그 값을 계산하는 수단 (FE660), 및/또는 (예컨대, 작업 (E670) 의 각종 구현형태들을 참조하여 전술한 바와 같이) 프레임의 복수의 다른 피치 펄스들을 위치확인하는 수단 (FE670) 과 같은, 하나 이상의 추가적인 수단을 포함하는 장치 (MF950) 의 구현형태 (MF960) 의 블록도를 나타낸다. 도 86a 는, (예컨대, 작업 (E680) 의 각종 구현형태들을 참조하여 전술한 바와 같이) 스피치 신호의 제 2 프레임이 유성음이라고 나타내는 수단 (FE680), 및 (예컨대, 작업 (E690) 의 각종 구현형태들을 참조하여 전술한 바와 같이) 제 2 프레임을 인코딩하는 수단 (FE690) 을 포함하는 장치 (MF950) 의 구현형태 (MF970) 의 블록도를 나타낸다.
도 86b 는 일반적인 구성에 따라 스피치 신호 프레임을 인코딩하는 장치 (A950) 의 블록도를 나타낸다. 장치 (A950) 는 프레임의 피치 주기를 추정하도록 구성된 피치 주기 추정기 (810) 를 포함한다. 추정기 (810) 는 본 명세서에 기재된 바와 같은 추정기 (130, 190, A320, 또는 540) 의 인스턴스로서 구현될 수도 있다. 장치 (A950) 는 또한 (A) 추정된 피치 주기에 기초한 제 1 값 및 (B) 프레임의 다른 파라미터에 기초한 제 2 값 사이의 관계의 값을 계산하도록 구성된 계산기 (820) 를 포함한다. 장치 (M950) 는 잡음-여기 코딩 방식 (예컨대, NELP 코딩 방식) 에 따라 프레임을 인코딩하도록 선택가능하게 구성되는 제 1 프레임 인코더 (840) 를 포함한다. 인코더 (840) 는 본 명세서에 기재된 바와 같은 무성음 프레임 인코더 (UE10) 또는 비주기적 프레임 인코더 (E80) 의 인스턴스로서 구현될 수도 있다. 장치 (A950) 는 또는 차동 피치 프로토타입 코딩 방식에 따라 프레임을 인코딩하도록 선택가능하게 구성되는 제 2 프레임 인코더 (850) 를 포함한다. 인코더 (850) 는 프레임의 피치 펄스의 시간-도메인 형상, 프레임의 피치 펄스의 위치, 및 프레임의 추정된 피치 주기의 표현들을 포함하는 인코딩된 프레임을 생성하도록 구성된다. 인코더 (850) 는, 본 명세서에 기재된 바와 같은 인코더 (100), 장치 (A400), 또는 장치 (A650) 의 인스턴스로서 구현될 수도 있고, 그리고/또는 추정기 (810) 및/또는 계산기 (820) 를 포함하도록 구현될 수도 있다. 장치 (A950) 는 또한 (예컨대, 작업 (E630) 의 각종 구현형태들을 참조하여 전술한 바와 같이) 계산된 값에 기초하여, 프레임 인코더들 (840 및 850) 중 하나로 하여금 프레임을 선택가능하게 인코딩하게 하도록 구성되는 코딩 방식 선택기 (830) 를 포함한다. 코딩 방식 선택기 (830) 는 본 명세서에 기재된 바와 같은 코딩 방식 선택기 (C200 또는 C300) 의 인스턴스로서 구현될 수도 있고, 본 명세서에 기재된 바와 같은 프레임 분류기 (RC10) 의 인스턴스를 포함할 수도 있다.
스피치 인코더 (AE10) 는 장치 (A950) 를 포함하도록 구현될 수도 있다. 예를 들어, 스피치 인코더 (AE20, AE30, 또는 AE40) 의 코딩 방식 선택기 (C200) 는, 본 명세서에 기재된 바와 같은 코딩 방식 선택기 (830) 의 인스턴스를 포함하도록 구현될 수도 있다.
도 87a 는 장치 (A950) 의 구현형태 (A960) 의 블록도를 나타낸다. 장치 (A960) 는 프레임의 다른 파라미터들을 계산하는 하나 이상의 엘리먼트들을 포함한다. 장치 (A960) 는 프레임의 단말 피치 펄스의 위치를 계산하도록 구성되는 피치 펄스 위치 계산기 (860) 를 포함할 수도 있다. 피치 펄스 위치 계산기 (860) 는 본 명세서에 기재된 바와 같은 계산기 (120, 160, 또는 590) 또는 피크 검출기 (150) 의 인스턴스로서 구현될 수도 있다. 단말 피치 펄스가 프레임의 최종 피치 펄스인 경우, 계산기 (820) 는 단말 피치 펄스와 프레임의 최종 샘플 사이의 거리가 추정된 피치 주기보다 더 크지 않다고 확인하도록 구성될 수도 있다. 피치 펄스 위치 계산기 (860) 가 최후 샘플에 상대적인 펄스 위치를 계산한다면, 계산기 (820) 는 펄스 위치 및 추정된 피치 주기의 값들을 비교함으로써 이 확인을 수행할 수도 있다. 예를 들어, 이러한 펄스 위치로부터 추정된 피치 주기를 차감한 것이 적어도 0 과 등가인 결과를 남긴다면, 이 조건은 확인된다. 단말 피치 펄스가 프레임의 초기 피치 펄스인 경우, 계산기 (820) 는 단말 피치 펄스와 프레임의 첫 번째 펄스 사이의 거리가 추정된 피치 주기보다 크지 않다고 확인하도록 구성될 수도 있다. 이들 경우 중 어느 일방에서, (예컨대, 작업 (T750) 을 참조하여 본 명세서에 설명된 바와 같이) 확인이 실패한다면, 코딩 방식 선택기 (830) 는 잡음-여기 코딩 방식을 선택하도록 구성될 수도 있다.
단말 피치 펄스 위치 계산기 (860) 외에도, 장치 (A960) 는 프레임의 복수의 다른 피치 펄스들을 위치확인하는 피치 펄스 위치확인기 (880) 를 포함할 수도 있다. 이 경우, 장치 (A960) 는, 추정된 피치 주기 및 계산된 피치 펄스 위치에 기초하여, 복수의 피치 펄스 위치들을 계산하도록 구성된 제 2 피치 펄스 위치 계산기 (885) 를 포함할 수도 있고, 계산기 (820) 는 위치확인된 피치 펄스들의 위치가 계산된 피치 펄스 위치들과 얼마나 양호하게 일치하는지를 평가하도록 구성될 수도 있다. 예를 들어, 계산기 (820) 가 (A) 위치확인된 피치 펄스의 위치 및 (B) 대응하는 계산된 피치 펄스 위치 사이의 차이들 중 어느 하나가 임계값, 이를테면 8 개의 샘플들보다 더 크다고 결정한다면, (작업 (T740) 을 참조하여 전술한 바와 같이) 코딩 방식 선택기 (830) 는 잡음-여기 코딩 방식을 선택하도록 구성될 수도 있다.
상기 예들 중 어느 일방에 추가적으로 또는 이와 달리, (예컨대, 작업 (E660) 을 참조하여 전술한 바와 같이) 장치 (A960) 는 프레임의 잔차의 자기 상관 값을 최대화하는 래그 값을 계산하도록 구성된 래그 값 계산기 (870) 를 포함할 수도 있다. 이 경우, 계산기 (820) 는 추정된 피치 주기가 계산된 래그 값의 지정 부분 (예컨대 160%) 보다 더 크지 않다고 확인하도록 구성될 수도 있다. 확인이 실패한다면 코딩 방식 선택기 (830) 는 잡음-여기 코딩 방식을 선택하도록 구성될 수도 있다. 장치 (A960) 의 관련 구현형태들에서, (예컨대, 작업 (T730) 을 참조하여 전술한 바와 같이) 확인이 실패하고 현재 프레임에 대한 하나 이상의 NACF 값도 또한 충분이 높다면 코딩 방식 선택기 (830) 는 잡음-여기 코딩 방식을 선택하도록 구성될 수도 있다.
상기 예들 중 어느 일방에 추가적으로 또는 이와 달리, 계산기 (820) 는 추정된 피치 주기에 기초한 값을 스피치 신호의 이전 프레임 (예컨대, 현재 프레임 전의 최후 프레임) 의 피치 주기와 비교하도록 구성될 수도 있다. 이러한 경우, (작업 (T710) 을 참조하여 전술한 바와 같이) 추정된 피치 주기가 이전 프레임의 피치 주기보다 훨씬 작다면 (이전 프레임의 피치 주기의 약 1/2, 1/3, 또는 1/4), 코딩 방식 선택기 (830) 는 잡음-여기 코딩 방식을 선택하도록 구성될 수도 있다. 추가적으로 또는 이와 달리, (예컨대, 작업 (T720) 을 참조하여 전술한 바와 같이) 이전의 피치 주기가 크고 (100 개의 샘플들보다 많은 샘플들), 추정된 피치 주기가 이전의 피치 주기의 절반보다 더 작은 경우, 코딩 방식 선택기 (830) 는 잡음-여기 코딩 방식을 선택하도록 구성될 수도 있다.
편의상, 장치 (A950) 를 참조하여 전술한 스피치 신호 프레임은, 여기서 "제 1 프레임" 으로 지칭되고, 이 스피치 신호에서 그 다음에 오는 프레임은 "제 2 프레임" 으로 지칭된다. (예컨대, 방법 (M960) 에서 구현되는 작업 (E680) 을 참조하여 본 명세서에 설명된 바와 같이) 코딩 방식 선택기 (830) 는 제 2 프레임 상에서 프레임 분류 동작을 수행하도록 구성될 수도 있다. 예를 들어, 코딩 방식 선택기 (830) 는, 제 1 프레임에 대해 잡음-여기 코딩 방식을 선택하고 제 2 프레임이 유성음이라고 결정하는 것에 응답하여, 제 2 프레임 인코더 (850) 로 하여금 제 2 프레임을 인코딩하게 하도록 (즉, 비차동 피치 프로토타입 코딩 방식에 따라) 구성될 수도 있다.
도 87b 는 (예컨대, 작업 (E200) 을 참조하여 본 명세서에 설명된 바와 같이) 프레임 상에서 차동 인코딩 동작을 수행하도록 구성된 제 3 프레임 인코더 (890) 를 포함하는 장치 (A950) 의 구현형태 (A970) 의 블록도를 나타낸다. 환언하면, 인코더 (890) 는 (A) 현재 프레임의 피치 펄스 형상과 이전 프레임의 피치 펄스 형상 사이의 차동 및 (B) 현재 프레임의 피치 주기와 이전 프레임의 피치 주기 사이의 차동의 표현들을 포함하는 인코딩된 프레임을 생성하도록 구성된다. 인코더 (890) 가 스피치 신호에서 제 2 프레임의 바로 다음에 오는 제 3 프레임 상에서 차동 인코딩 동작을 수행하도록 장치 (A970) 가 구현될 수도 있다.
본 명세서에 기재된 바와 같은 방법 (예컨대, 방법 (MlOO, M200, M300, M400, M500, M550, M560, M600, M650, M700, M800, M900, 또는 M950), 또는 다른 루틴이나 코드 리스팅) 의 구현형태의 통상적인 애플리케이션에서, 논리 소자들의 어레이 (예컨대, 논리 게이트) 는 방법의 일 작업, 하나보다 많은 작업, 또는 심지어는 각종 작업들 모두를 수행하도록 구성된다. 하나 이상의 작업들 (가능한 한 모든 작업들) 은 또한, 논리 소자들의 어레이 (예컨대, 프로세서, 마이크로프로세서, 또는 다른 유한 상태 머신 (finite state machine)) 를 포함하는 머신 (예컨대, 컴퓨터) 에 의해 판독가능 및/또는 실행가능한 컴퓨터 프로그램 제품 (디스크, 플래시 또는 다른 비휘발성 메모리 카드, 반도체 메모리칩 등과 같은 하나 이상의 데이터 저장 매체) 에 내장된 코드 (예컨대, 명령들의 하나 이상의 세트들) 로서 구현될 수도 있다. 이러한 방법의 구현형태의 작업들은 또한, 하나보다 많은 이러한 어레이 또는 머신에 의해 수행될 수도 있다. 이들 구현형태 또는 다른 구현형태들에서, 작업들은 모바일 사용자 단말기 또는 이러한 통신 능력을 갖는 다른 디바이스와 같은 무선 통신용 디바이스 내에서 수행될 수도 있다. 이러한 디바이스는 (예컨대, VoIP (voice over Internet Protocol) 과 같은 하나 이상의 프로토콜을 이용하여) 회로-스위칭 및/또는 패킷-스위칭 네트워크들과 통신하도록 구성될 수도 있다. 예를 들어, 이러한 디바이스는 인코딩된 프레임들 (예컨대, 패킷들) 을 포함하는 신호를 송신하고 그리고/또는 이러한 신호를 수신하도록 구성된 RF 회로를 포함할 수도 있다. 이러한 디바이스는 또한, RF 송신 전 인코딩된 프레임들 또는 패킷들 상에서 하나 이상의 다른 동작, 이를테면 인터리빙 (interleaving), 펑처링 (puncturing), 컨벌루션 코딩 (convolutional coding), 에러 정정 코딩 및/또는 네트워크 프로토콜의 하나 이상의 레이어들을 적용하는 것을 수행하도록 구성될 수도 있으며, 그리고/또는 RF 수신 후 이러한 동작들 중 상보적 동작을 수행하도록 구성될 수도 있다.
본 명세서에 기재된 바와 같은 장치 (예컨대, 장치 (AlOO, A200, A300, A400, A500, A560, A600, A650, A700, A800, A900), 스피치 인코더 (AE20), 스피치 디코더 (AD20), 또는 이들이 엘리먼트들) 의 구현형태들의 각종 엘리먼트들은, 예를 들어 동일한 칩 상에 또는 칩셋에서의 2 개 이상의 칩들 중에 상주하는 전자 디바이스 및/또는 광학 디바이스로서 구현될 수도 있지만, 이러한 제한 없이 다른 배열들도 또한 의도된다. 이러한 장치의 하나 이상의 엘리먼트는, 하나 이상의 고정형 또는 프로그램가능형의 논리 소자 (예컨대, 트랜지스터, 게이트) 의 어레이, 이를테면 마이크로프로세서, 임베디드 프로세서 (embedded processor), IP 코어, 디지털 신호 프로세서, FPGA (field-programmable gate arrays), ASSP (application-specific standard products), 및 ASIC (application-specific integrated circuits) 상에서 실행하도록 배열되는 한 세트 이상의 명령들로서, 전체적으로 또는 부분적으로 구현될 수도 있다.
작업들을 수행하거나 또는 장치가 내장된 디바이스 또는 시스템의 다른 동작과 관련된 작업과 같은 장치의 동작과 직접 연관되지 않은 다른 세트들의 명령들을 수행하기 위해, 이러한 장치의 구현형태의 하나 이상의 엘리먼트가 이용되는 것이 가능하다. 본 명세서에 기재된 장치의 구현형태의 하나 이상의 엘리먼트들이 공동으로 구조를 갖는 것 (예컨대, 상이한 시간에 상이한 엘리먼트들에 대응하는 코드의 일부를 실행하는데 이용되는 프로세서, 상이한 시간에 상이한 엘리먼트들에 대응하는 작업들을 수행하도록 실행되는 한 세트의 명령들, 또는 상이한 시간에 상이한 엘리먼트들에 대해 동작들을 수행하는 전자 디바이스 및/또는 광학 디바이스의 배열) 도 또한 가능하다.
설명된 구성들의 상기 표현은 본 명세서에 개시된 방법들 및 다른 구조들을 당업자가 구성 또는 이용할 수 있게 하기 위해 제공된다. 본 명세서에 나타내고 설명된 흐름도들 및 다른 구조들은 단지 예시한 것에 불과하며, 또한 본 명세서의 범위 내에서 이들 구조의 다른 변경형태들이 존재한다. 이들 구성에 대한 각종 변형형태가 가능하며, 본 명세서에 나타낸 일반적인 원리들은 또한 다른 구성들에 적용될 수도 있다.
본 명세서에 기재된 구성들의 각각은 하드웨어에 내장된 (hard-wired) 회로로서, 주문형 집적회로 (application-specific integrated circuit) 로 제작된 회로 구성으로서, 또는 머신-판독가능형 코드로서 비휘발성 저장소에 로딩된 펌웨어 프로그램 혹은 데이터 저장 매체로부터 또는 데이터 저장 매체로 로딩된 소프트웨어 프로그램으로서, 전체적으로 또는 부분적으로 구현될 수도 있으며, 여기서 이러한 코드는 마이크로프로세서나 다른 디지털 신호 처리 유닛과 같은 논리 소자들의 어레이에 의해 실행가능한 명령들이다. 데이터 저장 매체는 (동적 RAM (random-access memory) 또는 정적 RAM, ROM (read-only memory), 및/또는 플래시 RAM 을 제한 없이 포함할 수도 있는) 반도체 메모리, 또는 강유전체 (ferroelectric) 메모리, 자기저항 (magnetoresistive) 메모리, 오보닉 (ovonic) 메모리, 중합체 (polymeric) 메모리, 또는 상변화 (phase-change) 메모리와 같은, 저장 엘리먼트들의 어레이; 또는 자기 디스크나 광학 디스크와 같은 디스크 매체일 수도 있다. 용어 "소프트웨어" 는 소스 코드, 어셈블리 언어 코드, 머신 코드, 이진 코드, 펌웨어, 매크로코드 (macrocode), 마이크로코드, 논리 소자들의 어레이에 의해 실행가능한 명령들의 임의의 한 세트 이상의 시퀀스들, 및 이러한 예들의 임의의 조합을 포함하는 것으로 이해되어야 한다.
본 명세서에 개시된 방법들의 각각은 또한 논리 소자들의 어레이 (예컨대, 프로세서, 마이크로프로세서, 마이크로제어기, 또는 다른 유한 상태 머신) 를 포함하는 머신에 의해 판독가능 및/또는 실행가능한 한 세트 이상의 명령들로서 (예를 들어, 상기 리스트되는 하나 이상의 데이터 저장 매체에) 효과적으로 내장될 수도 있다. 따라서, 본 명세서는 상기 나타낸 구성들에 한정되도록 의도된 것은 아니지만, 본 명세서에서 임의의 형식으로 개시된 원리들 및 신규한 특징들과 조화되는 가장 넓은 범위와 일치하며, 원래의 개시의 일부를 형성하는 출원시에 첨부된 청구항들을 포함하고 있다.

Claims (58)

  1. 스피치 신호 프레임을 인코딩하는 방법으로서,
    최대 크기를 갖는 상기 프레임의 샘플의 값을 제곱함으로써 상기 프레임의 잔차 (residual) 의 피크 에너지를 계산하는 단계;
    상기 프레임의 복수의 샘플들의 제곱 값들을 합하고 그 합을 상기 프레임의 샘플들의 개수로 나눔으로써 상기 잔차의 평균 에너지를 계산하는 단계;
    상기 계산된 피크 에너지 및 상기 계산된 평균 에너지 사이의 관계에 기초하여, (A) 잡음-여기 코딩 방식 (noise-excited coding scheme) 및 (B) 비차동 피치 프로토타입 코딩 방식 (nondifferential pitch prototype coding scheme) 의 세트로부터 하나를 선택하는 단계; 및
    상기 선택된 코딩 방식에 따라 상기 프레임을 인코딩하는 단계를 포함하고,
    상기 비차동 피치 프로토타입 코딩 방식에 따라 상기 프레임을 인코딩하는 단계는, 상기 프레임의 피치 펄스의 시간-도메인 형상, 상기 프레임의 피치 펄스의 위치, 및 상기 프레임의 추정된 피치 주기의 표현들을 포함하는 인코딩된 프레임을 생성하는 단계를 포함하는, 스피치 신호 프레임을 인코딩하는 방법.
  2. 제 1 항에 있어서,
    상기 잡음-여기 코딩 방식은 잡음-여기 선형 예측 (noise-excited linear prediction; NELP) 코딩 방식인, 스피치 신호 프레임을 인코딩하는 방법.
  3. 제 1 항에 있어서,
    상기 방법은 상기 프레임에서의 피치 펄스 피크들의 수를 계산하는 단계를 더 포함하고,
    상기 선택하는 단계는 상기 프레임에서의 피치 펄스 피크들의 계산된 수에 기초하는, 스피치 신호 프레임을 인코딩하는 방법.
  4. 제 3 항에 있어서,
    상기 방법은 상기 프레임에서의 피치 펄스 피크들의 계산된 수를 임계값과 비교하는 단계를 더 포함하고,
    상기 선택하는 단계는 상기 비교하는 단계의 결과에 기초하는, 스피치 신호 프레임을 인코딩하는 방법.
  5. 제 1 항에 있어서,
    상기 선택하는 단계는 상기 프레임의 적어도 일부의 신호대 잡음비에 기초하하는, 스피치 신호 프레임을 인코딩하는 방법.
  6. 제 5 항에 있어서,
    상기 선택하는 단계는 상기 프레임의 저대역부 (lowband portion) 의 신호대 잡음비에 기초하는, 스피치 신호 프레임을 인코딩하는 방법.
  7. 제 1 항에 있어서,
    상기 방법은,
    상기 스피치 신호에서의 상기 프레임 바로 다음에 오는 상기 스피치 신호의 제 2 프레임이 유성음이라고 결정하는 단계; 및
    상기 선택하는 단계가 상기 잡음-여기 코딩 방식을 선택한 경우, 상기 결정하는 단계에 응답하여, 상기 비차동 피치 프로토타입 코딩 방식에 따라 상기 제 2 프레임을 인코딩하는 단계를 더 포함하는, 스피치 신호 프레임을 인코딩하는 방법.
  8. 제 7 항에 있어서,
    상기 방법은, 상기 스피치 신호에서의 상기 제 2 프레임 바로 다음에 오는 상기 스피치 신호의 제 3 프레임 상에서 차동 인코딩 동작을 수행하는 단계를 더 포함하고,
    상기 제 3 프레임 상에서 차동 인코딩 동작을 수행하는 단계는, (A) 상기 제 3 프레임의 피치 펄스 형상과 상기 제 2 프레임의 피치 펄스 형상 사이의 차동 및 (B) 상기 제 3 프레임의 피치 주기와 상기 제 2 프레임의 피치 주기 사이의 차동의 표현들을 포함하는 인코딩된 프레임을 생성하는 단계를 포함하는, 스피치 신호 프레임을 인코딩하는 방법.
  9. 스피치 신호 프레임을 인코딩하는 장치로서,
    최대 크기를 갖는 상기 프레임의 샘플의 값을 제곱함으로써 상기 프레임의 잔차 (residual) 의 피크 에너지를 계산하는 수단;
    상기 프레임의 복수의 샘플들의 제곱 값들을 합하고 그 합을 상기 프레임의 샘플들의 개수로 나눔으로써 상기 잔차의 평균 에너지를 계산하는 수단;
    상기 계산된 피크 에너지 및 상기 계산된 평균 에너지 사이의 관계에 기초하여, (A) 잡음-여기 코딩 방식 (noise-excited coding scheme) 및 (B) 비차동 피치 프로토타입 코딩 방식 (nondifferential pitch prototype coding scheme) 의 세트로부터 하나를 선택하는 수단; 및
    상기 선택된 코딩 방식에 따라 상기 프레임을 인코딩하는 수단을 포함하고,
    상기 비차동 피치 프로토타입 코딩 방식에 따라 상기 프레임을 인코딩하는 것은, 상기 프레임의 피치 펄스의 시간-도메인 형상, 상기 프레임의 피치 펄스의 위치, 및 상기 프레임의 추정된 피치 주기의 표현들을 포함하는 인코딩된 프레임을 생성하는 것을 포함하는, 스피치 신호 프레임을 인코딩하는 장치.
  10. 제 9 항에 있어서,
    상기 잡음-여기 코딩 방식은 잡음-여기 선형 예측 (noise-excited linear prediction; NELP) 코딩 방식인, 스피치 신호 프레임을 인코딩하는 장치.
  11. 제 9 항에 있어서,
    상기 장치는 상기 프레임에서의 피치 펄스 피크들의 수를 계산하는 수단을 더 포함하고,
    상기 선택하는 수단은, 상기 프레임에서의 피치 펄스 피크들의 계산된 수에 기초하여, (A) 잡음-여기 코딩 방식 및 (B) 비차동 피치 프로토타입 코딩 방식의 상기 세트로부터 상기 하나를 선택하도록 구성되는, 스피치 신호 프레임을 인코딩하는 장치.
  12. 제 9 항에 있어서,
    상기 선택하는 수단은 상기 프레임의 저대역부 (lowband portion) 의 신호대 잡음비에 기초하여, (A) 잡음-여기 코딩 방식 및 (B) 비차동 피치 프로토타입 코딩 방식의 상기 세트로부터 상기 하나를 선택하도록 구성되는, 스피치 신호 프레임을 인코딩하는 장치.
  13. 제 9 항에 있어서,
    상기 장치는,
    상기 스피치 신호에서의 상기 프레임 바로 다음에 오는 상기 스피치 신호의 제 2 프레임이 유성음이라고 지시하는 수단; 및
    (A) 상기 선택하는 수단에 의한 상기 잡음-여기 코딩 방식의 선택 및 (B) 상기 지시하는 수단에 의한, 상기 제 2 프레임이 유성음이라는 지시에 응답하여, 상기 비차동 피치 프로토타입 코딩 방식에 따라 상기 제 2 프레임을 인코딩하는 수단을 더 포함하는, 스피치 신호 프레임을 인코딩하는 장치.
  14. 제 13 항에 있어서,
    상기 장치는, 상기 스피치 신호에서의 상기 제 2 프레임 바로 다음에 오는 상기 스피치 신호의 제 3 프레임 상에서 차동 인코딩 동작을 수행하는 수단을 더 포함하고,
    상기 제 3 프레임 상에서 상기 차동 인코딩 동작을 수행하는 수단은, (A) 상기 제 3 프레임의 피치 펄스 형상과 상기 제 2 프레임의 피치 펄스 형상 사이의 차동 및 (B) 상기 제 3 프레임의 피치 주기와 상기 제 2 프레임의 피치 주기 사이의 차동의 표현들을 포함하는 인코딩된 프레임을 생성하는 것을 포함하는, 스피치 신호 프레임을 인코딩하는 장치.
  15. 명령들을 포함하는 컴퓨터 판독가능 매체로서,
    상기 명령들은 프로세서에 의해 실행될 때 상기 프로세서로 하여금,
    최대 크기를 갖는 스피치 신호의 프레임의 샘플의 값을 제곱함으로써 상기 프레임의 잔차 (residual) 의 피크 에너지를 계산하게 하고;
    상기 프레임의 복수의 샘플들의 제곱 값들을 합하고 그 합을 상기 프레임의 샘플들의 개수로 나눔으로써 상기 잔차의 평균 에너지를 계산하게 하고;
    상기 계산된 피크 에너지 및 상기 계산된 평균 에너지 사이의 관계에 기초하여, (A) 잡음-여기 코딩 방식 (noise-excited coding scheme) 및 (B) 비차동 피치 프로토타입 코딩 방식 (nondifferential pitch prototype coding scheme) 의 세트로부터 하나를 선택하게 하고;
    상기 선택된 코딩 방식에 따라 상기 프레임을 인코딩하게 하며,
    상기 프로세서로 하여금 상기 비차동 피치 프로토타입 코딩 방식에 따라 상기 프레임을 인코딩하게 하는 상기 명령들은, 상기 프로세서로 하여금 상기 프레임의 피치 펄스의 시간-도메인 형상, 상기 프레임의 피치 펄스의 위치, 및 상기 프레임의 추정된 피치 주기의 표현들을 포함하는 인코딩된 프레임을 생성하게 하는 명령들을 포함하는, 컴퓨터 판독가능 매체.
  16. 제 15 항에 있어서,
    상기 잡음-여기 코딩 방식은 잡음-여기 선형 예측 (noise-excited linear prediction; NELP) 코딩 방식인, 컴퓨터 판독가능 매체.
  17. 제 15 항에 있어서,
    상기 컴퓨터 판독가능 매체는, 상기 프로세서로 하여금, 상기 프레임에서의 피치 펄스 피크들의 수를 계산하게 하는 명령들을 더 포함하고,
    상기 프로세서로 하여금 선택하게 하는 상기 명령들은, 상기 프로세서로 하여금 상기 프레임에서의 피치 펄스 피크들의 계산된 수에 기초하여, (A) 잡음-여기 코딩 방식 및 (B) 비차동 피치 프로토타입 코딩 방식의 상기 세트로부터 상기 하나를 선택하게 하는 명령들을 포함하는, 컴퓨터 판독가능 매체.
  18. 제 15 항에 있어서,
    상기 프로세서로 하여금 선택하게 하는 상기 명령들은, 상기 프로세서로 하여금 상기 프레임의 저대역부 (lowband portion) 의 신호대 잡음비에 기초하여, (A) 잡음-여기 코딩 방식 및 (B) 비차동 피치 프로토타입 코딩 방식의 상기 세트로부터 상기 하나를 선택하게 하는 명령들을 포함하는, 컴퓨터 판독가능 매체.
  19. 제 15 항에 있어서,
    상기 컴퓨터 판독가능 매체는 상기 프로세서에 의해 실행될 때 상기 프로세서로 하여금,
    상기 스피치 신호에서의 상기 프레임 바로 다음에 오는 상기 스피치 신호의 제 2 프레임이 유성음이라고 지시하게 하고;
    (A) 상기 프로세서로 하여금 선택하게 하는 상기 명령들에 의한 상기 잡음-여기 코딩 방식의 선택 및 (B) 상기 프로세서로 하여금 상기 제 2 프레임이 유성음이라고 지시하게 하는 상기 명령들에 의한 지시에 응답하여, 상기 비차동 프로토타입 코딩 방식에 따라 상기 제 2 프레임을 인코딩하게 하는 명령들을 더 포함하는, 컴퓨터 판독가능 매체.
  20. 제 19 항에 있어서,
    상기 컴퓨터 판독가능 매체는, 상기 프로세서로 하여금, 상기 스피치 신호에서의 상기 제 2 프레임 바로 다음에 오는 상기 스피치 신호의 제 3 프레임 상에서 차동 인코딩 동작을 수행하게 하는 명령들을 더 포함하고,
    상기 프로세서로 하여금 상기 제 3 프레임 상에서 차동 인코딩 동작을 수행하게 하는 명령들은, 상기 프로세서로 하여금 (A) 상기 제 3 프레임의 피치 펄스 형상과 상기 제 2 프레임의 피치 펄스 형상 사이의 차동 및 (B) 상기 제 3 프레임의 피치 주기와 상기 제 2 프레임의 피치 주기 사이의 차동의 표현들을 포함하는 인코딩된 프레임을 생성하게 하는 명령들을 포함하는, 컴퓨터 판독가능 매체.
  21. 스피치 신호 프레임을 인코딩하는 장치로서,
    최대 크기를 갖는 상기 프레임의 샘플의 값을 제곱함으로써 상기 프레임의 잔차 (residual) 의 피크 에너지를 계산하도록 구성된 피크 에너지 계산기;
    상기 프레임의 복수의 샘플들의 제곱 값들을 합하고 그 합을 상기 프레임의 샘플들의 개수로 나눔으로써 상기 잔차의 평균 에너지를 계산하도록 구성된 평균 에너지 계산기;
    잡음-여기 코딩 방식 (noise-excited coding scheme) 에 따라 상기 프레임을 인코딩하도록 선택가능하게 구성된 제 1 프레임 인코더;
    비차동 피치 프로토타입 코딩 방식 (nondifferential pitch prototype coding scheme) 에 따라 상기 프레임을 인코딩하도록 선택가능하게 구성된 제 2 프레임 인코더; 및
    상기 계산된 피크 에너지와 상기 계산된 평균 에너지 사이의 관계에 기초하여, 상기 제 1 프레임 인코더 및 상기 제 2 프레임 인코더 중 하나로 하여금, 선택가능하게 상기 프레임을 인코딩하게 하도록 구성된 코딩 방식 선택기를 포함하고,
    상기 제 2 프레임 인코더는, 상기 프레임의 피치 펄스의 시간-도메인 형상, 상기 프레임의 피치 펄스의 위치, 및 상기 프레임의 추정된 피치 주기의 표현들을 포함하는 인코딩된 프레임을 생성하도록 구성되는, 스피치 신호 프레임을 인코딩하는 장치.
  22. 제 21 항에 있어서,
    상기 잡음-여기 코딩 방식은 잡음-여기 선형 예측 (noise-excited linear prediction; NELP) 코딩 방식인, 스피치 신호 프레임을 인코딩하는 장치.
  23. 제 21 항에 있어서,
    상기 장치는, 상기 프레임에서의 피치 펄스 피크들의 수를 계산하도록 구성되는 피치 펄스 피크 카운터를 더 포함하고,
    상기 코딩 방식 선택기는, 상기 프레임에서의 피치 펄스 피크들의 계산된 수에 기초하여, 상기 제 1 프레임 인코더 및 상기 제 2 프레임 인코더 중 상기 하나를 선택하도록 구성되는, 스피치 신호 프레임을 인코딩하는 장치.
  24. 제 21 항에 있어서,
    상기 코딩 방식 선택기는, 상기 프레임의 저대역부 (lowband portion) 의 신호대 잡음비에 기초하여, 상기 제 1 프레임 인코더 및 상기 제 2 프레임 인코더 중 상기 하나를 선택하도록 구성되는, 스피치 신호 프레임을 인코딩하는 장치.
  25. 제 21 항에 있어서,
    상기 코딩 방식 선택기는, 상기 스피치 신호에서의 상기 프레임 바로 다음에 오는 상기 스피치 신호의 제 2 프레임이 유성음이라고 결정하도록 구성되고,
    상기 코딩 방식 선택기는, (A) 선택가능하게 상기 제 1 프레임 인코더로 하여금 상기 프레임을 인코딩하게 하는 것 및 (B) 상기 제 2 프레임이 유성음이라는 결정에 응답하여, 상기 제 2 프레임 인코더로 하여금 상기 제 2 프레임을 인코딩하게 하도록 구성되는, 스피치 신호 프레임을 인코딩하는 장치.
  26. 제 25 항에 있어서,
    상기 장치는, 상기 스피치 신호에서의 상기 제 2 프레임 바로 다음에 오는 상기 스피치 신호의 제 3 프레임 상에서 차동 인코딩 동작을 수행하도록 구성된 제 3 프레임 인코더를 더 포함하고,
    상기 제 3 프레임 인코더는, (A) 상기 제 3 프레임의 피치 펄스 형상과 상기 제 2 프레임의 피치 펄스 형상 사이의 차동 및 (B) 상기 제 3 프레임의 피치 주기와 상기 제 2 프레임의 피치 주기 사이의 차동의 표현들을 포함하는 인코딩된 프레임을 생성하도록 구성되는, 스피치 신호 프레임을 인코딩하는 장치.
  27. 삭제
  28. 삭제
  29. 삭제
  30. 삭제
  31. 삭제
  32. 삭제
  33. 삭제
  34. 삭제
  35. 삭제
  36. 삭제
  37. 삭제
  38. 삭제
  39. 삭제
  40. 삭제
  41. 삭제
  42. 삭제
  43. 삭제
  44. 삭제
  45. 삭제
  46. 삭제
  47. 삭제
  48. 삭제
  49. 삭제
  50. 삭제
  51. 삭제
  52. 삭제
  53. 삭제
  54. 삭제
  55. 삭제
  56. 삭제
  57. 삭제
  58. 삭제
KR1020117012391A 2008-10-30 2009-10-29 낮은 비트 레이트 애플리케이션을 위한 코딩 방식 선택 KR101369535B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US12/261,815 2008-10-30
US12/261,750 2008-10-30
US12/261,750 US8768690B2 (en) 2008-06-20 2008-10-30 Coding scheme selection for low-bit-rate applications
US12/261,518 US20090319263A1 (en) 2008-06-20 2008-10-30 Coding of transitional speech frames for low-bit-rate applications
PCT/US2009/062559 WO2010059374A1 (en) 2008-10-30 2009-10-29 Coding scheme selection for low-bit-rate applications

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020137028807A Division KR101378609B1 (ko) 2008-10-30 2009-10-29 낮은 비트 레이트 애플리케이션을 위한 코딩 방식 선택

Publications (2)

Publication Number Publication Date
KR20110090991A KR20110090991A (ko) 2011-08-10
KR101369535B1 true KR101369535B1 (ko) 2014-03-04

Family

ID=41470988

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020137028807A KR101378609B1 (ko) 2008-10-30 2009-10-29 낮은 비트 레이트 애플리케이션을 위한 코딩 방식 선택
KR1020117012391A KR101369535B1 (ko) 2008-10-30 2009-10-29 낮은 비트 레이트 애플리케이션을 위한 코딩 방식 선택

Family Applications Before (1)

Application Number Title Priority Date Filing Date
KR1020137028807A KR101378609B1 (ko) 2008-10-30 2009-10-29 낮은 비트 레이트 애플리케이션을 위한 코딩 방식 선택

Country Status (7)

Country Link
US (1) US8768690B2 (ko)
EP (1) EP2362965B1 (ko)
JP (1) JP5248681B2 (ko)
KR (2) KR101378609B1 (ko)
CN (2) CN102881292B (ko)
TW (1) TW201032219A (ko)
WO (1) WO2010059374A1 (ko)

Families Citing this family (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101565919B1 (ko) * 2006-11-17 2015-11-05 삼성전자주식회사 고주파수 신호 부호화 및 복호화 방법 및 장치
US20090319261A1 (en) * 2008-06-20 2009-12-24 Qualcomm Incorporated Coding of transitional speech frames for low-bit-rate applications
US20090319263A1 (en) * 2008-06-20 2009-12-24 Qualcomm Incorporated Coding of transitional speech frames for low-bit-rate applications
CN101599272B (zh) * 2008-12-30 2011-06-08 华为技术有限公司 基音搜索方法及装置
CN101604525B (zh) * 2008-12-31 2011-04-06 华为技术有限公司 基音增益获取方法、装置及编码器、解码器
KR101622950B1 (ko) * 2009-01-28 2016-05-23 삼성전자주식회사 오디오 신호의 부호화 및 복호화 방법 및 그 장치
US8990094B2 (en) * 2010-09-13 2015-03-24 Qualcomm Incorporated Coding and decoding a transient frame
US9767822B2 (en) * 2011-02-07 2017-09-19 Qualcomm Incorporated Devices for encoding and decoding a watermarked signal
JP5625126B2 (ja) 2011-02-14 2014-11-12 フラウンホーファー−ゲゼルシャフト・ツール・フェルデルング・デル・アンゲヴァンテン・フォルシュング・アインゲトラーゲネル・フェライン スペクトル領域ノイズ整形を使用する線形予測ベースコーディングスキーム
TWI488176B (zh) 2011-02-14 2015-06-11 Fraunhofer Ges Forschung 音訊信號音軌脈衝位置之編碼與解碼技術
JP5849106B2 (ja) 2011-02-14 2016-01-27 フラウンホーファー−ゲゼルシャフト・ツール・フェルデルング・デル・アンゲヴァンテン・フォルシュング・アインゲトラーゲネル・フェライン 低遅延の統合されたスピーチ及びオーディオ符号化におけるエラー隠しのための装置及び方法
CN103503062B (zh) 2011-02-14 2016-08-10 弗劳恩霍夫应用研究促进协会 用于使用对齐的前瞻部分将音频信号编码及解码的装置与方法
BR112012029132B1 (pt) 2011-02-14 2021-10-05 Fraunhofer - Gesellschaft Zur Förderung Der Angewandten Forschung E.V Representação de sinal de informações utilizando transformada sobreposta
CN103534754B (zh) 2011-02-14 2015-09-30 弗兰霍菲尔运输应用研究公司 在不活动阶段期间利用噪声合成的音频编解码器
KR101525185B1 (ko) * 2011-02-14 2015-06-02 프라운호퍼 게젤샤프트 쭈르 푀르데룽 데어 안겐반텐 포르슝 에. 베. 트랜지언트 검출 및 품질 결과를 사용하여 일부분의 오디오 신호를 코딩하기 위한 장치 및 방법
CA2827249C (en) 2011-02-14 2016-08-23 Fraunhofer-Gesellschaft Zur Foerderung Der Angewandten Forschung E.V. Apparatus and method for processing a decoded audio signal in a spectral domain
PL3239978T3 (pl) 2011-02-14 2019-07-31 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Kodowanie i dekodowanie pozycji impulsów ścieżek sygnału audio
CN104025191A (zh) * 2011-10-18 2014-09-03 爱立信(中国)通信有限公司 用于自适应多速率编解码器的改进方法和设备
TWI451746B (zh) * 2011-11-04 2014-09-01 Quanta Comp Inc 視訊會議系統及視訊會議方法
CN104254886B (zh) * 2011-12-21 2018-08-14 华为技术有限公司 自适应编码浊音语音的基音周期
US9111531B2 (en) * 2012-01-13 2015-08-18 Qualcomm Incorporated Multiple coding mode signal classification
US20140343934A1 (en) * 2013-05-15 2014-11-20 Tencent Technology (Shenzhen) Company Limited Method, Apparatus, and Speech Synthesis System for Classifying Unvoiced and Voiced Sound
SG11201510463WA (en) 2013-06-21 2016-01-28 Fraunhofer Ges Forschung Apparatus and method for improved concealment of the adaptive codebook in acelp-like concealment employing improved pitch lag estimation
PL3011555T3 (pl) * 2013-06-21 2018-09-28 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Rekonstrukcja ramki sygnału mowy
US9959886B2 (en) * 2013-12-06 2018-05-01 Malaspina Labs (Barbados), Inc. Spectral comb voice activity detection
CN104916292B (zh) * 2014-03-12 2017-05-24 华为技术有限公司 检测音频信号的方法和装置
US10847170B2 (en) 2015-06-18 2020-11-24 Qualcomm Incorporated Device and method for generating a high-band signal from non-linearly processed sub-ranges
US10812558B1 (en) * 2016-06-27 2020-10-20 Amazon Technologies, Inc. Controller to synchronize encoding of streaming content
EP3857541B1 (en) * 2018-09-30 2023-07-19 Microsoft Technology Licensing, LLC Speech waveform generation
TWI723545B (zh) * 2019-09-17 2021-04-01 宏碁股份有限公司 語音處理方法及其裝置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5704003A (en) 1995-09-19 1997-12-30 Lucent Technologies Inc. RCELP coder
US6173265B1 (en) 1995-12-28 2001-01-09 Olympus Optical Co., Ltd. Voice recording and/or reproducing method and apparatus for reducing a deterioration of a voice signal due to a change over from one coding device to another coding device
US6240386B1 (en) * 1998-08-24 2001-05-29 Conexant Systems, Inc. Speech codec employing noise classification for noise compensation

Family Cites Families (60)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
NL8400552A (nl) 1984-02-22 1985-09-16 Philips Nv Systeem voor het analyseren van menselijke spraak.
JPH0197294A (ja) 1987-10-06 1989-04-14 Piran Mirton 木材パルプ等の精製機
JPH02123400A (ja) 1988-11-02 1990-05-10 Nec Corp 高能率音声符号化器
US5307441A (en) 1989-11-29 1994-04-26 Comsat Corporation Wear-toll quality 4.8 kbps speech codec
US5127053A (en) * 1990-12-24 1992-06-30 General Electric Company Low-complexity method for improving the performance of autocorrelation-based pitch detectors
US5187745A (en) * 1991-06-27 1993-02-16 Motorola, Inc. Efficient codebook search for CELP vocoders
US5233660A (en) 1991-09-10 1993-08-03 At&T Bell Laboratories Method and apparatus for low-delay celp speech coding and decoding
US5765127A (en) * 1992-03-18 1998-06-09 Sony Corp High efficiency encoding method
US5884253A (en) 1992-04-09 1999-03-16 Lucent Technologies, Inc. Prototype waveform speech coding with interpolation of pitch, pitch-period waveforms, and synthesis filter
JP3537008B2 (ja) 1995-07-17 2004-06-14 株式会社日立国際電気 音声符号化通信方式とその送受信装置
TW419645B (en) 1996-05-24 2001-01-21 Koninkl Philips Electronics Nv A method for coding Human speech and an apparatus for reproducing human speech so coded
JP4134961B2 (ja) 1996-11-20 2008-08-20 ヤマハ株式会社 音信号分析装置及び方法
US6073092A (en) 1997-06-26 2000-06-06 Telogy Networks, Inc. Method for speech coding based on a code excited linear prediction (CELP) model
US6233550B1 (en) 1997-08-29 2001-05-15 The Regents Of The University Of California Method and apparatus for hybrid coding of speech at 4kbps
JP3579276B2 (ja) 1997-12-24 2004-10-20 株式会社東芝 音声符号化/復号化方法
US5963897A (en) 1998-02-27 1999-10-05 Lernout & Hauspie Speech Products N.V. Apparatus and method for hybrid excited linear prediction speech encoding
CA2336360C (en) 1998-06-30 2006-08-01 Nec Corporation Speech coder
US6480822B2 (en) * 1998-08-24 2002-11-12 Conexant Systems, Inc. Low complexity random codebook structure
US7272556B1 (en) 1998-09-23 2007-09-18 Lucent Technologies Inc. Scalable and embedded codec for speech and audio signals
US6754630B2 (en) 1998-11-13 2004-06-22 Qualcomm, Inc. Synthesis of speech from pitch prototype waveforms by time-synchronous waveform interpolation
US6691084B2 (en) 1998-12-21 2004-02-10 Qualcomm Incorporated Multiple mode variable rate speech coding
US6311154B1 (en) 1998-12-30 2001-10-30 Nokia Mobile Phones Limited Adaptive windows for analysis-by-synthesis CELP-type speech coding
JP4008607B2 (ja) 1999-01-22 2007-11-14 株式会社東芝 音声符号化/復号化方法
US6324505B1 (en) 1999-07-19 2001-11-27 Qualcomm Incorporated Amplitude quantization scheme for low-bit-rate speech coders
US6633841B1 (en) 1999-07-29 2003-10-14 Mindspeed Technologies, Inc. Voice activity detection speech coding to accommodate music signals
CA2722110C (en) 1999-08-23 2014-04-08 Panasonic Corporation Apparatus and method for speech coding
US7039581B1 (en) * 1999-09-22 2006-05-02 Texas Instruments Incorporated Hybrid speed coding and system
US6581032B1 (en) 1999-09-22 2003-06-17 Conexant Systems, Inc. Bitstream protocol for transmission of encoded voice signals
AU2547201A (en) * 2000-01-11 2001-07-24 Matsushita Electric Industrial Co., Ltd. Multi-mode voice encoding device and decoding device
AU2001253752A1 (en) 2000-04-24 2001-11-07 Qualcomm Incorporated Method and apparatus for predictively quantizing voiced speech
US6584438B1 (en) 2000-04-24 2003-06-24 Qualcomm Incorporated Frame erasure compensation method in a variable rate speech coder
US7363219B2 (en) 2000-09-22 2008-04-22 Texas Instruments Incorporated Hybrid speech coding and system
US7472059B2 (en) 2000-12-08 2008-12-30 Qualcomm Incorporated Method and apparatus for robust speech classification
JP2002198870A (ja) 2000-12-27 2002-07-12 Mitsubishi Electric Corp エコー処理装置
US6480821B2 (en) 2001-01-31 2002-11-12 Motorola, Inc. Methods and apparatus for reducing noise associated with an electrical speech signal
JP2003015699A (ja) 2001-06-27 2003-01-17 Matsushita Electric Ind Co Ltd 固定音源符号帳並びにそれを用いた音声符号化装置及び音声復号化装置
KR100347188B1 (en) 2001-08-08 2002-08-03 Amusetec Method and apparatus for judging pitch according to frequency analysis
CA2365203A1 (en) 2001-12-14 2003-06-14 Voiceage Corporation A signal modification method for efficient coding of speech signals
US7236927B2 (en) 2002-02-06 2007-06-26 Broadcom Corporation Pitch extraction methods and systems for speech coding using interpolation techniques
US20040002856A1 (en) 2002-03-08 2004-01-01 Udaya Bhaskar Multi-rate frequency domain interpolative speech CODEC system
US20050228648A1 (en) 2002-04-22 2005-10-13 Ari Heikkinen Method and device for obtaining parameters for parametric speech coding of frames
CA2388439A1 (en) 2002-05-31 2003-11-30 Voiceage Corporation A method and device for efficient frame erasure concealment in linear predictive based speech codecs
JP2004109803A (ja) 2002-09-20 2004-04-08 Hitachi Kokusai Electric Inc 音声符号化装置及び方法
KR100711280B1 (ko) 2002-10-11 2007-04-25 노키아 코포레이션 소스 제어되는 가변 비트율 광대역 음성 부호화 방법 및장치
US7155386B2 (en) 2003-03-15 2006-12-26 Mindspeed Technologies, Inc. Adaptive correlation window for open-loop pitch
US7433815B2 (en) 2003-09-10 2008-10-07 Dilithium Networks Pty Ltd. Method and apparatus for voice transcoding between variable rate coders
US8155965B2 (en) 2005-03-11 2012-04-10 Qualcomm Incorporated Time warping frames inside the vocoder by modifying the residual
US8355907B2 (en) 2005-03-11 2013-01-15 Qualcomm Incorporated Method and apparatus for phase matching frames in vocoders
CN101171626B (zh) * 2005-03-11 2012-03-21 高通股份有限公司 通过修改残余对声码器内的帧进行时间扭曲
JP4599558B2 (ja) 2005-04-22 2010-12-15 国立大学法人九州工業大学 ピッチ周期等化装置及びピッチ周期等化方法、並びに音声符号化装置、音声復号装置及び音声符号化方法
US7177804B2 (en) 2005-05-31 2007-02-13 Microsoft Corporation Sub-band voice codec with multi-stage codebooks and redundant coding
US20070174047A1 (en) 2005-10-18 2007-07-26 Anderson Kyle D Method and apparatus for resynchronizing packetized audio streams
JP5052514B2 (ja) 2006-07-12 2012-10-17 パナソニック株式会社 音声復号装置
US8260609B2 (en) 2006-07-31 2012-09-04 Qualcomm Incorporated Systems, methods, and apparatus for wideband encoding and decoding of inactive frames
US8135047B2 (en) 2006-07-31 2012-03-13 Qualcomm Incorporated Systems and methods for including an identifier with a packet associated with a speech signal
US8239190B2 (en) 2006-08-22 2012-08-07 Qualcomm Incorporated Time-warping frames of wideband vocoder
JP5166425B2 (ja) 2006-10-24 2013-03-21 ヴォイスエイジ・コーポレーション 音声信号中の遷移フレームの符号化のための方法およびデバイス
US8249860B2 (en) 2006-12-15 2012-08-21 Panasonic Corporation Adaptive sound source vector quantization unit and adaptive sound source vector quantization method
US20090319261A1 (en) 2008-06-20 2009-12-24 Qualcomm Incorporated Coding of transitional speech frames for low-bit-rate applications
US20090319263A1 (en) 2008-06-20 2009-12-24 Qualcomm Incorporated Coding of transitional speech frames for low-bit-rate applications

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5704003A (en) 1995-09-19 1997-12-30 Lucent Technologies Inc. RCELP coder
US6173265B1 (en) 1995-12-28 2001-01-09 Olympus Optical Co., Ltd. Voice recording and/or reproducing method and apparatus for reducing a deterioration of a voice signal due to a change over from one coding device to another coding device
US6240386B1 (en) * 1998-08-24 2001-05-29 Conexant Systems, Inc. Speech codec employing noise classification for noise compensation

Also Published As

Publication number Publication date
CN102881292B (zh) 2015-11-18
WO2010059374A1 (en) 2010-05-27
JP2012507752A (ja) 2012-03-29
CN102881292A (zh) 2013-01-16
US20090319262A1 (en) 2009-12-24
KR20130126750A (ko) 2013-11-20
CN102203855A (zh) 2011-09-28
US8768690B2 (en) 2014-07-01
EP2362965A1 (en) 2011-09-07
JP5248681B2 (ja) 2013-07-31
KR101378609B1 (ko) 2014-03-27
CN102203855B (zh) 2013-02-20
TW201032219A (en) 2010-09-01
EP2362965B1 (en) 2013-03-20
KR20110090991A (ko) 2011-08-10

Similar Documents

Publication Publication Date Title
KR101369535B1 (ko) 낮은 비트 레이트 애플리케이션을 위한 코딩 방식 선택
EP2362964A1 (en) Coding of transitional speech frames for low-bit-rate applications
WO2009155569A1 (en) Coding of transitional speech frames for low-bit-rate applications
US8825477B2 (en) Systems, methods, and apparatus for frame erasure recovery
EP2176860B1 (en) Processing of frames of an audio signal
US8145477B2 (en) Systems, methods, and apparatus for computationally efficient, iterative alignment of speech waveforms
LeBlanc et al. Personal Systems Laboratory Texas Instruments Incorporated

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
AMND Amendment
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
A107 Divisional application of patent
AMND Amendment
X701 Decision to grant (after re-examination)
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20161229

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20171228

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20190107

Year of fee payment: 6