공부 정리 블로그
[음성신호처리13] - vocoder, CELP coding 본문
Bit-Rate Reduction
• Efficient quantization
• Linear transformations
비슷한 신호가 들어올 때 각각을 quantization
• Vector quantizationIdea
-The number of perceptually distinguishable spectra is far smaller than the number that is typically generated by a speech device.
- The label of the best match would be transmitted.
벡터 그 자체로 quantization한다면? => index를 사용하서 quantization
• Reduce the number of parameters
- 15-20 channel(frequency band) signals or 8-12 predictor coefficients
- Four spectral parameters in formant vocoders
• Concept of recognition synthesis
- Identified at the analyzer and regenerated at the synthesizer
음성 coeff를 극단적으로 올리려면 text (메세지)를 그대로 보내버림, text는 wave에 관련된 정보보다 weight를 떨어뜨릴 수 있음
- Unlikely to achieve general use in the foreseeable future
=> 벌써 이미 상당히 인식률이 좋아졌음(가능한 시대가 됐음)
The Frame-Fill Concept –Channel Vocoders
channel voder case들을 본다. 각각의 밴드 정보를 가지고 설명해보자
• Transmit every M-thframe.
매 프레임 마다 전달하지 말고 M프레임마다 전달하자
- Some control information must be sent.
• Assume frame (N-1) and frame (N+1) are sent.
- Compare frame (N) with frame (N-1) and frame (N+1).
그 사이에 있는 N번째 frame은 어떻게 할 것인가?
• frame (N-1) and frame (N+1)과 유사한 정보가 될 것이다.
- Decide which neighbor matches the omitted frame.
- Consider some weighted combination of the two frames.
• summation 하기 위한 weight 정보만 생각해보자
- Select the option (three choices) and append its I.D. code.
The Frame-Fill Concept –LPC Vocoders
현재 frame residual 의 weighted sum을 해서 현재 음성 정보를 만들어내는 경우를 생각해보자.
• More subtle than for channel vocoders
• Depends greatly on the synthesizer structure.
• Obtuse relationship between the coefficients and the more physically intuitive spectrum
이 음성이 어떤 모양을 가질 것인지 그냥 예측하긴 어렵지만, band energy를 알 수 있다고 하면, 좀 더 직관적인 spectrum 제공
- Favor the use of the reflection coefficients.
vodoers 에서는 range가 너무 커서 reflection coeff order를 만들어서 해주면 coding에 유리해짐(그런 게 있다)
• The reflection coefficients k_4 through k_9 are not sent when the excitation is hiss(프랑스어 'r' 발음).
6가지 정보들이 있는데, hiss면 보내든 안 보내든 퀄 차이 없음
- The analyzer performs a fourth-order during hiss.
Pattern Matching or Vector Quantization
• Assume that a listener can tell any two spectral patterns apart from a total population of 2^20patterns.
listner 2^20 patterns 을 구별하도록 해줘야함 => 20bit index 그대로 전송
• Needs to transmit only the storage location(index만 보내면 충분).
transmit - receiver 사이 index를 공유하므로 => code book 생성 필요
• Gold’s pattern-matching channel vocoder
- Begins with an empty table of stored patterns.
방들만 정해져 있고 실제로 아무것도 채워져있지 않음
- Enters the nonredundant spectra(현재 들어온) into the pattern table(현재까지 채워진).
- Matched against this embryonic초기 table.
- Continues until sufficient patterns have been stored.
code book 만들어지면 더 이상 update x
• Paul’s adaptive vector quantization
정보를 계속적으로 바꾸어나감, 2^20을 미리 받아서 각각을 code book 또는 gold로 만듦
어쨋든 table이 채워진 상태에서 현재를 비교해보는 것
- Matched against all existing reference patterns.
- If the best match fails, it is incorporated into the pattern table(새로운 것을 추가함으로 이전 것을 대체), replacing that pattern that has not been transmitted for the longest time.(그 동안 나타나지 않았다는 것은 환경이 바껴서 더 이상 이런 data들의 pattern 이 들어오지 않을 것으로 판단해서 새로운 pattern으로 바꿔줌)
The Kang-Coulter 600-bps Vocoder
극단적으로 sample수가 적은 vocoder
LPC methods followed by formant tracking
Segmentation Methods for Bandwidth Reduction
• Lowest reasonable data rate for a speech-trans.
data rate이 낮은 만큼
- The order of 75 bps equivalent to a teletype rate
- A very good ASR would be the front end of the system.
- At the receiver, a text-to-speech(음성생성 필요) would be needed.
- Two-strong limitations
1. Does not reproduce the characteristics of the speaker.
speaker 고유 특성 사라짐
2. Need to accurately recognize phonemes or other speech unit.
phonemes, 다른 speech unit 정확하게 인식하기 위해 이런 것들이 필요하지만,
이 자체가 그리 쉬운 문제는 아님
• Strongly correlated contiguous frames are merged into segments.
corr 심하기 때문에 segment로 머지
- Instead of simply omitting the transmission of frames
해당 frame을 빠뜨리는 것은 아니고
- Divide the frame rate by a signal-dependent integer.
frame rate을 적적하게 signal-dependent integer하게 운영 해볼 수 있음
• VQ methods
- Adaptive VQ, multi-speaker, and single-speaker approach
Vocoders
• Low-rate vocodersCoded speech at rates below 2400 bps
• Medium-rate and high-rate vocoders
- Speech coders at bit rates greater than 2400 bps
- Typically 4800-16000 bps
- Waveform coding in addition to the customary modeling
• Higher rate (speech 퀄리티만 따지자)
- Strictly waveform coding systems such as subband coding and differential pulse code modulation
wave 자체를 작게 압축 하게 보내보자?
Voice Excitation and Spectral Flattening
Quality deterioration
Poor representation of the excitation function(음질 결정에서 중요한 역할을 함) plays an important role inquality deterioration.
Schroeder and David passed the low-pass signal (Fig. 33.1b)
through a zig-zag network to produce many distortion products.
homornious 들이 계속 추가, amplitude 크기를 지속적으로 맞춰줄 수 있다고 하면,
자체가 excitation signal 임
Voice-Excited Channel Vocoder
channel k 까지 있고 channel 신호들과 baseband를 하나로 묶어서 전송
transmitted 과정 역순으로
VELP and RELP
입력 신호가 들어오면 입력 음성에 대해 LP analysis, low-pass filter 해봄
압축된 LPC param 얻게됨
low pass 된 신호를 distortion(zigzag:non-linear distortion 만들어서 harmonic 계속 만듦) -> amplitude를 일정하게 편평하게 시킴 - > purse train 만듦 -> LPC synthesis로 -> high-pass fitlering 통해서 low pass신호 날림
출력 -> LP analysis
error signal : predition 되지 않는 신호들을 high-pass filter로 뽑아둠
Waveform Coding with Predictive Methods (1)
Speech samples are correlated 한 경우,
low pass -> 저주파이므로 시간에 따른 위상 차이 적음(주변 주파수와 비슷)
CPCM : 이웃한 sample 간의 단순한 차이만 고려
음성은 corr 심하므로 이웃간의 data가 비슷하므로, data 간의 차이만 보내보자
샘플간 차이 -> Quantazation -> 복원 -> 샘플사이 차이를 누적해서 뽑아냄
ADPCM (adqptive 한 것 추가)
입력 신호를 그대로 rectify해서 신호의 envelop을 찾게되면, 실제로 음성신호가 커지고 있는지 작아지고 있는지를 파악할 수 있음
얼마나 정밀하게 quantize 할 것인지 -> 다른 방법을 통해서 보전해주고 받게 됨,
받은 상태는 format에 따라 풀어 헤치고 가지고 있는 error에 대해 1차 적으로 qunatizer -> oper ration 을 해볼 수 있게 함
역의 합성을 거쳐서 진행
CVSDM
delta modulation 해보자
If three successive error signal samples are the same sign, the step size is increased; in other cases the step size decreases.
이전 샘플을 이용해서 차이를 만들어내고 합성한 결과를 현재 입력과 비교해서 error가 크냐 작냐에 따라,
error가 0보다 크다는 이야기는 여전히 입력신호보다 작다는 것을 나타내고,
negative : 합성 신호가 입력신호보다 훨씬 커짐
신호보다 크냐작냐를
+가 나오게 하기 위해 a1을 키움
error가 점점 줄어들었는지를 판단하기 위해 M Analyzer 로 판별해서 크기를 키워줌
이 중 하나라도 다른 부호를 가지고 있으면 빠르게 증가시키거나 감소시키는 게 크게 의미가 없어짐(???)
M Analyzer : step size 결정
receiver 단 : channel 통해서 전달되면 동일한 구조를 가진 M Analyzer을 붙여주고 step size를 가지고 그대로 돌려서 출력
DPCM can be generalized and to some extent incorporated into speech-modeling concepts.
좀 더 일반화 시켜봄
S(n)음성에 대해서 1-P(z)를 거쳐서 (DPC이웃한 샘플간의 차이를 구하는 것이 목적) prediction 이 목표
예측에 따라서 출력을 적절하게 quantize 해줌
Analyzer 를 통해 P(z) 유추 -> 적절하게 param 튜닝
음성을 생성하는 것은 all-pole model 최대한 예측해서 정확한 신호 보내기
Subband Coding
각각 쪼개서 frequency band 별 출력신호를 만들고
출력신호에 대해 error -> upsampling -> upsampling
Multipulse LPC Vocoders
CELP coding에 대해 알아보자
• Residual
음성신호에 대해서 linear ->
▫ 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.
perceptual weighting 으로 줄일 수 있따
Code-Excited Linear Predictive (CELP) Coding (1)
exited 정보를 만듦 -> long-delay 를 거쳐 합성에 가깝게 가져가 봄 -> spectral envelop을 통해 formant들을 바꿔줌 -> 생성
Code exited 정보를 그대로 보내는 것이 아니라 벡터화해서 보내줌
• CELP
▫ Apply VQ techniques to code the excitation signal.
• Sequences in the codebook
▫ Predetermined, zero mean, unity variance
▫ Usually Gaussian random numbers
• CELP coder
▫ Choose the codebook sequence that will produce the least perceived distortion.
▫ Performed by an analysis-by-synthesis method
▫ Send the address(index) of the code word.
실제-합성 음성간의 차이를 weighting filter 형태로 나타냄
이걸 가지고 Square-> average -> perceptrual error
predictor : synthesis -> compare -> analysis
• 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
전체 codebook에서 어느 것이 현재 입력과 비슷한지 찾음
• Gain factor
▫ Adjusted in a manner similar to the way in multipulse LPC
gain factor를 적절하게 꼭 필요한 경우에만 쓰자
• LP spectral parameters
▫ 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 CELP Coder (U.S. Federal Standard 1016)
cf) 8kHz sampling 의 경우, 8000sample(초당) x 8bit (sample 각각) = 64,000
이므로, 100배 이상의 bit rate이 필요함
▫ 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 (actual value) and 6 bits (difference) for every other pitch period
실제 gain coding-5bit, pitch 주기를 표현하는 8 bit, 이웃한 frame 사이에서는 차이가 별로 안 날것이다 8->6(차이만 보냄)
결과적으로 7bit 할당
총 12 bit 할당 -> 12bit * 0.0075 면 1600bps 정도가 됨
▫ Excitation codebook indices every 7.5 ms
1866.67 bps - 9 bits for an index of the 512 codebook vectors and 5 bits for the gain
6bit + 9bit = 14bit/ 14/7.5=1866.67
▫ Synchronization and forward error correction 200 bps
예비를 위해 200bps 가짐
모두 더하면 4800 bps
• Modifications to CELP
CELP coding 추정된 것
▫ Reducing the computation involved in the codebook search and higher signal fidelity or other improvements
exhaustive search 는 많은 양이 필요하므로 codebook search를 효율적으로 하기 위해 줄이는 방법,
• Non-Gaussian codebook sequences
search 속도를 빠르게 하기 위해 성격별로 4개로 section 쪼갬
해당 영역에 대해서만 search 하면됨
▫ Divided into 4 sections
- Standard stochastic excitation sequences (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)
▫ May use sinc and cosc functions.
▫ Deterministic codebook sequences
일일이 search 말고 정해진 것을 만들어서 규칙성 줌-> 빠른 계산
현재 입력에 대해 가장 그럴싸한 코드를 선택하게 함(패턴화)
- Improve performance and lower the computational requirements.
'대학원 수업 > 음성신호' 카테고리의 다른 글
[음성신호처리16] - TTS2 (0) | 2023.06.16 |
---|---|
[신호처리-15]-TTS (음성 합성) (0) | 2023.05.31 |
[음성신호처리14] - CELP coding 여러 기법들 (0) | 2023.05.31 |
[음성신호처리13]-vocoders;voice coding (0) | 2023.05.17 |
[음성신호처리12]-pitch (0) | 2023.05.17 |