공부 정리 블로그
[음성신호처리14] - CELP coding 여러 기법들 본문
LPC Vocoder의 개념으로 부터 출발
음성을 생성할 때, source filter model 사용하므로(excitation을 source생각) -> All pole filter LPC synthesizer 로 excitation filtering -> sythetic speech 생성 -> 실제 speech(coding 하고자하는 대상) 비교 -> error 구함 -> perceptual 관점 weighting -> -> weighted error - > error minimization ->추정으로 extitation 생성
위의 과정 반복을 통해 생성
excitation, LPC sythesizer coding을 통해서 bit 수를 줄이고 speech에서 빼서 error 생성,
error에 perceptual 관점 weighting을 통해 우리가 줄여야하는 error를 생성
pitch를 이용해서 주기적으로 voiced sound에서 pulse를 pitch 단위로 생성 -> pulse train 생성 -> excitation 생성되면 -> LPC sythesis 한다.
Residual
▫ Modeled by the summation of a number of scaled impulses that can be characterized by their amplitude and location • To determine the location and height of the impulse
▫ Analysis-by-synthesis method
• Mutipulse LPC vocoder with pitch synthesis
▫ Add a pitch synthesis filter.
Excitation, LPC를 coding 해서 bit 수를 줄이고 speech에 빼서 error 생성
이거에 대한 coding 정보를 보내서 synthesis 하면 됨
펄스를 생성해서 pulse train 만들고 excitiation 생성되면 synthesis 함
Code-Excited Linear Predictive (CELP) Coding (1)
인고더 부분 결과를 받아서 speech sythesize
excitation의 경우가 매우 다양, 가짓수가 많다
그러므로 VQ(vector quantazation)해서 ex)40sample -> 512 codebook으로 생성
Find structure
purse train 만들기 위해서 pitch 단위로 해서 (pitch period 단위) 만드는 루틴
spetral envelope
- spectrum 만들어내는 부분(LP Allpole filter로 전형적인 modeling 가능)
• CELP
▫ Apply VQ techniques to code the excitation signal.
• Sequences in the codebook 어떻게 생성할 것인가
▫ Predetermined(analysis 랑 syntehsis code book 일치해야함 그래서 미리 보냄), zero mean, unity variance (다양할 수 있으므로, 각 source에 대해서 power 정보를 별로도 보냄)
▫ Usually Gaussian random numbers(가장 simple하게 code book 생성할 수 있음)
CELP coder
▫ Choose the codebook sequence that will produce the least perceived distortion.
▫ Performed by an analysis-by-synthesis method
▫ Send the address of the code word.
speech 생성해보고 실제 speech와 비교 한 뒤 perceptual weighting filter를 거쳐서
실제 error를 스칼라로 구하기 위해 square, pow를 구해서 평균 pow를 생성, error가 최소가 되는 code book seq 선택
code book에 대한 adress(index)를 보내면 빠르게 코딩할 수 있음 됨
• Codebook
▫ Typically 512-1024 entries
▫ A typical entry consists of approximately 40 samples (a 5-ms interval for an 8-kHz sampling rate).
▫ Exhaustive search over the whole codebook(전제 데이터를 일일이 비교함-> 상당한 시간 걸림)
code book 생성할 때, random 규칙성이 없다보니 tree 구조 search가 불가능하기 때문에
• Gain factor(원래 speech와 비교해서 power를 비슷하게 맞춰줘야 함)
▫ Adjusted in a manner similar to the way in multipulse LPC
• LP spectral parameters(PC coefficient 10개 내외 LP 파라미터 값이 나오는데, 10개 param 값에 대해서 VQ를 해서 코드를 전달함)
▫ Coded by using VQ as previously described
• Pitch period and excitation sequence
▫ Change more rapidly than the spectral characteristics of the speech signal.
▫ Transmitted more often
변화에 빨리 대응하려면 더 자주 전송해야함
• 4800-bps (초당 4800bit 보냄)CELP Coder (U.S. Federal Standard 1016) 표준안 채택되는 게 중요!
8k x 16(bit) = 128kbps(압축을 안 했을 때, 이 정도 pbs 필요)
이 경우에는 4.8kpbs(21배 이상 차이가 남)
▫ 10 LP spectral parameters every 30 ms
34 bits or 1133.3 bps
▫ Pitch estimate (both period and long-term feedback gain) every 7.5 ms
1600 bps - 5 bits for the feedback gain and 8 bits (pitch periode 값, actual value) and 6 bits (차이 값, difference) for every other pitch period
8 6 8 6 8 6 8 6 ... alternate 함 -> 급격한 변화는 없음 한번 보내고 나면 그 차이만큼을 보내므로 많이 줄여 보냄 (평균 7bit)
7.5msec 마다 12 bit씩 보냄 초당 160pbs 가 됨
▫ Excitation codebook indices every 7.5 ms
40sample에 해당하는 512 codebook vector 를 보냄 + gain(5bit)
1866.67 bps - 9 bits for an index of the 512 codebook vectors and 5 bits for the gain
14 bitㅣ 돼서 저정도의 bps 필요
▫ Synchronization and forward error correction
동기화를 위한 bit, error 방지를 위한 추가
200 bps
다 더하면 4800 bps 정도가 됨
• Modifications to CELP
성능 향상을 위해 CELP 수정
exhausitve 때문에 계산량 많이 듦
▫ Reducing the computation involved in the codebook search and higher signal fidelity or other improvements
• Non-Gaussian codebook sequences
▫ Divided into 4 sections(512를 일일이 비교하는 게 아니라 code book을 4개의 section으로 나눔)
Standard stochastic excitation sequences (search 시간 반 정도로 줄어듦)
▪ Half of the 512-entry codebook
Single pulses (rapid voicing onset) 단일 파열음
Periodic pulses at the current pitch period (more gradual voicing onset) 보이스드 사운드인 경우 유용하게 사용
Glottal pulse (more detailed excitation at lower pitch periods) pitch period가 낮을때 exitation 정확하게 표현하기 위해
이런 방법들을 통해search 시간을 훨씬 줄일 수 있다.
▫ May use sinc and cosc functions.(non causian에 대해서 가능)
zero 일때 1
▫ Deterministic codebook sequences
Improve performance and lower the computational requirements.
시간이 많이 걸리는 단점 이외에
계산량이 많은 이슈가 있을 수 있음 그래서
analysis, synthesis 오래걸림
Low-Delay CELP
실시간성, 서로 간의 여유가 없는 critical 한 상황인 경우, bit수를 더 많이 할당해줘야함 (data rate이 올라가게 됨)
picth predictor 를 사용할 수 없게 됨 ; 한참 샘플이 지난 다음 업데이트 하므로, ratancy를 기다릴 수 없음
• Buffer of the order of 20 ms of speech and can thus delay speech 20-40 ms
▫ Problem over a telephone line if echo cancellation is not used
• One-way delays of the order of 2 ms
▫ Higher resultant bit rate – typically 16,000 bits/s
▫ The pitch predictor cannot be used.
Reducing Codebook Search Time in CELP (1)
• Rate-limiting step in the CELP system
▫ Search through the code-word dictionary.
codebook search 가 오래걸림
▫ Pass each sequence.
Through 1)pitch synthesis filter, 2)LP synthesis filter, and 3)perceptual weighting filter
filtering을 거쳐야해서 계산량을 키우는 요인이 될 수 있음
이것을 수정하는 방식은?
1) modification
▫ Move the perceptual weighting filter from the output of the summer to its two inputs
▫ Combine with LP synthesis filter to form a single filter
왼쪽 부분에는 LP synthesis filter와 합치므로 roof 상에는 하나의 filter가 사라져 버림
real 비교대상이 되는 것을 맞춰주기위해 오른쪽에는 perceptual weighted 필터를 추가해서 roof에서 소요되는 시간을 줄여준다.
2)The pitch synthesis filter can be removed from the codebook search loop.
입력신호에 대해서 반대로 적용시킴,
pitch synthesis filter의 인버스에 해당하는 필터(effective "Memory" filter)가 적용되게 바뀜
3) Vector Sum Excited Linear Prediction (VSELP)
• A sum of the outputs of multiple codebooks(벡터의 sum/CELP 처럼 하나의 codebook이 아닌 여러 개를 둠)
• Each of the codebooks(각각의 codebook을 단일보다 더 작게 함으로 search 시간을 줄임)
▫ smaller than in a single codebook system, typically 128 vectors (512가 아닌 128만 할당)in size, and has its own associated gain(각각 적절한 gain 생성)
code book adress , gain 을 여러개 생성하고 받는 쪽에서는 각각에 대한 adress 기반해서 code값을 생성 (dic으로 부터) gain을 각각 곱한 값을 더해 줌 => vector sum
=> search 시간 줄일 수 있음(1/4)
• The search can be performed more rapidly.(search 시간 1/4로 줄어듦)
• In the system described
▫ One of the codebooks was of the adaptive variety, whereas the two others were standard stochastic codebooks.
▫ VQ is employed to efficiently code the three gain parameters.
'대학원 수업 > 음성신호' 카테고리의 다른 글
[음성신호처리13] - vocoder, CELP coding (0) | 2023.06.15 |
---|---|
[신호처리-15]-TTS (음성 합성) (0) | 2023.05.31 |
[음성신호처리13]-vocoders;voice coding (0) | 2023.05.17 |
[음성신호처리12]-pitch (0) | 2023.05.17 |
[음성신호처리11] - Linear Prediction (0) | 2023.05.10 |