BR112015025009B1 - Unidades de quantização e quantização inversa, codificador e decodificador, métodos para quantizar e dequantizar - Google Patents

Unidades de quantização e quantização inversa, codificador e decodificador, métodos para quantizar e dequantizar Download PDF

Info

Publication number
BR112015025009B1
BR112015025009B1 BR112015025009-2A BR112015025009A BR112015025009B1 BR 112015025009 B1 BR112015025009 B1 BR 112015025009B1 BR 112015025009 A BR112015025009 A BR 112015025009A BR 112015025009 B1 BR112015025009 B1 BR 112015025009B1
Authority
BR
Brazil
Prior art keywords
quantizers
coefficients
quantizer
block
coefficient
Prior art date
Application number
BR112015025009-2A
Other languages
English (en)
Other versions
BR112015025009A2 (pt
Inventor
Per Hedelin
Janusz Klejsa
Lars Villemoes
Original Assignee
Dolby International Ab
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Dolby International Ab filed Critical Dolby International Ab
Priority claimed from PCT/EP2014/056855 external-priority patent/WO2014161994A2/en
Publication of BR112015025009A2 publication Critical patent/BR112015025009A2/pt
Publication of BR112015025009B1 publication Critical patent/BR112015025009B1/pt

Links

Images

Abstract

QUANTIZADOR AVANÇADO. O presente documento se refere a um sistema de codificação e decodificação de áudio (denominado como um sistema codec de áudio). Em particular, o presente documento se refere a um sistema codec de áudio baseado em transformada o qual é particularmente bem adequado para a codificação/decodificação de voz. Uma unidade de quantização (112) configurada para quantizar um primeiro coeficiente de um bloco (141) de coeficientes é descrita. O bloco (141) de coeficientes compreende uma pluralidade de coeficientes para uma pluralidade de posições de frequências correspondentes (301). A unidade de quantização (112) é configurada para fornecer um conjunto (326, 327) de quantizadores. O conjunto (326, 327) de quantizadores compreende uma pluralidade de quantizadores diferentes (321, 322, 323) associados com uma pluralidade de diferentes razões sinal para ruído, denominadas como SNR, respectivamente. A pluralidade de quantizadores diferentes (321, 322, 323) inclui um quantizador de enchimento de ruído (321); um ou mais quantizadores oscilados (322); e um ou mais quantizadores sem oscilação (323). A unidade de quantização (112) é ainda configurada para determinar uma indicação de SNR indicativa de uma SNR atribuída ao primeiro coeficiente e para selecionar um primeiro quantizador do conjunto (326, 327) de quanti-zadores com base na indicação de SNR. Além disso, a unidade de quantização (112) está configurada para quantizar o primeiro coefici-ente usando o primeiro (...).

Description

REFERÊNCIA CRUZADA A PEDIDOS RELACIONADOS
[1] Este pedido reivindica prioridade do Pedido Provisório dePatente US 61/808.673, depositado em 5 de abril de 2013 e Pedido Provisório de Patente US 61/875.817, depositado em 10 de setembro de 2013, cada um dos quais é aqui incorporado por referência na sua totalidade.
CAMPO TÉCNICO
[2] O presente documento se referea um sistema de codificação e decodificação de áudio (denominado um sistema de codec de áudio). Em particular, o presente documento se refere a um sistema de codec de áudio baseado em transformada o qual é particularmente bem adequado para codificação/decodificação de voz.
ANTECEDENTES
[3] Codificadores de áudio perceptuaisde uso geral alcançam-ganhos de codificação relativamente altos usando transformadas, como a Modified Discrete Cosine Transform (MDCT ) com tamanhos de bloco de amostrasque abrangem vários décimos de milésimos de segundo (por exemplo, 20 ms). Um exemplo de tal sistema de codec de áudio baseado em transformada é Advanced Audio Coding (AAC) ou High Efficciency (HE)-AAC. No entanto, ao utilizar tais sistemas de codec de áudio com base em transformada para sinais de voz, a qualidade dos sinais de voz se degrada mais rapidamente do que a dos sinais musicais para taxas de bits mais baixas, especialmente no caso de sinais de fala secos (nãoreverberantes).
[4] O presente documento descreve um sistema de codec deáudio baseado em transformada o qual é particularmente bem ade- quado para a codificação de sinais de fala. Além disso, o presente documento descreve um esquemade quantização que podeser utilizado- num tal sistema de codec de áudio baseado emtransformada. Vários esquemas de quantização diferentes podem ser usados em conjunto com sistemas de codec de áudio baseados em transformada. Exemplos sãoquantizaçãovetorial (por exemplo, quantização vetorial Twin), distribuição preservando a quantização, quantização de oscilação, quantização escalar com umdeslocamento aleatório, e quantização escalar combinada com um enchimento de ruído (por exemplo, o quantizador descrito na US7447631). Estes esquemas de quantização diferentes têm várias vantagens e desvantagens no que diz respeito a um ou mais dos seguintes atributos:• complexidade operacional (codificador), que tipicamente inclui a complexidade computacional de quantização e de geração de fluxo de bits (por exemplo, codificação de comprimento variável);• desempenho perceptivo, que pode ser estimado com base em considerações teóricas (desempenho de taxa de distorção) e com base nas características do comportamento de enchimento de ruído associado (por exemplo, em taxas de bits que são praticamente relevantes a partir codificação transformada da baixa taxa de fala);• a complexidade do processo de atribuição de fluxo de bits, na presença de uma restrição de fluxo de bit global (por exemplo, número máximo de bits); e/ou• flexibilidade com relação à permitir fluxos de dados diferentes e níveis de distorção diferentes.
[5] No presente documento, um esquema de quantização édescrito que resolve pelo menos alguns dos atributos acima mencionados. Em particular, um esquema de quantização é descrito que proporciona um desempenho melhorado em relação a alguns ou todos os atributos acima mencionados.
SUMÁRIO
[6] De acordo com um aspecto, uma unidade de quantização(também referida como uma unidade de coeficiente de quantização no presente documento) configurada para quantizar um primeiro coeficiente de um bloco de coeficientes é descrito. O bloco de coeficientes pode corresponder a, ou pode ser derivado a partir de um bloco de coeficientes de predição residuais (também referido como um bloco de coeficientes de erro de predição). Como tal, a unidade de quantização pode ser parte de um codificador de áudio baseado em transformada o qual faz uso de predição de sub-banda, como descrito em maiores detalhes abaixo. Em termos gerais, o bloco de coeficientes pode compreender uma pluralidade de coeficientes para uma pluralidade de correspondentes caixas de frequência. O bloco de coeficientes pode ser derivado a partir de um bloco de coeficientes de transformada, em que o bloco de coeficientes de transformada foi determinado por conversão de um sinal de áudio (por exemplo, um sinal de voz) do domínio do tempo para o domínio da frequência usando um domínio do tempo para transformada no domínio da frequência (por exemplo, um Modified- DiscreteCosineTransform, MDCT).
[7] Deve ser notado que o primeiro coeficiente do bloco decoeficientes pode corresponder a qualquer um ou mais dos coeficientes do bloco de coeficientes. O bloco de coeficientes pode compreender coeficientes K (K> 1, por exemplo, K = 256). O primeiro coeficiente pode corresponder a qualquer um dos k = 1,..., K coeficientes de frequência. Como será descrito a seguir, a pluralidade de posições de frequência K podeser agrupada numa pluralidade de bandas de frequência Lcom 1 <L<K. Um coeficiente do bloco de coeficientes pode- ser atribuído a um de entre a pluralidade de bandas de frequências (l = 1,..., L). Os coeficientesq, com q = 1,..., Q e 0 <Q<K, que são atribuídos a uma determinada frequência de banda l pode ser quantizada usando o mesmo quantizador. O primeiro coeficiente pode corresponder ao q°coeficiente da Ia banda de frequência, para qualquer q = 1,..., Q, e para qualquer l= 1,..., L.
[8] A unidade de quantização pode ser configurada para fornecer um conjunto de quantizadores. O conjunto de quantizadores pode- compreender uma pluralidade de diferentes quantizadores associados com uma pluralidade de diferentes razões sinal para ruído (SNR) ou uma pluralidade de diferentes níveis de distorção, respectivamente. Como tal, os quantizadores diferentes do conjunto de quantizadores podem produzir SNRs ou respectivos níveis de distorção. Os quanti- zadores dentro do conjunto de quantizadores podem ser ordenados de acordo com a pluralidade de SNRs associadas com a pluralidade de quantizadores. Em particular, os quantizadores podem ser ordenados de modo a que a SNR que é obtida utilizando um quantizador particu- laraumenta em comparação com a SNR que é obtida utilizando um quantizador diretamente adjacente anterior.
[9] O conjunto de quantizadores podetambém ser denominadocomo um conjunto de quantizadores admissíveis. Tipicamente, o número de quantizadores compreendido dentro do conjunto de quantiza- dores está limitado a um número R de quantizadores. O número de R quantizadores compreendido dentro do conjunto de quantizadores po- deser selecionadocom base numa faixa SNR global que deve ser co-berta pelo conjunto de quantizadores (por exemplo, uma faixa SNR de aprox. 0 dB a 30 dB). Além disso, o número R de quantizadores normalmente depende de uma diferença alvo de SNR entre quantizadores adjacentes dentro de um conjunto ordenado de quantizadores. Os valores típicos para o número de quantizadores R são de 10 a 20 quanti- zadores.
[10] A pluralidade de diferentes quantizadores pode compreender um quantizador de enchimento de ruído, um ou mais quantizado- res oscilados, e/ou uma ou mais quantizadores não oscilados. Em um exemplo preferencial, a pluralidade de diferentes quantizadores compreende um único quantizador de enchimento de ruído, um ou mais quantizadores oscilados e um ou mais quantizadores não oscilados. Tal como será descrito no presente documento, é benéfico utilizar um quantizador de enchimento de ruído para uma situação de fluxo de bit zero (por exemplo, em vez de usar um quantizador oscilado com um grande tamanho de etapa de quantização). O quantizador de enchimento de ruído está associado com a SNR relativamente menor da pluralidade de SNRs, e os um ou mais quantizadores não oscilados podem ser associados com um ou mais SNRsrelativamente mais altos da pluralidade de SNRs. Os um ou mais quantizadores oscilados podem ser associados com um ou mais SNR intermediárias, que são relativamente mais elevados do que a menor SNR e que são menores do que as uma ou mais SNRsrelativamente mais altas da pluralidade de SNRs. Como tal, o conjunto ordenado de quantizadores podecom- preender um quantizador de enchimento de ruído para a menor SNR (por exemplo, inferior a ou igual a 0 dB), seguido por um ou mais quantizadores oscilados para SNRs intermediárias, e seguido por um ou mais quantizadores não oscilados para SNRs relativamente elevadas. Ao fazer isso, a qualidade perceptual de um sinal de áudio reconstruído (derivado a partir do bloco de coeficientes quantificados, quantizado utilizando o conjunto de quantizadores) pode ser melhorada. Em particular, os artefatos audíveis causados por orifícios espectrais podem ser reduzidos, enquanto, ao mesmo tempo mantendo o desempenho de MSE (erro quadrado médio) da unidade de quantiza- ção alta.
[11] O quantizador de enchimento de ruído pode compreenderum gerador de números aleatórios configurado para gerar números aleatórios de acordo com um modelo estatístico predeterminado. O modelo estatístico predeterminado do gerador de números aleatórios do quantizadorde enchimento de ruído pode depender da informação lateral (por exemplo, um indicadorde preservação de variância) que está disponível no codificador e no decodificador correspondente. O quantizador de enchimento de ruído pode ser configurado para quanti- zar o primeiro coeficiente (ou qualquer um dos coeficientes do bloco de coeficientes) por substituição do primeiro coeficiente com um número aleatório gerado pelo gerador de números aleatórios. O gerador de números aleatórios utilizadona unidade de quantização (por exemplo, a um decodificador local compreendido dentro de um codificador) pode estar em sintonia com um gerador de número aleatório correspondendo a uma unidade de quantização inversa (em um decodificador correspondente). Como tal, a saída do quantizador de enchimento de ruído pode ser independente do primeiro coeficiente, de tal modo que a saída do quantizador de enchimento de ruído podenão exigir a transmissão de quaisquer índices de quantização. O quantizador de enchimento de ruído pode ser associado com uma SNR que é (próximo ou substancialmente) 0dB. Em outras palavras, o quantizador de enchimento de ruído pode funcionar com uma SNR que está perto de 0 dB. Durante o processo de alocação de fluxo, o quantizador de enchimento de ruído pode ser considerado para proporcionar uma SNR de 0dB embora, na prática, SNR pode ser ligeiramente desviado de zero (por exemplo, pode ser ligeiramente menor que zero dB (devido a síntese de um sinal que é independente do sinal de entrada)).
[12] A SNR do quantizador de enchimento de ruído pode serajustada com base em um ou mais parâmetros adicionais. Por exemplo, a variância do quantizador de enchimento de ruído pode ser ajustada por ajuste da variância do sinal sintetizado (ou seja, a variância dos coeficientes que foram quantizados usando o quantizador de enchimento de ruído) de acordo com uma função predefinida do ganho de preditor. Em alternativa, ou além disso, a variância do sinal sintetizado que pode ser definido por meio de um indicador, que é transmitido no fluxo de bits. Em particular, a variância do quantizador de enchimento de ruído pode ser ajustada por meio de uma das duas funções predefinidas do ganho de preditorp (fornecidas mais abaixo neste documento), em que uma destas funções pode ser selecionada para processar o sinal sintetizado na dependência do indicador (por exemplo, na dependência do indicadorde preservação de variância). A título de exemplo, a variância do sinal gerado pelo quantizador de enchimento de ruído pode ser ajustada de tal maneira, de modo que a SNR do quantizador de enchimento de ruído está dentro do intervalo [- 3,0dB a 0dB]. Uma SNR em 0dB é normalmente benéfica de uma- perspectiva MMSE (erro médio quadráticomínimo). Por outro lado, a qualidade de percepção pode ser aumentada quando se utilizam SNRs mais baixas (por exemplo, até -3,0dB).
[13] O um ou mais quantizadores oscilados são preferencialmente quantizadores oscilados subtrativos. Em particular, um quanti- zador osciladodos um ou mais meiosquantizadores oscilados pode compreender uma unidade de aplicação de oscilação configurada para determinar um primeiro coeficiente oscilado, aplicando um valor de oscilação (também referido como número oscilado) para o primeiro coeficiente. Além disso, o quantizador oscilado pode compreender um quantizador escalar configurado para determinar um primeiro índice de quantização, atribuindo o primeiro coeficiente oscilado a um intervalo do quantizador escalar. Como tal, o quantizador oscilado pode gerar um primeiro índice de quantização com base no primeiro coeficiente. De um modo semelhante um ou mais outros dos coeficientes do bloco de coeficientes pode ser quantizado.
[14] Um quantizador oscilado dos um ou mais quantizadoresoscilados podeainda compreender um quantizador escalar inverso configurado para atribuir um primeiro valor de reconstrução para o primeiro índice de quantização. Além disso, o quantizador oscilado pode compreender uma unidade de remoção de oscilação configurada para determinar um primeiro coeficiente sem oscilaçãoremovendo o valor de oscilação (ou seja, o mesmo valor de oscilação que tem sido aplicado pela unidade de aplicação de oscilação) a partir do primeiro valor de reconstrução.
[15] Além disso, o quantizador oscilado pode compreender umaunidade de aplicação de pós-ganho configurada para determinar um primeiro coeficiente quantificado através da aplicação de um quantiza- dor pós- ganho Y para o primeiro coeficiente sem oscilação. Ao aplicar o pós-ganho Y para o primeiro coeficiente sem oscilação, o desempenho MSE do quantizador oscilado pode ser melhorado. O quantizador pós-ganho y pode ser dado por
Figure img0001
com
Figure img0002
sendo uma variância de um ou mais dos coeficientesdo bloco de coeficientes, e com Δ sendo um tamanho de etapa de quantizador do quantizador escalar do quantizador oscilado.
[16] Como tal, o quantizador oscilado pode ser configurado paraexecutar quantização inversa, para obter um coeficiente quantizado. Isto pode ser usado no decodificador local de um codificador, o que facilita uma predição do circuito fechado, por exemplo, onde o ciclo de previsão no codificador é mantido em sincronia com o ciclo de previsão no decodificador.
[17] A unidade de aplicação de oscilação pode ser configuradapara subtrair o valor de oscilação do primeiro coeficiente, e a unidade de remoção de oscilação pode ser configurada para adicionar o valor de oscilação para o primeiro valor de reconstrução. Em alternativa, a unidade de aplicação de oscilação pode ser configurada para adicionar o valor de oscilação para o primeiro coeficiente, e a unidade de remoção de oscilação pode ser configurada para subtrair o valor de oscilação a partir do primeiro valor de reconstrução.
[18] A unidade de quantização pode ainda compreender um gerador oscilado configurado para gerar um bloco de valores oscilados. A fim de facilitar a sincronização entre o codificador e o decodificador, os valores de oscilação podem ser números pseudoaleatórios. O bloco de valores de oscilação pode compreender uma pluralidade de valores de oscilação para a pluralidade de posições de frequência, respectivamente. Como tal, o gerador de oscilação pode ser configurado para gerar um valor de oscilação para cada um dos coeficientes do bloco de coeficientes, que está sendo quantizado, independentemente se um coeficiente particular deve ser quantizado utilizando um dos quantiza- dores oscilados ou não. Isto é benéfico para a manutenção de sincro-nismo entre um gerador de oscilação usado em um codificador e um gerador de oscilação usado em um decodificador correspondente.
[19] O quantizador escalar do quantizador oscilado tem um tamanho de etapade quantizadorpredeterminado Δ. Como tal, o quanti- zador escalar do quantizador oscilado pode ser um quantizador uniforme. Os valores de oscilação podem assumir valores de um intervalo predeterminado de oscilação. O intervalo predeterminado de oscilação pode ter uma largura igual a ou menor do que o tamanho de etapa predeterminado de quantizadorΔ. Além disso, o bloco de valores de oscilação pode ser composto de realizações de uma variável aleatória uniformemente distribuídadentro do intervalo predeterminado de oscilação. Por exemplo, o gerador de oscilação é configurado para gerar um bloco de valores de oscilação que são desenhados a partir de um intervalo de oscilação normalizado (por exemplo, [0, 1) ou [-0,5, 0,5)). Como tal, a largura de um intervalo de oscilação normalizado pode ser um. O bloco de valores de oscilação pode então ser multiplicado com o tamanho de etapa de quantizador predeterminado Δ do quantizador oscilado particular. Ao fazer isso, uma realização de oscilação apropriada para usar com o quantizador tendo um tamanho de etapaΔ pode ser obtido. Em particular, ao fazer isso, um quantizador cumprindo as chamadas condições Schuchman é obtido (L. Schuchman, “Dithersig- nalsandtheireffectonquantizationnoise”, IEEE TCOM, pp 162-165, Dec. 1964.).
[20] O gerador de oscilação pode ser configurado para selecionar um de M realizações de oscilação predeterminadas, em que M é um número inteiro maior que um. Além disso, o gerador de oscilação pode ser configurado para gerar o bloco de valores de oscilação baseado na realização de oscilação selecionada. Em particular, em algumas implementações, o número de realizações de oscilação pode ser limitado. A título de exemplo, o número M de realizações de oscilação predeterminadas pode ser de 10, 5, 4 ou menos. Isto pode ser benéfico em relação à subsequente codificação de entropia dos índices de quantização, que foram obtidos usando um ou mais quantizadores oscilados. Em particular, o uso de um número limitado Mde realizações de oscilação permite um codificador de entropia para os índices de quantizaçãoser treinadocom base no número limitado de realizações de oscilação. Ao fazer isso, pode-se usar um código instantâneo (tal como, por exemplo, codificação de Huffman multidimensional), em vez do código aritmético, o que pode ser vantajoso em termos de complexidade operacional.
[21] Um quantizadorUm quantizador não oscilado dos um oumais quantizadores não oscilados pode ser um quantizador escalar com um tamanho de etapade quantizador uniforme predeterminado. Como tal, o umou mais quantizadores não oscilados podem ser quan- tizadores determinísticos, que não fazem uso de uma (pseudo) oscilação aleatória.
[22] Como descrito acima, o conjunto de quantizadores pode serordenado. Isto pode ser benéfico, em vista de um processo eficiente de alocação de bits. Em particular, a ordenação do conjunto de quanti- zadores permite a seleção de um quantizador a partir do conjunto de quantizadores com base em um índice inteiro. O conjunto de quantiza- dores podeser ordenadode modo a que o aumento da SNR entre quantizadores adjacentes é, pelo menos, aproximadamente, constante. Em outras palavras, uma diferença de SNR entre dois quantizado- res pode ser dada pela diferença das SNRs associadas com um par de quantizadores adjacentes do conjunto ordenado de quantizadores. As diferenças de SNR para todos os pares de quantizadores adjacentes da pluralidade de quantizadoresordenados podem cair dentro de um intervalo de diferença SNR predeterminado em torno de uma diferença SNR predeterminada alvo. A largura do intervalo de diferença de SNR predeterminadapode ser menor do que 10% ou 5% da diferença de SNR alvopredeterminada. A diferença alvo de SNR pode ser definida de uma forma tal que um conjunto relativamente pequeno de quan- tizadores pode gerar a operação em uma faixa de SNR global relativamente grande. Por exemplo, em aplicações típicas o conjunto de quantizadores pode facilitar a operação dentro de um intervalo de 0 dB SNR em direção a 30dB SNR. Adiferença de SNR alvo predeterminada pode ser ajustada para 1,5 dB ou 3dB, permitindo, assim, a faixa SNR global de 30 dB para ser coberta com um conjunto de quantiza- dores que compreendem 10 a 20 quantizadores. Como tal, um aumento do índice inteiro de um quantizador do conjunto ordenado de quanti- zadores traduz-se diretamente em um aumento da SNR correspondente. Estarelação um-para-um é benéfica para a implementação de um processo de alocação de bit eficiente, que aloca um quantizador a uma SNR determinadapara uma banda de frequência específica de acordo com uma determinada restrição de fluxo de bits.
[23] A unidade de quantização pode ser configurada para determinar uma indicação de SNR indicativa de uma SNR atribuída ao primeiro coeficiente. A SNR atribuída ao primeiro coeficiente pode ser determinada usando um processo de alocação de fluxo (também referido como um processo de alocação de bits). Tal como indicado acima, a SNR atribuída ao primeiro coeficiente pode identificar diretamente um quantizador a partir do conjunto de quantizadores. Como tal, a unidade de quantização pode ser configurada para selecionar um primeiro quantizador a partir do conjunto de quantizadores, com base na indicação de SNR. Além disso, a unidade de quantização pode ser configurada para quantizar o primeiro coeficiente usando o primeiro quan- tizador. Em particular, a unidade de quantização pode ser configurada para determinar um primeiro índice de quantização para o primeiro coeficiente. O primeiro índice de quantização pode ser entropia codificada e podeser transmitidocomo dados de coeficiente dentro de um fluxo de bits para uma unidade de quantização inversa correspondente (de um decodificador correspondente). Além disso, a unidade de quantiza- ção pode ser configurada para determinar um primeiro coeficiente quantizado a partir do primeiro coeficiente. O primeiro coeficiente quantizado pode ser usado dentro de um preditor do codificador.
[24] O bloco de coeficientes pode ser associado com um envelope de bloco espectral (por exemplo, um envelope de atual ou um envelope de atualquantizado, tal como descrito abaixo). Em particular, o bloco de coeficientes pode ser obtido pelauniformização um bloco de coeficientes de transformada (derivado de um segmento do sinal de entrada de áudio) utilizando o envelope de blocoespectral. O envelope de bloco espectral pode ser indicativo de uma pluralidade de valores de energia espectrais para a pluralidade de posições de frequência. Em particular, o envelope espectral de bloco pode ser indicativo da importância relativa dos coeficientes do bloco de coeficientes. Como tal, o envelope de bloco espectral (ou um derivado de envelope do envelope de bloco espectral, tais como o envelope de alocação abaixo descrito) pode ser utilizado para fins de alocação de fluxo. Em particular, a indicação de SNR pode depender do envelope de bloco espectral. A indicação de SNR pode ainda depender de um parâmetro de deslocamento para compensar o envelope de bloco espectral. Durante um processo de alocação de fluxo, o parâmetro de deslocamento pode ser aumentado/diminuído até que os dados de coeficientes gerados a partir do bloco quantizado e codificado de coeficientes encontra uma restrição de fluxo de bits predeterminada (por exemplo, o parâmetro de deslocamento pode ser selecionado tão grande quanto possível de modo a que o bloco codificado de coeficientes não exceda um número predeterminado de bits). Por isso, o parâmetro de deslocamento pode depender de um número predeterminado de bits disponíveis para a codificação do bloco de coeficientes.
[25] A indicação de SNR que é indicativa da SNR atribuída aoprimeiro coeficiente pode ser determinada por deslocamento de um valor derivado do envelope de bloco espectral associado com a posição de frequência do primeiro coeficiente usando o parâmetro de deslocamento de frequência. Em particular, uma fórmula de alocação de bits, como descrito no presente documento pode ser utilizada para determinar a indicação de SNR. A fórmula de alocação de bits pode ser uma função de um envelope de alocação derivado do envelope de bloco espectral e o parâmetro de deslocamento.
[26] Como tal, a indicação de SNR pode depender de um envelope alocação derivado do envelope de bloco espectral. O envelope de alocação pode ter uma resolução de alocação (por exemplo, uma resolução de 3 dB). A resolução de alocação de preferência depende da diferença de SNR entre quantizadores adjacentes do conjunto de quantizadores. Em particular, a resolução de alocação e a diferença de SNR pode corresponder a um ao outro. Em um exemplo, a diferença de SNR é 1,5 dB e a resolução de alocação é 3 dB. Ao selecionar resolução de alocação correspondente e diferença de SNR (por exemplo, por seleção de uma resolução de alocação que é o dobro da diferença de SNR, no domínio dB), o processo de alocação de bits e/ou o processo de seleção de quantizador pode ser simplificado (utilizando, por exemplo, a fórmula de alocação de bits descrita no presente documento).
[27] A pluralidade de coeficientes do bloco de coeficientes podeser atribuída a uma pluralidade de bandas de frequência. Uma banda de frequências pode compreender uma ou mais posições de frequência. Como tal, mais do que um de uma pluralidade de coeficientes pode ser designada para a mesma banda de frequência. Normalmente, o número de posições de frequência por banda de frequência aumenta com o aumento da frequência. Em particular, a estrutura de banda de frequência (por exemplo, o número de posições de frequência por banda de frequência) pode seguir considerações psicoacústicas. A unidade de quantização pode ser configurada para selecionar um quantizador a partir do conjunto de quantizadores para cada uma da pluralidade de bandas de frequência, tal que os coeficientes que são atribuídos a uma mesma banda de frequência são quantizados utilizando o mesmo quantizador. O quantizador que é utilizado para quan- tizar uma banda de frequência particular pode ser determinado com base em um ou mais valores de energia espectral do envelope de bloco espectral dentro da banda de frequência particular. A utilização de uma estrutura de banda de frequências para fins de quantização pode ser benéfica no que diz respeito ao desempenho psicoacústico do es-quema de quantização.
[28] A unidade de quantização pode ser configurada para receber informações laterais indicativas de uma propriedade do bloco de coeficientes. A título de exemplo, a informação lateral pode compreender um preditor de ganho determinado por um preditor compreendido dentro de um codificador compreendendo a unidade de quantização. O ganho de preditor podeser indicativode conteúdo tonal do bloco de co-eficientes. Em alternativa, ou além disso, as informações laterais podem compreender um coeficiente de reflexão espectral derivado com base no bloco de coeficientes de e/ou com base no envelope de bloco espectral. O coeficiente de reflexão espectral pode ser indicativo de conteúdo fricativo do bloco de coeficientes. A unidade de quantização pode ser configurada para extrair as informações laterais de dados, que está disponível em ambos o codificador e o decodificador, que compreende a unidade de quantização e a um decodificador correspondente, compreendendo uma unidade de quantização inversa correspondente. Como tal, a transmissão da informação lateral a partir do codificador para o decodificador pode não exigir bits adicionais.
[29] A unidade de quantização pode ser configurada para determinar o conjunto de quantizadoresem dependência da informação lateral. Em particular, um número de quantizadores oscilados dentro do conjunto de quantizadores podedepender da informação lateral. Ainda mais particularmente, o número de quantizadores oscilados compreendido dentro do conjunto de quantizadores podediminuir com o aumento de ganho de preditor, e vice-versa. Ao preparar o conjunto de quantizadores dependentes da informação lateral, o desempenho perceptual do esquema de quantização pode ser melhorado.
[30] A informação lateral pode compreender umindicadorde preservação da variância. O indicador de preservação da variância pode ser um indicativo de como uma variância do bloco de coeficientes deve ser ajustada. Em outras palavras, o indicador de preservação da variância pode ser indicativo de processamento a serexecutado pelo de- codificador, o que tem um impacto sobre a variância do bloco de coefi- cientes, que deve ser reconstruído pelo quantizador.
[31] A título de exemplo, o conjunto de quantizadores pode serdeterminado na dependência do indicador de preservação da variância. Em particular, um ganho de ruído do quantizador de enchimento de ruído pode ser dependente do indicador de preservação da variância. Alternativamente ou em adição, um ou mais quantizadores oscilados pode cobrir uma faixa de SNR e a faixa de SNR pode ser determinada na dependência do indicador de preservação da variância. Além disso, o pós-ganho Y pode ser dependente do indicador de preservação da variância. Alternativamente ou em adição, o pós-ganho Y do quantizador oscilado pode ser determinado na dependência de um pa-râmetro que é uma função predefinida do ganho de preditor.
[32] O indicador de preservação da variância pode ser utilizadopara adaptar o nível de ruído dos quantizadores para a qualidade da predição. A título de exemplo, o pós-ganho y do quantizador oscilado pode ser determinado na dependência de um parâmetro que é uma função predefinida do ganho de preditor. Alternativamente ou em adição, o pós-ganho y pode ser determinado por meio de uma comparação de uma variância preservando pós-ganho escalonado por uma função predefinida do ganho de preditor para um pós-ganho ideal de erro médio quadrático e selecionar o maior dos dois ganhos. Em particular, a função predefinida do ganho de preditor podereduzir a variância do sinal reconstruído conforme o ganho do preditoraumenta. Como um resultado disso, a qualidade perceptual do codec pode ser melhorada.
[33] De acordo com um aspecto adicional, uma unidade dequantização inversa (também referida como um decodificador de espectro no presente documento) configurado para desquantizar um primeiro índice de quantização de um bloco de índices de quantização é descrito. Em outras palavras, a unidade de quantização inversa pode ser configurada para determinar os valores de reconstrução para um bloco de coeficientes, com base em dados de coeficiente (por exemplo, com base em índices de quantização). Deve ser notado que todas as características e aspectos que foram descritos no presente documento, no contexto de uma unidade de quantização são também aplicáveis para a unidade de quantização inversa correspondente. Em particular, isto se aplica às características relacionadas com a estrutura e o desenho do conjunto de quantizadores, para a dependência do conjunto de quantizadores na informação lateral, para o processo de alocação de bits, etc.
[34] Os índices de quantização podem ser associados a um bloco de coeficientes, compreendendo uma pluralidade de coeficientes para uma pluralidade de posições de frequências correspondentes. Em particular, os índices de quantização podem ser associados com coeficientes quantizados (ou valores de reconstrução) de um bloco de coeficientes quantizados correspondente. Como ressaltado no contexto da unidade de quantização correspondente, o bloco de coeficientes quantizados pode corresponder a, ou pode ser derivado a partir de um bloco de coeficientes de predição residuais. Mais geralmente, o bloco de coeficientes quantizados pode ter sido derivado de um bloco de coeficientes de transformada, que tenha sido obtido a partir de um segmento de um sinal de áudio usando um domínio do tempo para o domínio de frequência de transformada.
[35] A unidade de quantização inversa pode ser configurada para fornecer um conjunto de quantizadores. Como descrito acima, o conjunto de quantizadores pode ser adaptadoou gerado com base na informação lateral que está disponível na unidade de quantização inversa e na unidade de quantização correspondente. O conjunto de quantizadores tipicamente compreende uma pluralidade de diferentes quantizadores associados com uma pluralidade de diferentes razões sinal para ruído (SNR), respectivamente. Além disso, o conjunto de quantizadores pode ser ordenado de acordo com o aumen- to/diminuição da SNR, conforme descrito acima.O aumento/diminuição de SNR entre quantizadores adjacentes pode ser substancialmente constante.
[36] A pluralidade de diferentes quantizadores pode compreender um quantizador de enchimento de ruído que corresponde ao quan- tizador de enchimento de ruído da unidade de quantização.Em um exemplo preferencial, a pluralidade de diferentes quantizadores compreende um único quantizador de enchimento de ruído. O quantizador de enchimento de ruído da unidade de quantização inversa é configurado para fornecer uma reconstrução do primeiro coeficiente utilizando uma realização de uma variável aleatória gerada de acordo com um modelo estatístico prescrito. Como tal, deve notar-se que o bloco de índices de quantização normalmente não compreendequaisquer índices de quantização dos coeficientes que devem ser reconstituídos usando o quantizador de enchimento de ruído. Assim, os coeficientes que devem ser reconstruídos com o quantizador de enchimento de ruído estão associados com fluxo de bits de zero.
[37] Além disso, a pluralidade de diferentes quantizadores podecompreender um ou mais quantizadores oscilados. Os um ou mais quantizadores oscilados podem compreender um ou mais respectivos quantizadores escalares inversos configurados para atribuir um primeiro valor de reconstrução para o primeiro índice de quantização. Além disso, os um ou mais quantizadores oscilados podem compreender uma ou mais respectivas unidades de remoção de oscilação configuradas para determinar um primeiro coeficiente sem oscilação removendo o valor de oscilação a partir do primeiro valor de reconstrução. O gerador de oscilação da unidade de quantificação inversa é tipicamente em sincronia com o gerador de oscilação da unidade de quanti- zação. Como ressaltado no contexto da unidade de quantização, os um ou mais quantizadores oscilados de preferência aplicam um pós- ganho de quantizador, a fim de melhorar o desempenho do MSE dos um ou mais quantizadores oscilados.
[38] Além disso, a pluralidade de quantizadores podecompreen-der um ou mais quantizadores não oscilados. Os umou mais quantiza- dores não oscilados podem compreender respectivos quantizadores escalares uniformes que são configurados para atribuir valores respectivos de reconstrução para o primeiro índice de quantização (sem executar uma remoção posterior de oscilação e/ou sem aplicar um pós- ganho de quantizador).
[39] Além disso, a unidade de quantização inversa pode serconfigurada para determinar uma indicação de SNR indicativa de uma SNR atribuída a um primeiro coeficiente no bloco de coeficientes (ou para um primeiro coeficiente quantizadodo bloco de coeficientes quan- tizados). A indicação de SNR pode ser determinada com base no envelope de bloco espectral (que é tipicamente também disponível no decodificador compreendendo a unidade de quantização inversa) e com base no parâmetro de deslocamento (que é normalmente incluído no fluxo de bits transmitido a partir do codificador para o decodifica- dor). Em particular, a indicação de SNR pode ser indicativa de um número de índice de um quantizador inverso (ou um quantizador) sendo selecionado de entre o conjunto de quantizadores. A unidade de quan- tização inversa pode prosseguir na seleção de um primeiro quantiza- dor a partir do conjunto de quantizadores, com base na indicação de SNR. Como ressaltado no contexto da unidade de quantização correspondente, este processo de seleção pode ser implementado de uma maneira eficiente, quando se utiliza um conjunto ordenado de quanti- zadores. Além disso, a unidade de quantização inversa pode ser configurada para determinar um primeiro coeficiente quantizado para o primeiro coeficiente usando o primeiro quantizador selecionado.
[40] De acordo com outro aspecto, um codificador de áudio baseado em transformada configurado para codificar um sinal de áudio para um fluxo de bits é descrito. O codificador pode compreender uma unidade de quantização configurada para determinar uma pluralidade de índices de quantização quantizando uma pluralidade de coeficientes de um bloco de coeficientes. A unidade de quantização pode compreender um ou mais quantizadores oscilados. A unidade de quantiza- ção pode compreender qualquer uma das características relacionadas à unidade de quantização descrita no presente documento.
[41] A pluralidade de coeficientes pode ser associada com umacorrespondente pluralidade de posições de frequência. Como descrito acima, o bloco de coeficientes pode ter sido derivado de um segmento do sinal de áudio. Em particular, o segmento do sinal de áudio podeter sido transformado a partir do domínio do tempo para o domínio da frequência, para produzir um bloco de coeficientes de transformada. O bloco de coeficientes que são quantizados pela unidade de quantiza- ção pode ter sido derivado a partir do bloco de coeficientes de transformada.
[42] O codificador pode ainda compreender um gerador de oscilação configurado para selecionar uma realização de oscilação. Além disso, o codificador pode compreender um codificador de entropia configurado para selecionar uma palavra de código com base em um modelo estatístico predefinido de um coeficiente de transformada, em que o modelo estatístico (ou seja, função de distribuição de probabilidade) dos coeficientes de transformada pode ser condicionado ainda na realização da oscilação. Tal modelo estatístico pode então ser utilizado para calcular uma probabilidade de um índice de quantização, em particular, uma probabilidade do índice de quantização condicionado à realização de oscilação correspondente ao coeficiente. A probabilidade do índice de quantização podeser usada para gerar uma palavra de código binário que está associada com esse índice de quantização. Além disso, uma sequência de índices de quantização pode ser codificada em conjunto com base em suas respectivas probabilidades, onde as respectivas probabilidades podem ser condicionadas nas respectivas realizações de oscilação. Por exemplo, essa codificação conjunta de uma sequência de índices de quantização pode ser implementada por meio de codificação aritmética ou codificação de faixa.
[43] De acordo com outro aspecto o codificador pode compreender um gerador de oscilação configurado para selecionar uma de uma pluralidade de realizações de oscilaçãopredeterminadas. A pluralidade de realizações de oscilação predeterminadas pode compreender diferentes realizações M de oscilação predeterminadas. Além disso, o gerador de oscilação pode ser configurado para gerar uma pluralidade de valores de oscilação para quantizar a pluralidade de coeficientes, com base na realização de oscilação selecionada. M pode ser um número inteiro maior que um. Em particular, o número M de realizações de oscilação predeterminadas pode ser de 10, 5, 4 ou menos. O gerador de oscilação pode compreender qualquer das características do gerador de oscilação relacionadas descritas no presente documento.
[44] Além disso, o codificador pode compreender um codificadorde entropia configurado para selecionar um livro de códigos de M livros de código predeterminados. O codificador de entropia pode ser ainda configurado para a entropia codificar a pluralidade dos índices de quantização utilizando o livro de códigos selecionados. Os M livros de código predeterminados podem ser associados com as realizações de oscilação M predeterminadas, respectivamente. Em particular, os livros de códigos predeterminados M podem ter sido treinados usando as realizações de oscilação M predeterminadas, respectivamente. Os livros de códigos predeterminados M podem compreender palavras de código de Huffman de comprimento variável.
[45] O codificador de entropia pode ser configurado para selecionar o livro de códigos relacionado com a realização de oscilação selecionada pelo gerador de oscilação. Em outras palavras, o codificador de entropia pode selecionar um livro de códigos para a codificação de entropia, que está associado com (por exemplo, o qual foi treinado para) a realização de oscilação usada para gerar a pluralidade de índices de quantização. Ao fazer isso, o ganho de código do codificador de entropia pode ser melhorado (por exemplo, otimizado), mesmo quando se utilizamquantizadores oscilados. Tem sido observado pelos inventores que os benefícios de percepção da utilização de quantizadores oscilados podem ser alcançados mesmo quando se utiliza um número relativamente pequeno M de realizações de oscilação. Consequentemente, apenas um número relativamente pequeno de livros de código M deve ser fornecido de modo a permitir a codificação de entropia otimizada.
[46] Dados de coeficiente indicativos dos índices de quantizaçãode entropia codificadasão tipicamente inseridos no fluxo de bits, para transmissão ou disposição para o decodificador correspondente.
[47] De acordo com outro aspecto, um decodificador de áudiobaseado em transformada configurado para descodificar um fluxo de bits para proporcionar um sinal de áudio reconstruído é descrito. Deve notar-se que as funcionalidades e aspectos descritos no contexto do codificador de áudio correspondente também são aplicáveis para o decodificador de áudio. Em particular, os aspectos relacionados com a utilização de um número limitado de realizações de oscilação M e um número limitado de livros de código M correspondente também são aplicáveis para o decodificador de áudio.
[48] O decodificador de áudio compreende um gerador de oscilação configurado para selecionar uma das realizações de oscilação M predeterminadas. As realizações de oscilação M predeterminadas são as mesmas que as realizações de oscilação predeterminadas M utilizadas pelo codificador correspondente. Além disso, o gerador de oscilação pode ser configurado para gerar uma pluralidade de valores de oscilação baseada na realização de oscilaçãoselecionada. M pode ser um número inteiro maior que um. A título de exemplo, M pode estar na faixade 10 ou 5. A pluralidade de valores de oscilação pode ser usada por uma unidade de quantização inversa que compreende um ou mais quantizadores oscilados que são configurados para determinar uma pluralidade correspondente de coeficientes quantizados com base numa correspondente pluralidade dos índices de quantização. O gerador de oscilação e a unidade de quantização inversa podem compreender qualquer um de gerador de oscilação relacionadoe características relacionadas à unidade de quantização inversa descrita no presente documento, respectivamente.
[49] Além disso, o decodificador de áudio pode compreender umdecodificador de entropia configurado para selecionar um livro de códigos de M livros de código predeterminado. Os M livros de código predeterminados são os mesmos que os livros de códigos utilizados pelo codificador correspondente. Além disso, o decodificador de entropia pode ser configurado para descodificar dados de coeficiente de entropia do fluxo de bits utilizando o livro de códigos selecionado, para fornecer uma pluralidade de índices de quantização. Os M livros de código predeterminados podem ser associados com as realizações de oscilação M predeterminadas, respectivamente. O decodificador de entropia pode ser configurado para selecionar o livro de códigos relacionado com a realização de oscilação selecionada pelo gerador de oscilação. O sinal de áudio reconstruído é determinado com base na pluralidade de coeficientes quantizados.
[50] De acordo com outro aspecto, um codificador de voz combase em transformada configurado para codificar um sinal de fala nu ma atual de bits é descrito. Como já foi indicado acima, o codificador pode compreender qualquer das características do codificador relacionado e/ou componentes descritos no presente documento. Em particular, o codificador pode compreender uma unidade de enquadramento configurada para receber uma pluralidade de blocos sequenciais de coeficientes de transformada. A pluralidade de blocos sequenciais compreende um bloco atual e um ou mais blocos anteriores. Além disso, a pluralidade de blocos sequenciais é indicativo de amostras do sinal de voz. Em particular, a pluralidade de blocos sequenciais pode ter sido determinada utilizando um domínio do tempo para o domínio de frequência transformada, tal como um ModifiedDiscreteCosine- Transform (MDCT). Como tal, um bloco de coeficientes de transforma-da pode compreender coeficientes MDCT. O número de coeficientes de transformada pode ser limitado. A título de exemplo, um bloco de coeficientes de transformada pode compreender 256 coeficientes de transformada em 256 posições de frequência.
[51] Além disso, o codificador de fala pode compreender umaunidade de uniformização configurada para determinar um bloco atual de coeficientes de transformada uniformizados por uniformização do bloco atual correspondente de coeficientes de transformada utilizando umenvelope de bloco atual (espectral) correspondente (por exemplo, o envelope ajustado correspondente). Além disso, o codificador de fala pode compreender um indicador configurado para prever um bloco atual de coeficientes de transformadade uniformização estimados com base em um ou mais blocos de coeficientes de transformada anteriores reconstruídos e com base em um ou mais parâmetros de predição. Além disso, o codificador de fala pode compreender uma unidade de diferença configurada para determinar um bloco atual de coeficientes de erro de predição com base no bloco de coeficientes de transformada uniformizadaatual e com base no bloco de coeficientes de trans- formada atual uniformizados estimados.
[52] O preditor pode ser configurado para determinar o bloco decoeficientes de transformada atual uniformizados estimados utilizando um critério de erro quadrado de média ponderada (por exemplo, minimizando um critério de erro quadrático de média ponderada). O critério de erro quadrático de média ponderada pode levar em conta o envelope de bloco atual ou alguma função pré-definida do envelope de bloco atual como pesos. No presente documento, diversas maneiras diferentes para determinar o ganho de previsão usando um meio de critério de erro quadrático ponderado são descritos.
[53] Além disso, o codificador de fala pode compreender umaunidade de quantização configurada para quantizar os coeficientes derivados do bloco atual de coeficientes de erro de predição, utilizando um conjunto de quantizadores predeterminados. A unidade de quanti- zação pode compreender qualquer uma das características de quanti- zação relacionadas descritas no presente documento. Em particular, a unidade de quantização pode ser configurada para determinar dados de coeficiente para o fluxo de bits com base nos coeficientes quantiza- dos. Como tal, os dados de coeficiente podem ser indicativos de uma versão quantizada do bloco atual de coeficientes de erro de predição.
[54] O codificador de fala baseado em transformada pode aindacompreender uma unidade de escalonamento configurada para determinar um bloco atual de coeficientes residuais de predição reescalonados (também referido como um bloco de coeficientes de erro reescalonados) com base no bloco atual de coeficientes de erro de previsão utilizando uma ou mais regras de escalonamento.O bloco atual de coeficientes de erro reescalonados podeser determinado de tal modo e/ou as uma ou mais regras de escalonamento podem ser tal que, em média, uma variância dos coeficientes de erro escalonados do bloco atual de coeficientes de erro reescalonados é maior do que uma vari- ância doscoeficientes de erro de predição do bloco atual de coeficientes de erro de predição. Em particular, as uma ou mais regras de escalonamento pode ser tal que a variância dos coeficientes de erro de predição é mais próximaà unidade para todas as posições de frequência ou bandas de frequência. A unidade de quantização pode ser con-figurada para quantizar os coeficientes de erro de predição residual reescalonados do bloco atual de coeficientes de erro escalonados, para fornecer os dados de coeficiente (por exemplo, índices de quantiza- çãopara os coeficientes).
[55] O bloco atual de coeficientes de erro de predição compreende tipicamente uma pluralidade de coeficientes de erro de predição para a correspondente pluralidade de posições de frequência. Os ganhos de escalonamento, que são aplicados pela unidade de escalonamento adicional para os coeficientes de erro de predição de acordo com a regra de escalonamento podem ser dependentesdas posições de frequência com os respectivos coeficientes de erro de predição. Além disso, a regra de escalonamento pode ser dependente de um ou mais parâmetros de predição, por exemplo, sobre o ganho de preditor. Em alternativa ou, além disso, a regra de escalonamento pode ser dependente do envelope de bloco atual. No presente documento, várias maneiras diferentes para determinar uma posição de frequência - regras de escalonamento dependentes são descritas.
[56] O codificador de fala baseado em transformada pode aindacompreender uma unidade de alocação de bits configurada para determinar um vetor de alocação baseado no envelope de blocoatual. O vetor de alocação pode ser indicativo de um primeiro quantizador a partir do conjunto de quantizadores a serem usados para quantizar um primeiro coeficiente derivado do bloco atual de coeficientes de erro de predição. Em particular, o vetor de alocação pode ser indicativo de quantizadores a serem utilizados para quantizar todos os coeficientes derivados do bloco atual de coeficientes de erro de predição, respectivamente. A título de exemplo, o vetor de alocação pode ser indicativo de um quantizador diferente a ser usado para cada banda de frequência (l = 1,..., L).
[57] Em outras palavras, a unidade de alocação de bits pode serconfigurada para determinar um vetor de alocação com base no envelope de blocoatual e dada uma restrição máxima de fluxo de bits. A unidade de alocação de bits pode ser configurada para determinar o vetor de alocação também com base em uma ou mais regras de escalonamento. A dimensionalidade do vetor de alocaçãode fluxoé geralmente igual ao número L de bandas de frequências. Uma entrada de vetor de alocação pode ser indicativa de um índice de um quantizador a partir do conjunto de quantizadores a serem usados para quantificar os coeficientes pertencentes a uma banda de frequênciaassociada com a respectiva entrada do vetorde alocação de fluxo. Em particular, o vetor de alocação pode ser indicativo de quantizadores a serem utilizados para quantizar todos os coeficientes derivados do bloco atual de coeficientes de erro de predição, respectivamente.
[58] A unidade de alocação de bits pode ser configurada paradeterminar a alocação de vetor de modo a que os dados de coeficiente para o bloco atual de coeficientes de erro de predição não excedem um número predeterminado de bits. Além disso, a unidade de alocação de bits pode ser configurada para determinar um parâmetro de deslocamento indicativo de umdeslocamento a ser aplicado a um envelope de alocação derivado do envelope de blocoatual (por exemplo, derivado de um envelope ajustado atual). O parâmetro de deslocamento pode ser incluído no fluxo de bits para ativar o decodificador correspondente para identificar os quantizadores, que foram utilizados para determinar os dados de coeficiente.
[59] O codificador de fala baseado em transformada pode com- preender ainda um codificador de entropia configurado para a entropia codificar os índices de quantização associados com os coeficientes quantizados. O codificador de entropia pode ser configurado para codificar os índices de quantização usando um codificador aritmético. Al-ternativamente, o codificador de entropia pode ser configurado para codificar os índices de quantização utilizando uma pluralidade de M livros de código predeterminados (como descrito no presente documento).
[60] De acordo com outro aspecto, um decodificador de falacom base em transformada configurado para descodificar um fluxo de bits para fornecer um sinal de fala reconstruído é descrito. O decodifi- cador de fala pode compreender qualquer das características e/ou componentes descritos no presente documento. Em especial, o deco- dificador pode compreender um preditorconfigurado para determinar um bloco atual de coeficientes de transformada uniformizados estimados com base em um ou mais blocos de coeficientes de transformada anteriores reconstruídos e com base em um ou mais parâmetros de predição a partir de derivados do fluxo de bits. Além disso, o decodifi- cador de fala pode compreender uma unidade de quantização inversa configurada para determinar um bloco atual de coeficientes de erro de predição quantizados (ou uma versão reescalonadados mesmos) com base em dados de coeficiente compreendidos dentro do fluxo de bits, utilizando um conjunto de quantizadores. Em particular, a unidade de quantização inversa pode fazer uso de um conjunto de (inverso) quan- tizadores correspondentes ao conjunto de quantizadores usados pelo codificador de fala correspondente.
[61] A unidade de quantização inversa pode ser configurada para determinar o conjunto de quantizadores (e/ou o correspondente conjunto de quantizadores inversos) na dependência da informação lateral derivada do fluxo de bits recebido. Em particular, a unidade de quantização inversa pode realizar o mesmo processo de seleção para o conjunto de quantizadores como a unidade de quantização do codificador de fala correspondente. Ao tornar o conjunto de quantizadores dependente das informações laterais, a qualidade perceptual do sinal de fala reconstruído pode ser melhorada.
[62] De acordo com outro aspecto, um método para quantizarum primeiro coeficiente de um bloco de coeficientes é descrito. O bloco de coeficientes compreende uma pluralidade de coeficientes para uma correspondente pluralidade de posições de frequência. O método pode compreender o fornecimento de um conjunto de quantizadores, em que o conjunto de quantizadores compreende uma pluralidade de diferentes quantizadores associados com uma pluralidade de diferentes razões sinal para ruído (SNR), respectivamente. A pluralidade de diferentes quantizadores pode compreender um quantizador de enchimento de ruído, um ou mais quantizadores oscilados, e um ou mais quantizadores não oscilados. O método pode ainda compreender a determinação de uma indicação de uma SNR indicativa de uma SNR atribuída ao primeiro coeficiente. Além disso, o método pode compreender a seleção de um primeiro quantizador a partir do conjunto de quantizadores, com base na indicação de SNR, e quantizar o primeiro coeficiente usando o primeiro quantizador.
[63] De acordo com um aspecto adicional, um método paradesquantizar os índices de quantizaçãoé descrito. Em outras palavras, o método pode ser dirigido para a determinação dos valores de reconstrução (também referidos como coeficientes quantizados) para um bloco de coeficientes, que foram quantizados usando um método correspondente para a quantização. Um valor reconstrução podeser de-terminado com base em um índice de quantização. Deve notar-se, no entanto, que alguns dos coeficientes do bloco de coeficientes pode ter sido quantizado usando um quantizador de enchimento de ruído. Nes te caso, os valores de reconstrução para estes coeficientes podem ser determinados independentes de um índice de quantização.
[64] Como descrito acima, os índices de quantização estão associados a um bloco de coeficientes, compreendendo uma pluralidade de coeficientes para uma pluralidade de posições de frequências correspondentes. Em particular, os índices de quantização podem corresponder em uma relação de um-para-um com aqueles coeficientes do bloco de coeficientes que não foram quantizados usando o quantiza- dor de enchimento de ruído. O método pode compreender o fornecimento de um conjunto de quantizadores (ou quantizadores inversos). O conjunto de quantizadores pode compreender uma pluralidade de diferentes quantizadores associados com uma pluralidade de diferentes razões sinal para ruído (SNR), respectivamente. A pluralidade de diferentes quantizadores pode incluir um quantizador de enchimento de ruído, um ou mais quantizadores oscilados, e/ou uma ou mais quantizadores não oscilados. O método pode compreender a determinação de uma indicação de SNR indicativa de uma SNR atribuída a um primeiro coeficiente do bloco de coeficientes. O método pode prosseguir na seleção de um primeiro quantizador a partir do conjunto de quantizadores, com base na indicação de SNR, e na determinação de um primeiro coeficiente quantizado (ou seja, um valor de reconstrução) para o primeiro coeficiente do bloco de coeficientes.
[65] De acordo com outro aspecto, um método para a codificação de um sinal de áudio para um fluxo de bits é descrito. O método compreende a determinação de uma pluralidade de índices de quanti- zação quantizando uma pluralidade de coeficientes de um bloco de coeficientes utilizando um quantizador oscilado. A pluralidade de coeficientes pode ser associada com uma pluralidade correspondente de posições de frequência. O bloco de coeficientes pode ser derivado a partir do sinal de áudio. O método pode compreender a seleção de um de M realizações de oscilação predeterminadas, e gerar uma pluralidade de valores de oscilação para quantizar a pluralidade de coeficientes, com base na realização de oscilação selecionada; em que M é um número inteiro maior. Além disso, o método pode compreender a seleção de um livro de códigos de M livros de código predeterminados, e entropia que codifica a pluralidade dos índices de quantização utilizando o livro de códigos selecionado. Os M livros de código predeterminados podem ser associados com as M realizações de oscilação predeterminadas, respectivamente, e o livro de código selecionado pode- ser associadocom a realização de oscilação selecionada. Além disso, o método pode compreender a inserção de dados de coeficiente indicativos da entropia codificadade índices de quantização para o fluxo de bits.
[66] De acordo com um aspecto adicional, um método para descodificar um fluxo de bits para proporcionar um sinal de áudio reconstruído é descrito. O método pode compreender a seleção de uma de M realizações de oscilação predeterminadas, e gerar uma pluralidade de valores de oscilaçãocom base na realização de oscilaçãoselecionada; em que M é um número inteiro maior. A pluralidade de valores de oscilação pode ser usada por uma unidade de quantização inversa que compreende um quantizador oscilado para determinar uma pluralidade correspondente de coeficientes quantizados com base numa pluralidade correspondente de índices de quantização. Como tal, o método pode compreender a determinação da pluralidade de coeficientes quanti- zados utilizando um quantizador oscilado(inverso). Além disso, o método pode compreender a seleção de um livro de códigos de M livros de código predeterminados, e descodificar entropia em dados de coeficiente de fluxo de bits utilizando o livro de códigos selecionado, para fornecer uma pluralidade de índices de quantização. Os M livros de código predeterminados podem ser associados com as M realizações de oscilação predeterminadas, respectivamente, e o livro de código selecionado podeser associadocom a realização de oscilação selecionada. Além disso, o método pode compreender a determinação do sinal de áudio reconstruído com base na pluralidade de coeficientes quantizados.
[67] De acordo com um aspecto adicional, um método para acodificação de um sinal de fala em um fluxo de bits é descrito. O método pode compreender a recepção de uma pluralidade de blocos sequenciais de coeficientes de transformada que compreende um bloco atual e um ou mais blocos anteriores. A pluralidade de blocos sequenciais podeser indicativa de amostras do sinal de voz. Além disso, o método pode compreender a determinação de um bloco atual de coeficientes de transformada estimados com base em um ou mais blocos de coeficientes de transformada anteriores reconstruídos e com base em um parâmetro preditor. Os um ou mais blocos anteriores de coeficientes de transformada reconstruídospodem ter sido derivados a partir dos um ou mais blocos de coeficientes de transformada anteriores. O método pode prosseguir na determinação de um bloco atual de coeficientes de erro de predição com base no bloco de coeficientes de transformada atual e com base no bloco atual de coeficientes de transformada estimado. Além disso, o método pode compreender coeficientes de quantização derivados do bloco atual de coeficientes de erro de predição, utilizando um conjunto de quantizadores. O conjunto de quantizadores pode apresentar qualquer das características descritas no presente documento. Além disso, o método pode compreender a determinação dos dados de coeficiente para o fluxo de bits com base nos coeficientes quantizados.
[68] De acordo com outro aspecto, um método para descodificarum fluxo de bits para fornecer um sinal de fala reconstruído é descrito. O método pode compreender a determinação de um bloco atual de coeficientes de transformada estimados com base em um ou mais blocos anteriores de coeficientes de transformada reconstruídos e com base em um parâmetro preditor derivado do fluxo de bits. Além disso, o método pode compreender a determinação de um bloco atual de coeficientes quantizados residuais de predição com base em dados de coeficiente compreendidos dentro do fluxo de bits, utilizando um conjunto de quantizadores. O conjunto de quantizadores pode ter qualquer das características descritas no presente documento. O método pode prosseguir na determinação de um bloco atual de coeficientes de transformada reconstruídos com base no bloco atual de coeficientes de transformada estimadose com base no bloco atual de coeficientes de erro de predição quantizados. O sinal da fala reconstruído pode ser determinado com base no bloco de coeficientes de transformada atual reconstituídos.
[69] De acordo com outro aspecto, um programa de software édescrito. O programa de software pode ser adaptado para a execução de um processador e para executar as etapas do método descritas no presente documento, quando realizadas no processador.
[70] De acordo com outro aspecto, um meio de armazenamentoé descrito. O meio de armazenamento pode incluir um programa de software adaptado para a execução em um processador e para executar as etapas do processo descritas no presente documento, quando realizadas no processador.
[71] De acordo com outro aspecto, um produto de programa decomputador é descrito. O programa de computador pode compreender instruções executáveis para realizar as etapas do processo descritas no presente documento, quando executadas em um computador.
[72] Deve-se notar que os métodos e sistemas, incluindo as suas modalidadespreferenciais como descritos no presente pedido de patente podem ser usados sozinhos ou em combinação com outros métodos e sistemas descritos no presente documento. Além disso, todos os aspectos dos métodos e sistemas descritos no presente pedido de patente podem ser combinados de várias maneiras. Em particular, as características das reivindicações podem ser combinadas umas com as outras de uma maneira arbitrária.
BREVE DESCRIÇÃO DAS FIGURAS
[73] A invenção é explicada abaixo de uma forma exemplar comreferência aos desenhos anexos, nos quais
[74] Fig. 1a mostra um diagrama de blocos de um exemplo decodificador de áudio proporcionando um fluxo de bits com um fluxo de bits constante;
[75] Fig. 1b mostra um diagrama de exemplo de blocos de umcodificador de áudio proporcionando um fluxo de bits com um fluxo de bits variável;
[76] Fig. 2 ilustra a geração de um exemplo de envelope combase numa pluralidade de blocos de coeficientes de transformada;
[77] Fig. 3a ilustra exemplosde envelopes de blocos de coeficientes de transformada;
[78] Fig. 3b ilustra a determinação de um exemplo de envelopeinterpolado;
[79] Fig. 4 ilustra exemplos de conjuntos de quantizadores;
[80] Fig. 5a mostra um diagrama de blocos de um exemplo dedecodificador de áudio;
[81] Fig. 5b mostra um diagrama de blocos de um exemplo dedecodificador de envelope do decodificador de áudio da Fig. 5a;
[82] Fig.5c mostra um diagrama de blocos de um exemplo depreditorde sub-banda do decodificador de áudio da Fig. 5a;
[83] Fig.5d mostra um diagrama de blocos de um exemplo dedecodificador de espectro do decodificador de áudio da Fig. 5a;
[84] Fig.6a mostra um diagrama de blocos de um exemplo de um conjunto de quantizadores admissíveis;
[85] Fig.6b mostra um diagrama de blocos de um exemplo dequantizador oscilado;
[86] Fig.6c ilustra uma seleção de exemplo de quantizadorescom base no espectro de um bloco de coeficientes de transformada;
[87] Fig.7 ilustra um esquema de exemplo para a determinaçãode um conjunto de quantizadores a um codificador e um decodificador correspondente;
[88] Fig.8 mostra um diagrama de blocos de um exemplo de esquema para descodificar entropia codificadaem índices de quantiza- ção, que foram determinadas utilizando um quantizador oscilado;
[89] As Figs. 9a a 9c mostram exemplos de resultados experimentais; e
[90] Fig.10 ilustra um exemplo de processo de alocação de bit.DESCRIÇÃO DETALHADA
[91] Conforme descrito na seção de fundamentos, é desejávelproporcionar um codec de áudio baseado em transformadaque exibe ganhos relativamente altos de codificação para sinais de fala ou de voz. Tal codec de áudio baseado em transformada pode ser referido como um codec de fala baseado em transformada ou um codec de fala baseado em transformada. Um codec de fala com base em transformação pode ser convenientemente combinado com um codec de áudio baseado em transformada genérico, como AAC ou HE-AAC, uma vez que também opera no domínio da transformada. Além disso, a classificação de um segmento (por exemplo, um quadro) de um sinal áudio de entrada em fala ou não fala, e a comutação posterior entre o codec de áudio genérico e o codec de fala específico pode ser simplificada, devido ao fato de que ambos os codecsoperam no domínio da transformada.
[92] Fig. 1a mostra um diagrama de blocos de um exemplo de codificador de fala com base em transformada 100. O codificador 100 recebe como uma entrada um bloco 131 de coeficientes de transformada (também referidos como uma unidade de codificação). O bloco 131 de coeficiente de transformada podeter sido obtidopor uma unidade de transformada configurada para transformar uma sequência de amostras do sinal de áudio de entrada do domínio do tempo para o domínio da transformada. A unidade de transformada pode ser configurada para executar uma MDCT. A unidade de transformada pode ser parte de um codec de áudio genérico, como AAC ou HE-AAC. Tal codec de áudio genérico pode fazer uso de diferentes tamanhos de blocos, por exemplo, um bloco longo e um bloco curto. Exemplos de tamanhos de bloco são 1024 amostras para um bloco longo e 256 amostras para um bloco curto. Assumindo um fluxo de amostragem de 44,1 kHz e uma sobreposição de 50%, um bloco longo cobre aprox. 20ms do sinal de áudio de entrada e um bloco curto cobre aprox. 5ms do sinal de áudio de entrada. Blocos longos são normalmente utilizados para segmentos estacionários do sinal de áudio de entrada e blocos curtos são normalmente utilizados para segmentos transitórios do sinal de áudio de entrada.
[93] Sinais de fala podem ser considerados estacionários emsegmentos temporais de cerca de 20ms. Em particular, o envelope espectral de um sinal de fala pode ser considerado como sendo estacionário em segmentos temporais de cerca de 20 ms. A fim de ser capaz de derivar estatísticas significativas no domínio da transformada para tais segmentos de 20 ms, pode ser útil para fornecer o codificador de fala baseado em transformada 100 com blocos curtos 131 de coeficientes de transformada (com um comprimento de por exemplo, 5 ms). Ao fazer isso, uma pluralidade de blocos curtos 131 podeser utilizada para obter estatísticas sobre um segmento de tempo, por exemplo, 20 ms (por exemplo, o segmento de tempo de um bloco longo). Além dis- so, isto tem a vantagem de proporcionar uma resolução de tempo adequado para sinais de voz.
[94] Assim, a unidade de transformada pode ser configuradapara proporcionar blocos curtos 131 de coeficientes de transformada, se um segmento atualda entrada do sinal de áudio deve ser classificado como sendo fala. O codificador 100 pode compreender uma unidade de enquadramento 101 configurada para extrair uma pluralidade de blocos 131 de coeficientes de transformada, referidos como um conjunto 132 de blocos de 131. O conjunto 132 de blocos pode também ser referido como um quadro. A título de exemplo, o conjunto 132 de blocos de 131 podecompreender quatro blocos curtos de 256 coeficientes de transformação, cobrindo assim aproximadamente um segmento de 20ms do sinal de áudio de entrada.
[95] O conjunto 132 de blocos pode ser fornecido a uma unidade de estimativa de envelope 102. A unidade de estimativa do envelope 102 pode ser configurada para determinar um envelope 133 com base no conjunto 132 de blocos. O envelope 133 pode ser baseado em valores quadráticos médios(RMS) de coeficientes de transformada correspondentes da pluralidade de blocos 131 compreendidos dentro do conjunto 132 de blocos. Um bloco 131 proporciona, tipicamente, uma pluralidade de coeficientes de transformada (por exemplo, 256 coeficientes de transformada) numa correspondente pluralidade de posições de frequência 301 (ver Fig. 3a). A pluralidade de posições de frequência 301 podeser agrupada numa pluralidade de bandas de frequência 302. A pluralidade de bandas de frequência 302 pode ser selecionada com base em considerações psicoacústicas. A título de exemplo, as posições de frequência 301 podem ser agrupadas em bandas de frequência 302, de acordo com uma escala logarítmica ou uma escala de Bark. O envelope 134 que foi determinado com base em um conjunto atual132 de blocos pode compreender uma pluralida- de de valores de energia para a pluralidade de bandas de frequência 302, respectivamente. Um valor particular da energia para uma banda de frequência particular 302 pode ser determinado com base nos coeficientes de transformada dos blocos 131 do conjunto 132, que correspondem às posições de frequência 301 que caem dentro da banda de frequência particular 302. O valor de energia particular pode ser determinado com base no valor RMS destes coeficientes de transformada. Como tal, um envelope 133 para um conjunto atual 132 de blocos (referido como um envelope atual 133) pode ser indicativo de um envelope médio dos blocos 131 de coeficientes de transformada compreendidos dentro do conjunto atual 132 de blocos, ou podem ser indicativos de um envelope médio de blocos 132 de coeficientes de transformada utilizados para determinar o envelope 133.
[96] Deve-se notar que o envelope atual 133 pode ser determinado com base em um ou mais blocos de coeficientes de transformada 131 adjacentes ao conjunto atual132 de blocos. Isto é ilustrado na Fig. 2, onde o envelope atual 133 (indicado pelo envelope atual quan- tizado 134) é determinado com base nos blocos 131 do conjunto atual 132 de blocos e com base no bloco 201 do conjunto de blocos que precedem o conjunto atual 132 de blocos. No exemplo ilustrado, o envelope atual 133 é determinado com base em cinco blocos 131. Ao levar em conta os blocos adjacentes ao determinar o envelope atual 133, uma continuidade dos envelopes de conjuntos adjacentes 132 de blocos pode ser assegurada.
[97] Ao determinar o envelope atual 133, os coeficientes detransformada dos diferentes blocos 131 podem ser ponderados. Em particular, os blocos mais exteriores 201, 202 que são tomados em consideração para a determinação do envelope atual 133 podem ter um peso menor do que os blocos restantes 131. A título de exemplo, os coeficientes de transformada dos blocos mais exteriores 201, 202 podem ser ponderados com 0,5, em que os coeficientes de transformada de outros blocos 131 podem ser ponderados com 1.
[98] Deve-se notar que de um modo semelhante à análise deblocos 201 de um conjunto anterior 132 de blocos, um ou mais blocos (assim chamados blocos look-ahead) de um conjunto diretamente seguinte 132 de blocos podeser consideradopara a determinação do envelope atual 133.
[99] Os valores de energia do envelope atual 133 podem serrepresentados em uma escala logarítmica (por exemplo, em uma escala dB). O envelope atual 133 pode ser fornecido a uma unidade de quantizaçãode envelope103, que está configurado para quantizar os valores de energia do envelope atual 133. A unidade de quantizaçãode envelope 103 pode fornecer uma resolução quantizador predeterminada, por exemplo, uma resolução de 3 dB. Os índices de quantização do envelope 133 podem ser proporcionados como dados de envelope 161 dentro de um fluxo de bits gerado pelo codificador 100. Além disso, o envelope quantizado 134, ou seja, o envelope compreendendo os valores de energia quantizados do envelope 133, pode ser fornecido a uma unidade de interpolação 104.
[100] A unidade de interpolação 104 é configurada para determinar um envelope para cada bloco 131 do conjunto atual 132 de blocos com base no envelope atual quantizado 134 e com base no envelope anterior quantizado 135 (que já foi determinado para o conjunto 132 de blocos diretamente anteriores ao conjunto atual 132 de blocos). A operação da unidade de interpolação 104 é ilustrada nas Figs. 2, 3A e 3B. Fig.2 mostra uma sequência de blocos 131 de coeficientes de transformada. A sequência dos blocos 131 é agrupada em conjuntos sucessivos 132de blocos, em que cada conjunto de blocos 132 é usado para determinar um envelope quantizado, por exemplo, o envelope atual quantizado 134 eo envelope anterior quantizado135. Fig. 3a mostra exemplos de um envelope anterior quantizado 135 e um envelope atual quantizado 134. Como indicado acima, os envelopes podem ser indicativos de energia espectral 303 (por exemplo, sobre uma escala de dB). Os valores de energia correspondentes 303 do envelope anterior quantizado 135 e do envelope atual quantizado 134 para a mesma frequência de banda 302 podem ser interpolados (por exemplo, usando interpolação linear) para determinar um envelope interpolado 136. Em outras palavras, os valores de energia 303 de uma determinada banda de frequências 302 podem ser interpolados para fornecer o valor de energia 303 do envelope interpolado 136 dentro da banda de frequências 302.
[101] Deve-se notar que o conjunto de blocos para os quais osenvelopes interpolados 136 são determinados e aplicados podem ser diferentes do conjunto atual 132 de blocos, com base no qual o envelope atual quantizado 134 é determinado. Isto é ilustrado na Fig. 2, que mostra um deslocado definido 332 de blocos, que é deslocado em comparação com o conjunto atual 132 de blocos e que compreende os blocos 3 e 4 do conjunto anterior 132 de blocos (indicados por numerais de referência 203 e 201, respectivamente) e os blocos 1 e 2 do conjunto atual 132 de blocos (indicados por numerais de referência 204 e 205, respectivamente). Por uma questão de fato, os envelopes interpolados 136 determinados com base no envelope atual quantiza- do 134 e com base no envelope anterior quantizado 135 podem ter uma importância cada vez maior para os blocos do conjunto deslocado 332 de blocos, em comparação com a relevância para os blocos do conjunto atual 132 de blocos.
[102] Assim, os envelopes interpolados 136 mostrados na Fig. 3bpodem ser usados para uniformizar os blocos 131 do conjunto deslocado 332de blocos. Isto é mostrado pela Fig. 3b, em combinação com a Fig. 2. Pode ser visto que o envelope interpolado341 da Fig. 3b pode ser aplicado para bloquear 203 da Fig. 2, que o envelope interpolado 342 da Fig. 3b pode ser aplicado para bloquear 201 da Fig. 2, que o envelope interpolado 343 da Fig. 3b pode ser aplicado ao bloco 204 da Fig. 2, e que o envelope interpolado344 da Fig. 3b (o qual no exemplo ilustrado corresponde ao envelope atual quantizado 136) podeser aplicado para bloquear 205 da Fig. 2. Como tal, o conjunto 132 de blocos para a determinação do envelope atual quantizado 134 pode ser diferente do conjunto deslocado 332 de blocos para os quais os envelopes interpolados 136 são determinados e ao qual os envelopes interpolados 136 são aplicados (para fins de uniformização). Em particular, o envelope atual quantizado 134 pode ser determinado utilizando certo look-ahead com relação aos blocos 203, 201, 204, 205 do conjunto deslocado 332 de blocos, que devem ser uniformizados utilizando o envelope atual quantizado 134. Isto é benéfico de um ponto de vista de continuidade.
[103] A interpolação dos valores de energia 303 para determinarenvelopes interpolados 136 está ilustrado na Fig. 3b. Pode ser visto que, pela interpolação entre um valor de energia do envelope anterior quantizado 135 para o valor de energia correspondente dos valores de energia do envelope atualquantizado 134 dos envelopes interpolados 136 pode ser determinado para os blocos 131 do conjunto deslocado 332 de blocos. Em particular, para cada bloco131 do conjunto deslocado 332 um envelope interpolado 136 pode ser determinado, proporcionando assim uma pluralidade de envelopes interpolados 136 para a pluralidade de blocos 203, 201, 204, 205 do conjunto deslocado 332 de blocos. O envelope interpolado136 de um bloco 131 de coeficiente de transformada (por exemplo, qualquer um dos blocos 203, 201, 204, 205 do conjunto deslocado de blocos 332) podeser utilizadopara codificar o bloco 131 de coeficientes de transformada. Deve notar-se que índices de quantização 161 do envelope atual 133 são fornecidos a um decodificador correspondente dentro do fluxo de bits. Consequentemente, o decodificador correspondente pode ser configurado para determinar a pluralidade de envelopes interpolados 136 de uma forma analógica para a unidade de interpolação 104 do codificador 100.
[104] A unidade de enquadramento 101, a unidade de estimativade envelope 103, a unidade de quantização de envelope 103, ea unidade de interpolação 104 operam em um conjunto de blocos (ou seja, o conjunto atual 132 de blocos e/ou o conjunto deslocadosde blocos 332). Por outro lado, a codificação atual do coeficiente de transformada pode ser realizada numa base de bloco-por-bloco. No que se segue, é feita referência à codificação de um bloco atual 131 de coeficientes de transformada, que pode ser qualquer um de uma pluralidade de bloco131 do conjunto deslocado 332 de blocos (ou, possivelmente, o conjunto atual 132 de blocos em outras implementaçõesdo codificador de fala baseado em transformada 100).
[105] O envelope interpoladoatual 136 para o bloco atual 131 pode fornecer uma aproximação do envelope espectral dos coeficientes de transformada do bloco atual 131. O codificador 100 pode compreender uma unidade pré-uniformização 105 e uma unidade de determinação de ganho de envelope 106 que são configuradas para determinar um envelope ajustado 139 para o bloco atual131, com base no envelope atual 136 e interpoladocom base no bloco atual 131. Em particular, um ganho de envelope para o bloco atual 131 pode ser determinado de tal modo que uma variância dos coeficientes de transformada uniformizadosdo bloco atual 131 seja ajustada. X (k), k = 1,..., K pode seros coeficientes de transformada do bloco atual 131 (com, por exemplo, K = 256), e E (k), k = 1,..., K pode ser valores médios de energia espectrais 303 do envelope interpolado atual 136 (com valores de energia E (k) de uma mesma banda de frequência 302 sendo iguais). O ganho de envelope pode ser determinado de tal modo que a variância doscoeficientes de transformada uniformizadosé é é é r\é ajustada. Em particular, o ganho de envelope pode serdeterminado de tal modo que a variância é um.
[106] Deve notar-se que o ganho de envelopepode ser determinado por uma subfaixa da faixa de frequências completa do bloco atual 131 de coeficientes de transformada. Em outras palavras, o ganho de envelope pode ser determinado apenas com base em um subconjunto das posições de frequência 301 e/ou com base em apenas um subconjunto das bandas de frequência 302. A título de exemplo, o ganho de envelope pode ser determinado com base nas posições de frequência 301 maiores do que umaposição de frequência inicial 304 (a posição de frequência inicial sendo maior do que 0 ou 1). Como consequência, o envelope ajustado 139 para o bloco atual 131 pode ser determinado por aplicação do ganho de envelope -apenas para os valores médios de energia espectral 303 do envelope interpolado atual 136, a qual está associada com posições de frequência 301 encontrando-se acima da posiçãode frequência inicial 304. Assim, o envelope ajustado 139 para o bloco atual 131 pode corresponder ao envelope interpolado atual 136, para posições de frequência 301 em e abaixo da posição de frequência inicial, e pode corresponder ao envelope interpolado atual 136 compensado pelo ganho de envelope -, para posições de frequência 301 acima da posição de frequência inicial. Isto é ilustrado na Fig. 3a ajustado pelo envelope 339 (mostrado em linhas tracejadas).
[107] A aplicação do ganho de envelope - 137 (que também éreferido como um ganho de correção de nível) para o envelope interpolado atual 136 corresponde a um ajuste ou um deslocamento do envelope interpolado atual 136, obtendo-se assim um envelope ajustado 139, tal como ilustrado pela Fig.3a. O ganho de envelope -137 pode ser codificadocomo dados de ganho 162 para o fluxo de bits.
[108] O codificador 100 pode compreender ainda uma unidade derefinamento de envelope 107 que está configurada para determinar o envelope ajustado 139 com base no ganho de envelope -137 e com base no envelope interpolado atual 136. O envelope ajustado 139 pode ser usado para o processamento de sinal do bloco 131 de coeficiente de transformada. O ganho de envelope <137 pode ser quantizado para uma resolução mais alta (por exemplo, em etapas de 1dB) em comparação com o envelope interpolado atual 136 (que pode ser quantizada em etapas de 3dB). Como tal, o envelopeajustado 139 pode ser quantizado para a resolução maior do ganho de envelope <137 (por exemplo, em etapas de 1dB).
[109] Além disso, a unidade de refinamento do envelope 107 pode ser configurada para determinar um envelope de alocação 138. O envelope de alocação 138 pode corresponder a uma versão quantiza- da do envelope ajustado 139 (por exemplo, quantizado a níveis de quantizaçãode 3dB). O envelope de alocação 138 pode ser utilizado para fins de alocação de bits. Em particular, o envelope de alocação 138 pode ser usado para determinar - para um determinado coeficiente de transformada do bloco atual 131 - um quantizador particular, a partir de um conjunto predeterminado de quantizadores, em que o quantizador particular deve ser usado para quantizar o coeficiente de transformada nomeadamente.
[110] O codificador 100 compreende uma unidade de uniformização 108 configurada para uniformizar o bloco atual 131 utilizando o envelope ajustado 139, obtendo-se, assim, o bloco 140 de coeficientes de transformada uniformizados ' < . O bloco 140 de coeficientes de transformada uniformizados7 - pode ser codificado utilizando um circuito de predição no domínio da transformada. Como tal, o bloco 140 pode ser codificado utilizando um preditor de sub-banda 117. O circuito de predição compreende uma unidade de diferença 115 configurada para determinar um bloco 141 de coeficientes de erro de predição Δ (k), com base no bloco 140 de coeficientes de transformada uniformizados ; e com base em um bloco 150 de coeficientes de transformada estimados , por exemplo, 2 . . Deve notar-se que,devido ao fato de que o bloco 140 compreende coeficientes de transformada uniformizados, ou seja, coeficientes de transformada que foram normalizados, ou então uniformizados usando valores de energia 303 do envelope ajustado 139, o bloco 150 de coeficientes de transformada estimados inclui também estimativas de coeficientes de transformada uniformizados. Em outras palavras, a unidade de diferença 115 opera no chamado domínio uniformizado. Por consequência, o bloco 141 de coeficientes de erro de predição Δ (k) é representado no domínio uniformizado.
[111] O bloco 141 de coeficientes de erro de predição Δ (k) podem apresentar uma variância que difere de um. O codificador 100 pode compreender uma unidade de reescalonamento 111 configurada para reescalonarcoeficientes de erro de predição Δ (K), para obter um bloco 142 de coeficientes de erro reescalonados. A unidade de reesca- lonamento 111 podefazer uso de uma ou mais regras heurísticas pre-determinadas para realizar o reescalonamento. Como resultado, o bloco 142 de coeficientes de erro reescalonados apresenta uma variância que é (em média) mais perto de um (em comparação com o bloco 141 de coeficientes de erro de predição). Isto pode ser benéfico para a quantização e codificação subsequentes.
[112] O codificador 100 compreende uma unidade de quantiza-ção de coeficiente 112 configurada para quantificar o bloco 141 de coeficientes de erro de previsão ou o bloco 142 de coeficientes de erro reescalonados. A unidade de quantização de coeficiente 112 pode compreender ou pode fazer uso de um conjunto de quantizadorespre- determinados. O conjunto de quantizadorespredeterminadas podefor- necer quantizadores com diferentes graus de precisão ou diferente resolução. Isto é ilustrado na Fig. 4 onde quantizadores diferentes 321, 322, 323 são ilustrados. Os diferentes quantizadores podem apresentar diferentes níveis de precisão (indicados pelos diferentes valores de dB). Um quantizador particular da pluralidade de quantizadores 321, 322, 323 pode corresponder a um valor específico do envelope de alocação 138. Como tal, um valor de energia do envelope de alocação 138 pode apontar para um quantizador correspondente da pluralidade de quantizadores. Como tal, a determinação de um envelope de alocação 138 pode simplificar o processo de seleção de um quantizador para ser usado por um coeficiente de erro particular. Em outras palavras, o envelope de alocação 138 pode simplificar o processo de alocação de bits.
[113] O conjunto de quantizadores pode compreender um oumais quantizadores 322 que fazem uso de oscilação para randomiza- ção do erro de quantização. Isto é ilustrado na Fig. 4 mostrando um primeiro conjunto 326 de quantizadorespredeterminados que compreende um subconjunto 324 de quantizadores oscilados e um segundo conjunto 327 de quantizadorespredeterminados, que compreende um subconjunto 325 de quantizadores oscilados. Como tal, a unidade de quantização de coeficiente 112 pode fazer uso de diferentes conjuntos 326, 327 de quantizadorespredeterminados, em que o conjunto de quantizadorespredeterminado, o qual deve ser usado pela unidade de quantização de coeficiente 112 pode depender de um parâmetro de controle 146 fornecido pelo preditor 117 e/ou determinado com base em outras informações lateraisdisponíveis no codificador e no decodi- ficador correspondente. Em particular, a unidade de quantização de coeficiente 112 pode ser configurada para selecionar um conjunto 326, 327 de quantizadorespredeterminado para quantizar o bloco 142 de coeficiente de erro reescalonado, com base no parâmetro de controle 146, em que o parâmetro de controle 146 pode depender de um ou mais parâmetros de predição fornecidos pelo preditor 117. O um ou mais parâmetros de previsão podem ser indicativos da qualidade do bloco 150 de coeficientes de transformada estimados fornecidos pelo preditor 117.
[114] Os coeficientes quantizados de erro podem ser codifica-dospor entropia, usando, por exemplo, um código de Huffman, assim, gerando os dados de coeficiente de rendimento163 para serem incluídos dentro no fluxo de bits gerado pelo codificador 100.
[115] Nos outros detalhes a seguir sobre a seleção ou a determinação de um conjunto 326 de quantizadores 321, 322, 323 são descritos. Um conjunto 326 de quantizadores pode corresponder a uma coleção ordenada 326 de quantizadores. A coleta ordenada 326 de quantizadorespode compreender N quantizadores, em que cada quan- tizador pode corresponder a um nível diferente de distorção. Como tal, a coleção 326 de quantizadores podeprever Npossíveis níveis de distorção. Os quantizadores da coleta 326 podem ser ordenados de acordo com a diminuição da distorção (ou equivalente de acordo com o aumento SNR). Além disso, os quantizadores podem ser marcados por indicativos inteiros. A título de exemplo, os quantizadores podem ser indicados 0, 1, 2, etc., em que um indicativo inteiro crescente pode indicar um aumento da SNR crescente.
[116] A coleção 326 de quantizadores pode ser tal que asseguraum intervalo entre dois quantizadores SNR consecutivos é de pelo menos aproximadamente constante. Por exemplo, a SNR do quantiza- dor com um rótulo “1” pode ser igual a 1,5 dB, e a SNR do quantizador com um rótulo “2” pode ser 3,0dB. Assim, os quantizadoresda coleção ordenada 326 de quantizadores podem ser tais que, quando se muda de um primeiro quantizador para um segundo quantizador adjacente, a SNR (relação sinal-ruído) é aumentada por um valor substancialmente constante (por exemplo, 1,5 dB), para todos os pares de primeiro e segundo quantizadores.
[117] A coleção 326 de quantizadorespodecompreender• um quantizador de enchimento de ruído 321 que pode proporcionar uma SNR que é ligeiramente menor do que ou igual 0dB, para o qual o processo de alocação de fluxo pode ser aproximada como 0dB;• quantizadores N 322 que podem usar oscilação subtrativa e que tipicamente correspondem a níveis SNR intermediários (por exemplo, Ndith > 0); e• quantizadores N clássicos 323 que não usamoscilação subtrativa e que tipicamente correspondem a níveis SNR relativamente elevadas (por exemplo, N > 0). Os quantizadores não oscilados 323 podem corresponder a quantizadores escalares.
[118] O número total N de quantizadores é dadaporN = 1 + Nd,th + Ncq.
[119] Um exemplo de um conjunto de quantizador 326 é mostrado na Fig.6a.O quantizadorde enchimento de ruído 321 da coleção 326 de quantizadores, por exemplo, utilizando um gerador de números aleatórios que emite uma realização de uma variável aleatória de acordo com um modelo estatístico predefinido. Uma possível implementação de tal gerador de números aleatórios pode envolver o uso de uma tabela fixa com amostras aleatórias do modelo estatístico pre- definido e, possivelmente, umarenormalizaçãosubsequente. O gerador de números aleatórios, que é usado no codificador 100 está em sincronia com o gerador de números aleatórios no decodificador correspondente. O sincronismo dos geradores de números aleatórios pode ser obtido usando a semente comum para inicializar os geradores de números aleatórios, e/ou através da redefinição de estados dos gera- dores de números em instâncias de tempo fixas. Alternativamente, os geradores podem ser implementados como tabelas de consulta contendo dados aleatórios gerados de acordo com um modelo estatístico prescrito. Em particular, se o preditorestiver ativo, pode ser assegurado que a saída do quantizador de enchimento de ruído 321 é a mesma no codificador 100 e no decodificador correspondente.
[120] Além disso, a coleção de quantizadores 326 pode compreender um ou mais quantizadores oscilados 322. Os um ou mais quan- tizadores oscilados podem ser gerados utilizando uma realização de um sinal de oscilação de pseudonúmero 602 conforme mostrado na Fig.6a. O sinal de oscilação de pseudonúmero 602 pode corresponder a um bloco 602 de valores de oscilação pseudoaleatórios. O bloco 602 de números de oscilação pode ter a mesma dimensionalidade como a dimensionalidade do bloco 142 de coeficientes de erro reescalonados, que está sendo quantizado. O sinal de oscilação 602 (ou o bloco 602 de valores de oscilação) pode ser gerado utilizando um gerador de oscilação 601. Em particular, o sinal de oscilação 602 podeser geradouti- lizando uma tabela de consulta contendo amostras aleatórias distribuídas uniformemente.
[121] Tal como será demonstrado no contexto da Fig. 6b, valoresde oscilação individuais 632 do bloco 602 de valores de oscilação são usados para aplicar umaoscilação a um coeficiente correspondente que deve ser quantizado (por exemplo, correspondente a um coeficiente de erro reescalonadodo bloco 142 de coeficientes de erro reescalonados). O bloco 142 de coeficientes de erro reescalonados pode compreender um total de K coeficientes de erro reescalonados. De um modo semelhante, o bloco 602 de valores de oscilação pode compreender K valores de oscilação 632. O k°valor de oscilação 632, com k = 1,..., K, do bloco 602 de valores de oscilação pode ser aplicado para o k°coeficiente de erro reescalonado do bloco 142 de coeficientes de erro escalonados.
[122] Tal como indicado acima, o bloco 602 de valores de oscilação pode ter a mesma dimensão que o bloco 142 de coeficientes de erroescalonados, que devem ser quantizados. Isso é benéfico, pois isso permite a utilização de um único bloco 602 de valores de oscilação para todos os quantizadores oscilados 322 de uma coleção 326 de quantizadores. Em outras palavras, a fim de quantizar e codificar um determinado bloco 142 de coeficientes de erro escalonados, oscilação pseudoaleatória 602 pode ser gerada apenas uma vez para todas as coleções admissíveis 326, 327 de quantizadores e para todas as alocações possíveis para a distorção. Isto facilita a obtenção de sincronismo entre o codificador 100 e o decodificador correspondente, uma vez que o uso do sinal de oscilação único 602 não precisa ser explicitamente sinalizado ao decodificador correspondente. Em particular, o codificador 100 e o decodificador correspondente podem fazer uso do mesmogerador de oscilação 601 que está configurado para gerar o mesmo bloco 602 de valores de oscilação para o bloco 142 de coeficientes de erro reescalonados.
[123] A composição da coleção de quantizadores 326 é, de preferência, com base em considerações de psicoacústicas. Baixacodifica- ção de transformada de fluxo pode levar a artefatos espectrais incluindo orifícios espectrais e restriçãode banda que são acionados pela natureza do processo de enchimento com água reverso que ocorre em esquemas de quantização convencionais que são aplicados para coeficientes de transformada. A audibilidade dos orifícios espectrais pode ser reduzida pela injeção de ruído para essas bandas de frequência 302 queocorrem sendo abaixo do nível da água por um curto período de tempo e que foram, assim, atribuídas com um fluxo de bits zero.
[124] Quantização grosseira de coeficientes nodomínio da frequência pode levar a artefatos específicos de codificação (por exem- plo, orifícios espectrais profundos, chamados “birdies”) que são gerados numa situação em que os coeficientes de uma determinada banda de frequências 302 são quantizados para zero (no caso de orifícios profundos espectrais) em um quadro e quantizados para valores não- zero no quadro seguinte e quando todo o processo se repete para dezenas de milissegundos. Quanto mais grosseiro os quantizadoressão, mais propensos eles são para produzir tal comportamento. Este problema técnico podeser tratadopela aplicação de um enchimento de ruído para índices de quantização utilizados para a reconstrução do sinal em nível 0(como descrito, por exemplo, em US7447631). A solução descrita em US7447631 facilita uma redução dos artefatos, uma vez que reduz a audibilidade dos orifícios profundos espectrais associados com quantização de nível 0, no entanto, artefatos associados com os orifícios espectrais permanecem. Pode-se aplicar o método de enchimento de ruído também aos índices da quantização do quantiza- dor grosseiro. No entanto, isso iria degradar significativamente o desempenho de MSEdestes quantizadores. Tem sido observado pelos inventores que este inconveniente pode ser abordadopelo uso de quantizadores oscilados. No presente documento, propõe-se usar quantizadores 322 com uma oscilação subtrativa para níveis baixos de SNR, a fim de resolver o problema de desempenho de MSE. Além disso, o uso de quantizadores 322 com oscilação subtrativa facilita propriedades de enchimento de ruído para todos os níveis de reconstrução. Uma vez que um quantizador oscilado 322 é analiticamente tratá- vel em qualquer fluxo de bits, é possível reduzir (por exemplo, minimi-zar a) a perda de desempenho devido aoscilação pela derivação de pós-ganhos 614, que são úteis a níveis de elevada distorção (ou seja, baixastaxas).
[125] Em geral, é possível alcançar um fluxo de bits baixo arbitrariamente com um quantizador oscilado 322. Por exemplo, no caso es calar pode-se optar por utilizar um tamanho de etapa de quantização- muito grande. No entanto, a operação de fluxo de bits zero não é viável na prática, porque iria impor requisitos exigentes na precisão numérica necessária para permitir a operação do quantizador com um codificador de comprimento variável. Isto proporciona a motivação para aplicar um quantizadorde enchimento de ruído genérico 321 para o nível de distorção 0dB SNR, em vez de aplicar um quantizador oscilado 322. A coleção proposta 326 de quantizadores é concebida de tal modo que os quantizadores oscilados 322 são utilizados para níveis de distorção que estão associados com tamanhos de etaparelativa- mente pequenos, de tal forma que a codificação de comprimento variável pode ser implementada sem ter de abordar questões relacionadas com a manutenção da precisão numérica.
[126] Para o caso de quantização escalar, os quantizadores 322com oscilação subtrativa podem ser implementados utilizando pós- ganhos que fornecem perto de um ótimo desempenho de MSE. Um exemplo de um quantizador escalar oscilado subtrativamente 322 é mostrado na Fig. 6b. O quantizador oscilado 322 compreende um quantizadorescalar uniforme Q 612 que é utilizado dentro de uma estrutura de oscilação subtrativa. A estrutura de oscilação subtrativa compreende uma unidade de subtração de oscilação 611 que está configurada para subtrair um valor de oscilação 632 (a partir do bloco 602 de valores de oscilação) a partir de um coeficiente de erro correspondente (a partir do bloco 142 de coeficientes de erro reescalonados). Além disso, a estrutura de oscilação subtrativa compreende uma unidade de adição correspondente 613 que está configurada para adicionar o valor de oscilação 632 (a partir do bloco 602 de valores de oscilação) para o coeficiente de erro quantizado escalar correspondente. No exemplo ilustrado, a unidade de subtração de oscilação 611 é colocadaà montante do quantizador escalar Q 612 e a unidade de adi- ção de oscilação 613 é colocadaà jusante do quantizador escalar Q 612. Os valores de oscilação 632 do bloco 602 de valores de oscilação podemser tomados em valores a partir do intervalo [-0,5,0,5) ou [0,1) vezes o tamanho da etapa do quantizador escalar 612. Deve notar-se que, numa implementação alternativa do quantizador oscilado 322, a unidade de subtração de oscilação 611 e a unidade de adição de oscilação 613 podem ser trocadas uma com a outra.
[127] A estrutura de oscilação subtrativa pode ser seguida poruma unidade de escalonamento 614 que está configurada para reescalonar os coeficientes de erro quantizados por um pós-ganho quanti- zador Y. Posteriormente ao escalonamento dos coeficientes de erro quantizados, o bloco 145 de coeficientes de erro quantizados é obtido. Deve notar-se que a entrada X para o quantizador oscilado 322 tipicamente corresponde aos coeficientes do bloco 142 de coeficientes de erro reescalonados que caem na banda de frequências particular, que devem ser quantizados utilizando o quantizador oscilado 322. De uma maneira semelhante, a saída do quantizador oscilado 322 tipicamente corresponde aos coeficientes quantizados do bloco 145 de coeficientes de erro quantizados que se enquadram na banda de frequências particular.
[128] Pode ser assumido que a entrada X para o quantizadorosci-lado 322 é média zero e que a variância a2 = E {X 2 }da entrada X é conhecida. (Por exemplo, a variância do sinal pode ser determinada a partir do envelope do sinal). Além disso, pode ser assumido que um bloco de oscilação pseudoaleatório Z 602 compreendendo valores de oscilação 632 está disponível para o codificador 100 e o decodificador correspondente. Além disso, pode ser assumido que os valores de oscilação 632 são independentes da entradaX. Várias oscilações diferentes 602 podem ser usadas, mas estas assumem no seguinte que a oscilação Z 602 é distribuída uniformemente entre 0 e Δ, o que pode ser indicado por U (0, Δ). Na prática, qualquer oscilação que cumpre aschamadas condições de Schuchman podeser utilizada (por exemplo, uma oscilação 602 que é distribuída uniformemente entre [-0,5,0,5) vezes o tamanho do etapa Δ de quantizadorescalar 612).
[129] O quantizador Q 612 pode ser uma estrutura ea extensãoda sua célula de Voronoi pode serΔ . Neste caso, o sinal de oscilação teriauma distribuição uniforme sobre a extensão da célula de Voronoi do retículo que é usado.
[130] O pós-ganho de quantizadorY podeser derivadotendo emconta a variância do sinal e o tamanho da etapa de quantização, desde o quantizadoroscilado é analiticamente tratável para qualquer tamanho de etapa(ou seja,fluxo de bits). Em particular, o pós-ganho pode ser derivado para melhorar o desempenho MSE de um quantizador com umaoscilação subtrativa. O pós-ganho pode ser apresentado por:
Figure img0003
[131] Mesmo que por aplicação do pós-ganho Y, o desempenhoMSE do quantizador oscilado 322 pode ser melhorado, um quantizador oscilado 322 normalmente tem um desempenho MSE inferior a um quantizador sem oscilação (embora esta perda de desempenho desa- parececonforme o fluxo de bits aumenta). Por conseguinte, em geral, quantizadores oscilados são mais barulhentos do que suas versões não osciladas. Por isso, pode ser desejável usar quantizadores oscilados 322 somente quando o uso de quantizadores oscilados 322 é justificado pela propriedade perceptualbenéficade enchimento de ruídode quantizadores oscilados 322.
[132] Assim, pode ser proporcionadauma coleção de quantizado-res 326 que compreendem três tipos de quantizadores. A coleção de quantizador ordenada 326 pode compreender um único quantizadorde enchimento de ruído 321, umou mais quantizadores 322 com oscila ção subtrativa e um ou mais quantizadoresclássicos (não oscilados) 323. Os quantizadores consecutivos 321, 322, 323 podem proporcionar melhorias incrementais para a SNR. As melhorias incrementais entre um par de quantizadores adjacentes da coleção ordenada 326 de quantizadores podem ser substancialmente constantes para alguns ou todos os pares de quantizadores adjacentes.
[133] Uma coleção particular 326 de quantizadores podeser definida pelo número de quantizadores oscilados 322 e pelo número de quantizadores não oscilados 323 compreendidos na coleção particular 326. Além disso, a coleção particular 326 de quantizadores podeser definidapor uma realização particular do sinal de oscilação 602. A coleção 326 pode ser concebida de forma a proporcionar quantização perceptualeficiente da renderizaçãode coeficiente de transformada: taxa zero de enchimento de ruído(tornando SNR um pouco menor ou igual a 0 dB); enchimento de ruído por oscilação subtrativaem nível de distorção intermediário (SNR intermediário); e falta do enchimento de ruídoem níveis baixos de distorção (alta SNR). A coleção 326 fornece um conjunto de quantizadores admissíveis que podeser selecionado durante um processo de alocação de fluxo. Uma aplicação de um quantizadorparticular da coleção 326 de quantizadores aos coeficientes de uma determinada banda de frequências 302 é determinada durante o processo de alocação de fluxo. Normalmente não é conhecido, a priori, qual quantizador será usado para quantificar os coeficientes de uma banda de frequênciaparticular, 302. No entanto, é normalmente conhecida a priori, qual é a composição da coleção 326 dos quanti- zadores.
[134] O aspecto de usar diferentes tipos de quantizadores paradiferentes bandas de frequência 302 de um bloco 142 de coeficientes de erro está ilustrado na Fig. 6c.,onde um resultado exemplar do processo de alocaçãode fluxo é mostrado. Neste exemplo, supõe-se que a alocaçãode fluxo segue o chamadoprincípio de preenchimento de água reversa. Fig.6c ilustra o espectro 625 de um sinal de entrada (ou o envelope do bloco aserquantizado de coeficientes). Pode ser visto que a banda de frequências 623 tem relativamente alta energia espectral e é quantizada usando um quantizadorclássico 323, que fornece níveis relativamente baixos de distorção. As bandas de frequências 622 exibem uma energia espectral acima do nível da água 624. Os coeficientes nestas bandas de frequências 622 podem ser quantizados usando osquantizadores oscilados 322 que fornecem níveis de distorção intermediários. As bandas de frequências 621 exibem uma energia espectral abaixo do nível da água 624. Os coeficientes nestas bandas de frequências 621 podem ser quantizados utilizandoenchimento de ruído defluxo zero. Os diferentes quantizadores utilizados para quantificar o bloco particular de coeficientes (representada pelo espectro 625) pode ser parte de umacoleção particular 326 de quantizadores, que foi determinada para o bloco particular de coeficientes.
[135] Assim, os três tipos diferentes de quantizadores 321 e 322,323 podem ser aplicadas seletivamente (por exemplo, seletivamente em relação à frequência). A decisão sobre a aplicação de um tipo particular de quantizador pode ser determinada no contexto de um procedimento de alocação de fluxo, que é descrito abaixo. O procedimento de alocação de fluxo pode fazer uso de um critério perceptual que pode ser derivado a partir do envelope RMS do sinal de entrada (ou, por exemplo, a partir da densidade de potência espectral do sinal). O tipo do quantizadora ser aplicado numa banda de frequências particular, 302 não precisa ser explicitamente sinalizado ao decodificador correspondente. A necessidade para a sinalização do tipo selecionado do quantizador é eliminada, uma vez que o decodificador correspondente é capaz de determinar o conjunto particular 326 de quantizadores que foi usada para quantizar um bloco do sinal de entrada a partir do crité- rio perceptual subjacente (por exemplo, o envelope de alocação 138), a partir da composição de predeterminada da coleção de quantizado- res (por exemplo, um conjunto predeterminado de diferentes coleções de quantizadores), e a partir de um único parâmetro global de aloca- çãode fluxo (também referido como um parâmetro de deslocamento).
[136] A determinação no decodificadorda coleção 326 de quanti-zadores, que foi utilizada pelo codificador 100 é facilitada pela concepção da coleção 326 dos quantizadores a fim de que os quantizadores- sejam ordenados de acordo com a sua distorção (por exemplo, SNR). Cada quantizador da coleção 326 podediminuir a distorção (pode refinar a SNR) do quantizador anterior por um valor constante. Além disso, uma coleção particular 326 de quantizadores podeser associada a uma única realização de um sinal de oscilação pseudoaleatório 602, durante todo o processo de alocação de fluxo. Como um resultado disso, o resultado do procedimento de alocação de fluxo de não afetar a realização do sinal de oscilação 602. Isto é benéfico para assegurar a convergência do processo de alocaçãode fluxo. Além disso, isto permite que o decodificadorrealize a decodificação, se o decodificadorco- nhece a única realização do sinal de oscilação 602. O decodificador pode ser sensibilizadopara a realização do sinal de oscilação 602, utilizando o mesmo gerador de oscilação pseudoaleatório 601 no codificador 100 e no decodificador correspondente.
[137] Tal como indicado acima, o codificador 100 pode ser configurado para executar um processo de alocação de bits. Para este efeito, o codificador 100 pode compreender unidades de alocação de bits 109, 110. A unidade de alocação de bits 109 pode ser configurada para determinar o número total de bits 143 que estádisponível para a codificação do bloco atual 142 de coeficientes de erro reescalonados. O número total de bits 143 pode ser determinado com base no envelope de alocação 138. A unidade de alocação de bits 110 pode ser configu- rada para fornecer uma alocação relativa dos bits para os diferentes coeficientes de erro reescalonados, dependendo do valor de energia correspondente no envelope de alocação 138.
[138] O processo de alocação de bit pode fazer uso de um procedimento de alocação iterativo. No decurso do procedimento de alocação, o envelope de alocação 138 pode ser deslocado utilizando um parâmetro de deslocamento, selecionando assim quantizadores com o aumento/diminuição da resolução. Como tal, o parâmetro de deslocamento pode ser utilizado para refinar ou para engrossar a quantização global. O parâmetro de deslocamento pode ser determinado de tal modo que os dados de coeficiente 163, que são obtidos usando os quantizadores dados pelo parâmetro de deslocamento e o envelope de alocação 138, compreende um número de bits que corresponde a (ou não excede) o número total de bits 143 atribuído ao bloco atual 131. O parâmetro de deslocamento, que foi utilizado pelo codificador 100 para codificar o bloco atual 131 é incluído como dados de coeficiente 163 para o fluxo de bits. Como consequência, o decodificador correspondente é ativado para determinar os quantizadores que têm sido utilizados pela unidade de quantizaçãode coeficiente 112 para quantizar o bloco 142 de coeficientes de erro reescalonados.
[139] Como tal, o processo de alocação de fluxo pode ser executado no codificador 100, onde se visa distribuir os bits disponíveis 143 de acordo com um modelo perceptual. O modelo perceptual pode depender do envelope de alocação 138 derivado do bloco 131 de coeficientes de transformada. O algoritmo de alocação de fluxo distribui os bits disponíveis 143 entre os diferentes tipos de quantizadores, ou seja, o fluxo zero de enchimento de ruído 321, a um ou mais quantizado- res oscilados 322 e um ou mais quantizadores não oscilados clássicos 323. A decisão final sobre o tipo de quantizadora ser usado para quan- tizar os coeficientes de uma determinada banda de frequência 302 do espectro pode depender do sinal de modelo perceptual, na realização de oscilação de pseudoaleatória e na restrição da fluxo de bits.
[140] No decodificador correspondente, a alocação de bits (indicado pelo envelope de alocação 138 e pelo parâmetro de deslocamento) pode ser usada para determinar as probabilidades dos índices de quantização, a fim de facilitar a decodificação sem perdas. Um método de cálculo de probabilidades dos índices de quantização podeser utilizado, que emprega a utilização de uma realização da oscilação pseu- doaleatóriada banda 602, o modelo perceptual parametrizado pelo envelope de sinal 138 e o parâmetro de alocaçãode fluxo (ou seja, o parâmetro de deslocamento). Usando o envelope de alocação 138, o parâmetro de deslocamento e o conhecimento sobre o bloco 602 de valores de oscilação, a composição da coleção 326 de quantizadores no decodificador podeser sincronizada com a coleção 326 usada no codificador 100.
[141] Como descrito acima, a restrição de fluxo de bits pode serespecificada em termos de um número máximo permitido de bits por quadro 143. Isto se aplica, por exemplo, aos índices de quantização, que são, subsequentemente, a entropia codificada usando, por exemplo, um código de Huffman. Em particular, isto se aplica na codificação de cenários em que o fluxo de bits é gerado de uma forma sequencial, em que um único parâmetro é quantizado de cada vez, e em que o índice de quantização correspondente é convertido para uma palavra de código binário, o qual é acrescentada ao fluxo de bits.
[142] Se codificação aritmética (ou faixa de codificação) está emuso, o princípio é diferente. No contexto da codificação aritmética, tipicamente uma única palavra de código é atribuída a uma longa sequência de índices de quantização. Normalmente não é possível associar exatamente uma porção particular da sequência de bits com um determinado parâmetro. Em particular, no contexto da codificação aritmética, o número de bits que é necessáriopara codificar uma realização aleatória de um sinal é tipicamente desconhecido. Este é o caso, mesmo se o modelo estatístico do sinal é conhecido.
[143] A fim de tratardo problema técnico acima mencionado, propõe-se fazer o codificador aritmético uma parte do algoritmo de alocação de fluxo. Durante o processo de alocação de fluxo o codificador tenta quantizar e codificar um conjunto de coeficientes de uma ou mais bandas de frequência 302. Para cada tentativa nesse sentido, é possível observar a mudança do estado do codificador aritmético e calcular o número de posições para avançar no fluxo de bits (em vez de calcular um número de bits). Se umarestrição máxima de fluxo de bitfor ajustada, esta restrição máxima de fluxo de bits pode ser utilizada no procedimento de alocação de fluxo. O custo dos bits de terminação do código aritmético pode ser incluído no custo do último parâmetro codificado e, em geral, o custo dos bits de terminação irá variar dependendo do estado do codificador aritmético. No entanto, uma vez que o custo de terminação está disponível, é possível determinar o número de bits necessários para codificar os correspondentes índices de quan- tização para o conjunto de coeficientes de uma ou mais bandas de frequência 302.
[144] Deve-se notar que, no contexto da codificação aritmética,uma única realização de oscilação 602 pode ser utilizada para todo o processo de alocação de fluxo (de um bloco particular de coeficientes 142). Como descrito acima, o codificador aritmético pode ser utilizado para estimar o custo de fluxo de bits de um quantizador de seleção particular dentro do procedimento de alocação de fluxo. A mudança do estado do codificador aritmético pode ser observada e a mudança de estado pode ser usada para calcular um certo número de bits necessários para realizar a quantização. Além disso, o processo de terminação do código aritmético pode ser usado dentro do processo de alocação de fluxo.
[145] Como indicado acima, os índices de quantização podemser codificados utilizando um código aritmético ou um código de entropia. Se os índices de quantização são codificadospor entropia, a distribuição de probabilidade dos índices de quantização podeser tomada em consideração, de modo a atribuir as palavras de código de comprimento variável para individual ou grupos de índices de quantização. O uso da osculação pode ter um impacto sobre a distribuição de probabilidade dos índices de quantização. Em particular, a realização particular de um sinal de oscilação 602 pode ter um impacto sobre a distribuição de probabilidade dos índices de quantização. Devido ao número virtualmente ilimitado de realizações do sinal de oscilação 602, no caso geral, as probabilidades de palavras de código não são conhecidas à priori, e não é possível utilizar codificação de Huffman.
[146] Tem sido observado pelos inventores que é possível reduziro número de possíveis realizações de oscilação a um conjunto relativamente pequeno e manejável de realizações do sinal de oscilação 602. A título de exemplo, para cada banda de frequência 302 um conjunto limitado de valores de oscilação pode ser fornecido. Para este efeito, o codificador 100 (bem como o decodificador correspondente) pode compreender um gerador de oscilação discreto 801 configurado para gerar o sinal de oscilação 602, selecionando uma de M realizações de oscilação predeterminadas (ver Fig. 8). A título de exemplo, M realizações de oscilação diferentes predeterminadas podem ser usadas para todas as bandas de frequência 302. O número M de realizações de oscilação predeterminadas pode ser M<5 (por exemplo, M=4 ou M=3)
[147] Devido ao número limitado M de realizações de oscilação, épossível formar um (possivelmente multidimensional) livro de códigos Huffman para cada realização oscilada, dando origem a uma coleção 803 de M livros de código. O codificador 100 pode compreender uma unidade de seleção do livro de códigos 802, que está configurado para selecionar um da coleção 803 de M livros de código predeterminados, com base na realização de oscilação selecionada. Ao fazer isso, é garantido que a codificação de entropia está em sincronia com a geração de oscilação. O livro de códigos selecionado 811 pode ser usado para codificar individuais ou grupos de índices de quantização, que foram quantizados utilizando a realização de oscilação selecionada. Como consequência, o desempenho de codificação de entropia pode ser melhorado, quando usando quantizadores oscilados.
[148] A coleção 803 de livros de código predeterminada e o gerador de oscilação discreto 801 também podem ser utilizados no de- codificador correspondente (tal como ilustrado na Fig. 8). A decodifica- ção é exequível se umaoscilação pseudoaleatória é utilizada e se o decodificador permanece em sincronia com o codificador 100. Neste caso, o gerador de oscilação discreto801 no decodificador gera o sinal de oscilação 602, e a realização de oscilação particular é unicamente associada com um livro de códigos Huffmanparticular 811 da coleção 803 de livros de códigos. Dado o modelo psicoacústico (por exemplo, representado pelo envelope de alocação 138 e o parâmetro de aloca- çãode fluxo) e o livro de código selecionado 811, o decodificador é capaz de executar a decodificação utilizando o decodificadorde Huffman 551 para proporcionar os índices de quantização 812 descodificados.
[149] Como tal, um conjunto relativamente pequeno 803 de livrosde código de Huffmanpodeser usado em vez de codificação aritmética. O uso de um livro de códigos particular 811 a partir do conjunto 813 de livros de código de Huffman pode depender de uma realização predeterminada do sinal de oscilação 602. Ao mesmo tempo, um conjunto limitado de valores de oscilação admissíveis formando M realizações de oscilação predeterminadas. O processo de alocação de fluxo pode então envolver o uso de quantizadores não oscilados, de quantizado- res oscilados e de codificação de Huffman.
[150] Como resultado da quantização dos coeficientes de erroescalonados, um bloco 145 de coeficientes de erro quantizados é obtido. O bloco 145 de coeficientes de erro quantizados corresponde ao bloco de coeficientes de erro que se encontram disponíveis no decodi- ficador correspondente. Consequentemente, o bloco 145 de coeficientes de erro quantizados pode ser utilizado para determinar um bloco 150 dos coeficientes de transformadaestimados. O codificador 100 pode compreender uma unidade de reescalonamento inversa 113 configurada para executar o inverso das operações realizadas pelo reesca- lonamento da unidade de reescalonamento 113, obtendo-se assim um bloco 147 de coeficientes de erro quantizados escalados. Uma unidade de adição 116 pode ser utilizada para determinar um bloco 148 de coeficientes uniformizados reconstituídos, adicionando o bloco 150 de coeficientes de transformada estimados para o bloco 147 de coeficientes de erro quantizados escalados. Além disso, a unidade de uniformi- zaçãoinversa 114 pode ser usada para aplicar o envelope ajustado 139 para o bloco 148 de coeficientes uniformizadosreconstruídos, obtendo-se assim um bloco 149 de coeficientes reconstruídos. O bloco 149 de coeficientes reconstruídos corresponde à versão do bloco 131 de coeficientes de transformada que está disponível na decodificação correspondente. Por consequência, o bloco 149 de coeficientes re-construídos podeser utilizadono preditor 117 para determinar o bloco 150 de coeficientes estimados.
[151] O bloco 149 de coeficientes reconstruídos é representadono domínio não uniformizado, ou seja, o bloco 149 de coeficientes reconstruído é também representativodo envelope espectral do bloco atual 131. Como descrito abaixo, isto pode ser benéfico para o desempenho do preditor 117.
[152] O preditor 117 pode ser configurado para estimar o bloco 150 de coeficientes de transformada estimados com base em um ou mais blocos de coeficientes anteriores 149 reconstruídos. Em particular, o preditor 117 pode ser configurado para determinar um ou mais parâmetros de predição de tal modo que um critério predeterminado de erro de predição é reduzido (por exemplo, minimizado). A título de exemplo, os um ou mais parâmetros de previsão podem ser determinados de tal modo que uma energia, ou uma energia perceptualmente ponderada, do bloco 141 de coeficientes de erro de predição é reduzida (por exemplo, minimizada). Os um ou mais parâmetros de previsão podem ser incluídos como preditor de dados 164 para o fluxo de bits gerado pelo codificador 100.
[153] O preditor 117 pode fazer uso de um modelo de sinal, comodescrito no pedido de patente US61750052 e os pedidos de patente que reivindicam prioridade dos mesmos, cujo conteúdo é aqui incorporado por referência. Os um ou mais parâmetros de previsão podem corresponder a um ou mais parâmetros modelos do modelo de sinal.
[154] Fig.1b mostra um diagrama de blocos de outro exemplo decodificador de fala baseado em transformada 170. O codificador de fala baseado em transformada 170 da Fig. 1b compreende muitos dos componentes do codificador 100 da Fig.1a. No entanto, codificador de fala baseado em transformada 170 da Fig. 1b é configurado para gerar um fluxo de bits com um fluxo de bits variável. Para este efeito, o codificador 170 compreende uma unidade de estado AverageBit Rate (ABR) 172 configurado para manter o controle de fluxo de bits que tem sido utilizado pelo fluxo de bits para os blocos anteriores 131. A unidade de alocação de bits 171 usa essas informações para determinar o número total de bits 143, que está disponível para a codificação do bloco atual 131 de coeficientes de transformada.
[155] Em geral, oscodificadores de fala baseadosem transforma-da100, 170 são configurados para gerar um fluxo de bits que é indica- tivo de ou que compreende• dados de envelope 161 indicativos de um envelope atual quantizado 134. O envelope atual quantizado 134 é usado para descrever o envelope dos blocos de um conjunto de atual 132 ou um conjunto deslocado 332 de blocos de coeficientes de transformada.• ganho de dados 162 indicativos de um ganho de correção de nível -para ajustar o envelope interpolado 136 de um bloco atual 131 de coeficientes de transformada. Normalmente, um ganho diferente -um é fornecido para cada bloco 131 do conjunto atual 132 ou o conjunto deslocado 332 de blocos.• dados de coeficiente 163 indicativos do bloco 141 de coeficientes de erro de predição para o bloco atual 131. Em particular, os dados de coeficiente 163 são indicativos do bloco 145 de coeficientes de erro quantizados. Além disso, os dados de coeficiente 163 podem ser indicativos de um parâmetro de deslocamento, que pode ser usado para determinar os quantizadores para a realização de quantização inversa no decodificador.• dados de preditor 164 indicativos de um ou mais coeficientes de previsão sendo utilizados para determinar um bloco 150 de coeficientes estimados a partir dos blocos anteriores 149 de coeficientes reconstruídos.
[156] No que se segue, um correspondente decodificador defalabaseado em transformada 500 é descrito no contexto das Figs. 5a a 5d. Fig.5a mostra um diagrama de blocos de um exemplo de decodifi- cador de fala à base de transformada 500. O diagrama de blocos que mostra um banco de filtros de síntese 504 (também referido como unidade de transformação inversa), que é utilizado para converter um bloco 149 de coeficientes reconstruídos a partir do domínio de transformada para domínio do tempo, deste modo rendendo amostras do sinal de áudio descodificado. O banco de filtros de síntese 504 pode fazer uso de uma MDCT inversa com uma etapapredeterminada (por exemplo, um etapa de cerca de 5 ms ou 256 amostras).
[157] O circuito principal do decodificador 500 opera em unidadesdesta etapa. Cada etapa produz um vetor domínio da transformada (também referido como um bloco) que tem um comprimento ou dimensão que corresponde a uma definição de largura de banda predeterminada do sistema. Após opreenchimento zero até o tamanho de transformada de banco de filtros de síntese 504, o vetorde domínio de transformada será utilizado para sintetizar umaatualização de sinal de domínio de tempo de um comprimento predeterminado (por exemplo, 5 ms) para a sobreposição/adicionar processo de filtros de síntese 504.
[158] Como indicado acima, os codecs de áudio baseados emtransformada genéricos tipicamente empregam uma estrutura com sequências de blocos curtos na faixa de 5 ms para manuseamento transiente. Como tal, codecs de áudio baseados em transformada genéricos proporcionam as transformadas necessárias e ferramentas de comutação de janela para uma convivência perfeita de blocos curtos e longos. Um frontend espectralde fala definido por omissão de filtros de banco de síntese 504 da Fig. 5a pode, portanto, ser convenientemente integrado no codec de áudio com base em transformada de finalidade geral, sem a necessidade de introduzir ferramentas de comutação adicionais. Em outras palavras, o decodificador de fala à base de trans- formada500 da Fig. 5a pode ser convenientemente combinado com um decodificador de áudio baseado em transformada genérico. Em particular, o decodificador de fala à base de transformada500 da Fig. 5a pode fazer uso de banco de filtros de síntese 504 fornecidos pelo decodificador de áudio baseado em transformada genérico (por exemplo, o decodificador AAC ou HE-AAC).
[159] A partir do fluxo de bits de entrada (em particular a partir dos dados do envelope 161 e a partir dos dados de ganho 162 compreendidos dentro do fluxo de bits), um envelope de sinal pode ser determinado por um decodificador de envelope 503. Em particular, o de- codificador de envelope 503 pode ser configurado para determinar o envelopeajustado 139 com base nos dados do envelope 161 e nos dados de ganho 162). Como tal, o decodificador de envelope 503 pode executar tarefas semelhantes à unidade de interpolação 104 e a unidade de refinamento de envelope 107 do codificador 100, 170. Como descrito acima, o envelope ajustado 109 representa um modelo da variância de sinal em um conjunto de bandas de frequências predefinidos 302.
[160] Além disso, o decodificador 500 compreende umaunidadede uniformização inversa 114 que está configurada para aplicar o envelope ajustado 139 a um vetor de domínio uniformizado, cujas entradas podem ser nominalmente de umavariância. O vetor de domínio uniformizadocorresponde ao bloco 148 de coeficientes uniformizados- reconstruídosdescritos no contexto do codificador 100, 170. Na saída da unidade de uniformização inversa 114, o bloco 149 de coeficientes reconstruídos é obtido. O bloco 149 de coeficientes reconstruídos é fornecido ao banco de filtros de síntese 504 (para gerar o sinal de áudio descodificado) e para o preditor de sub-banda517.
[161] O preditor de sub-banda517 funciona de uma maneira semelhante ao preditor 117 do codificador 100, 170. Em particular, o preditor de sub-banda517 é configurado para determinar um bloco 150 de coeficientes de transformada estimados (no domínio uniformizado) com base em um ou mais blocos de coeficientes reconstruídos anteriores 149 (usando o um ou mais parâmetros de previsão sinalizados dentro do fluxo de bits). Em outras palavras, o preditorde sub-banda 517 é configurado para a produção de um vetor de domínio uniformi- zadoprevisto a partir de um armazenador de saída de vetores anteri- ormente descodificados e envelopes de sinal, com base nos parâmetros de previsão, tal como um preditor de atraso e um ganho do predi- tor. O decodificador 500 compreende um decodificadorpreditor 501 configurado para descodificar os dados de preditor164 para determinar um ou mais parâmetros de predição.
[162] O decodificador 500 compreende adicionalmente um deco-dificadorde espectro 502, que é configurado para fornecer uma correção de aditivo ao vetorde domínio uniformizadoprevisto, com base tipicamente na maior parte do fluxo de dados (ou seja, com base nos dados de coeficiente 163). O processo de decodificaçãode espectro é controlado principalmente por um vetor de alocação, o qual é derivado do envelope e um parâmetro de controlede alocaçãotransmitido (também referida como o parâmetro de deslocamento). Como ilustrado na Fig. 5a, pode haver uma dependência direta do decodificadorde espectro 502 nos parâmetros preditores520. Como tal, o decodificadorde espectro 502 pode ser configurado para determinar o bloco 147 de co-eficientes de erro quantizadosescalonados com base nos dados recebidos de coeficiente 163. Tal como descrito no contexto do codificador 100, 170, os quantizadores 321, 322, 323 usados para quantizar o bloco 142 de coeficientes de erro reescalonados tipicamente depende do envelope de alocação 138 (que pode ser derivado a partir do envelope ajustado 139) e sobre o parâmetro de deslocamento. Além disso, os quantizadores 321, 322, 323 podem depender de um parâmetro de controle 146 fornecido pelo preditor 117. O parâmetro de controle 146 pode ser derivado pelo decodificador 500 usando osparâmetros de preditor 520 (de um modo análogo ao codificador 100, 170).
[163] Tal como indicado acima, o fluxo de bits recebido compreende dados do envelope 161 e os dados de ganho 162 que podem ser utilizados para determinar o envelope ajustado 139. Em particular, a unidade 531 de decodificador do envelope 503 pode ser configurado para determinar envelopeatualquantizado134 a partir dos dados do envelope 161. A título de exemplo, o envelope atualquantizado134 pode ter uma resolução de 3 dB em bandas de frequências predefinidas 302 (como indicado na Fig. 3a). O envelope quantizado atual 134 pode ser atualizado para cada conjunto 132, 332 de blocos (por exemplo, de quatro em quatro unidades de codificação, isto é, blocos, ou a cada 20 ms), em particular para cada conjunto deslocado 332 de blocos. As bandas de frequência de 302 o envelope quantizadoatual134 pode compreender um número crescente de posições de frequência 301 como uma função da frequência, de modo a adaptar-se às propriedades de audição humana.
[164] O envelope quantizado atual 134 podeser interpoladoline-armente de um envelopequantizado anterior 135 em envelopes interpolados 136 para cada bloco 131 do conjunto deslocado 332 de blocos (ou, eventualmente, do conjunto atual 132 de blocos). Os envelopes interpolados 136 podem ser determinados no domínio quantizadode 3 dB. Isto significa que os valores de energia interpolados 303 podem ser arredondados para o mais próximo do nível de 3 dB. Um exemplo de envelope interpolado136 é ilustrado pelo gráfico tracejado da Fig.3a. Para cada envelopequantizadoatual134, quatro ganhosde correção de nível -137 (também referido como ganhos de envelope) são fornecidos como dados de ganho de decodificação 162. Aunidade de decodificação de ganho 532 pode ser configurada para determinar os- ganhos de correção de nível <137 a partir dos dados de ganho 162. Os ganhos de correção de nível podem ser quantizados em etapas de 1 dB. Cada ganho de correção de nível é aplicado ao envelope interpolado correspondente 136, a fim de fornecer os envelopes ajustados 139 para os diferentes blocos 131. Devido ao aumento da resolução dos ganhos de correção de nível 137, o envelopeajustado 139 pode ter um aumento da resolução (por exemplo, uma resolução de 1 dB).
[165] Fig.3b mostra um exemplo de interpolação linear ou geométrica entre o envelope quantizado anterior 135 e o envelope quanti- zadoatual134. Os envelopes 135, 134 podem ser separados numa parte do nível médio e uma parte de forma do espectro logarítmico. Estas partes podem ser interpoladas com estratégias independentes, como umaestratégia linear, uma geométrica, ou uma harmôni- ca(resistores em paralelo). Como tal, os diferentes esquemas de interpolação podem ser usados para determinar os envelopes interpolados 136. O esquema de interpolação usado pelo decodificador 500, tipicamente corresponde ao esquema de interpolação utilizado pelo codificador 100, 170.
[166] A unidade de refinamento de envelope 107 do decodifica-dor de envelope 503 pode ser configurada para determinar um envelope de alocação 138 do envelope ajustado 139 quantizando o envelope ajustado 139 (por exemplo, em etapas de 3 dB). O envelope de alocação 138 pode ser utilizado em conjunto com o parâmetro de controlede alocação ou parâmetro de deslocamento(compreendido dentro dos dados de coeficiente 163) para criar um vetor de alocação inteiro nominal utilizado para controlar a decodificação espectral, isto é, a deco- dificação dos dados de coeficiente 163. Em particular, o vetornominal de alocaçãode inteiro pode ser usado para determinar um quantizador inverso para quantizar os índices de quantização compreendidos dentro dos dados de coeficiente 163. O envelope de alocação 138 e o vetor nominal de alocaçãode inteiro podem ser determinados de um modo análogo no codificador 100, 170 e no decodificador 500.
[167] Fig.10 ilustra um exemplo de processo de alocação de bitscom base no envelope de alocação 138. Como descrito acima, o envelope de alocação 138 pode ser quantizado de acordo com a resolução predeterminada (por exemplo, uma resolução de 3 dB). Cada valor de energia espectral quantizado do envelope de alocação 138 pode ser atribuído a um valor inteiro correspondente, em que os valores inteiros adjacentes podem representar uma diferença de energia espectral correspondente à resolução predeterminada (por exemplo, diferença de 3 dB). O conjunto resultante de números inteiros pode ser referido como um envelope de alocaçãode inteiro 1004 (denominadoiEnv). O envelope de alocaçãode inteiro 1004 pode ser deslocado pelo parâmetro de deslocamento, para obter o vetor nominal de alocação de inteiro (referido como iAlloc), que fornece uma indicação direta do quantizador para ser utilizado para quantizar o coeficiente de determinada banda de frequência302 (identificado por um Índice de banda de frequência, bandIdx).
[168] Fig. 10 mostra em diagrama 1003 o envelope de alocação-de inteiro 1004 como uma função das bandas de frequências 302. Pode ver-se que para a banda de frequência 1002 (bandIdx = 7) o envelope de alocação de inteiro 1004 assume o valor inteiro -17 (iEnv [7] = -17). O envelope de alocaçãode inteiro 1004 pode ser limitado a um valor máximo (referido como iMax, por exemplo iMax= -15). O processo de alocação de bits pode fazer uso de uma fórmula de alocação de bits que proporciona um índice quantizador 1006 (denominadoiAlloc [bandIdx]) como uma função do envelope de alocação de inteiro 1004 e o parâmetro de deslocamento (referido como AllocOffset). Como descrito acima, o parâmetro de deslocamento(ou seja,AllocOffset) é transmitido para o decodificador correspondente 500, permitindo assim que o decodificador 500 determine os índices de quantizador 1006, utilizando a fórmula de alocação de bits. A fórmula de alocação de bit pode ser dada poriAlloc[bandIdx] = iEnv[bandIdx] -(iMax- CONSTANT_OFFSET )+AllocOffset,em que CONSTANT_OFFSET podeser uma constante de deslocamento, por exemplo, CONSTANT_OFFSET = 20. A título de exemplo, se o processo de alocação de bits determinou que a restrição de fluxo de bitpode ser conseguida usando um parâmetro de deslocamento- AllocOffset = -13, o índice quantizador 1007 da 7a banda de frequência pode ser obtido como iAlloc [7] = -17 - (-15-20) - 13 = 5. Usando a fórmula de alocação de bit acima indicada para todas as bandas de frequências 302, índices de quantizador 1006 (e por consequência os quantizadores 321, 322, 323) para todas as bandas de frequências 302 podem ser determinados. Um índice quantizador menor do que zero pode ser arredondado para um índice quantizador zero. De um modo semelhante, um índice quantizador maior que o índice quantiza- dormáximo disponível pode ser arredondado para o índice quantizador máximo disponível.
[169] Além disso, a Fig. 10 mostra um exemplo de envelope deruído 1011 que pode ser alcançado utilizando o esquema de quantiza- ção descrito no presente documento. O envelope de ruído 1011 mostra o envelope de ruído de quantização que é introduzido durante a quantização. Se representados graficamente em conjunto com o envelope de sinal (representado por o envelope de alocação de inteiro 1004 na Fig. 10), o envelope de ruído 1011 ilustra o fato de a distribuição do ruído de quantização serperceptualmenteotimizadaem relação ao envelope de sinal.
[170] A fim de permitir que um decodificador 500 para sincronizarcom um fluxo de bits recebido, diferentes tipos de quadros podem ser transmitidos. Um quadro pode corresponder a um conjunto 132, 332 de blocos, em particular, a um bloco deslocado 332 de blocos. Em particular, os chamados quadros P podem ser transmitidos, os quais são codificados de forma relativa com relação a um quadro anterior. Na descrição acima, assumiu-se que o decodificador 500 está ciente do envelope quantizado anterior 135. O envelope quantizado anterior 135 pode ser fornecido dentro de um quadro anterior, de tal modo que o conjunto atual 132 ou o conjunto deslocado correspondente 332 pode corresponder a um quadro P. No entanto, em um cenário de partida, o decodificador 500, tipicamente, não está ciente do envelope quantiza- do anterior 135. Para este efeito, um quadro I pode ser transmitido (por exemplo, após o partidaou numa base regular). O quadro I pode com-preender dois envelopes, um dos quais é utilizado como o envelope anterior quantizado 135 e o outro é utilizado como o envelope atual quantizado 134. Os quadros I podem ser usados para o caso de partidado frontendespectral de fala (ou seja, do decodificadorde fala baseado em transformada 500), por exemplo, quando se segue um quadro empregando um modo de codificação de áudio diferente e/ou como uma ferramenta para permitir explicitamente um ponto de divisão da sequência de bits de áudio.
[171] A operação do preditorde sub-banda 517 é ilustrada naFig.5d. No exemplo ilustrado, parâmetros de preditor 520 são um parâmetro de atraso e um parâmetro de ganho de preditorç. Os parâmetros de preditor520 podem ser determinados a partir dos dados 164 utilizando uma tabela predeterminada de valores possíveis para o parâmetro de atraso e o parâmetro de ganho de preditor. Isso permite a transmissão eficiente de fluxo de bits de dosparâmetros de preditor 520.
[172] Os um ou mais vetores de coeficiente de transformada previamente descodificados (por exemplo, os um ou mais blocos de coeficientes anteriores reconstruídos149) podem ser armazenados em umarmazenador de sinal de sub-banda (ou MDCT) 541. O armazena- dor 541 pode ser atualizado de acordo com a etapa (por exemplo, cada 5 ms). O extrator de preditor 543 pode ser configurado para operar sobre o armazenador 541 dependendo do parâmetro de atraso normalizador. O parâmetro de atraso normalizado7 pode ser determinado através da normalização do parâmetro de atraso 520 para as unidades de etapa (por exemplo, para unidades de etapa MDCT). Se o parâmetro de fase “é um número inteiro, o extrator 543 pode buscar um ou mais unidades de tempo “de vetores de coeficiente de transformada previamente descodificadasna memória intermediária 541. Em outras palavras, o parâmetro de fase “pode ser indicativo de que os um ou mais blocos anteriores149 de coeficientes reconstruídos devem ser utilizados para determinar o bloco 150 de coeficientes de transformada estimados. Uma discussão detalhada em relação a uma possível implementação do extrator 543 é fornecida no pedido de patente US61750052 e os pedidos de patente que reivindicam prioridade dos mesmos, o conteúdo dos quais é aqui incorporado por referência.
[173] O extrator 543 pode operar em vetores (ou blocos) transportando envelopes de sinal completos. Por outro lado, o bloco 150 de coeficientes de transformada estimados (a ser fornecido pelo preditor de sub-banda517) é representado no domínio uniformizado. Por conseguinte, a saída do extrator 543 pode ser moldada em um vetor de domínio uniformizado. Isto pode ser conseguido usando um modelador 544 que faz uso dos envelopes ajustados 139 dos um ou mais blocos anteriores 149 de coeficientes reconstruídos. Os envelopes ajustados 139 dos um ou mais blocos anteriores 149 de coeficientes reconstruí- dospodem ser armazenados em um armazenador de envelope 542. O modelador de unidade 544 pode ser configurado para obter um envelope de sinal atrasado para ser utilizado nauniformização de unidades de tempo no armazenadorde envelope 542, onde “;é o número inteiro mais próximo de “. Em seguida, o vetor de domínio uniformizado pode ser escalonado pelo parâmetro de ganho p para produzir o bloco 150 de coeficientes de transformada estimados (no domínio uniformizado).
[174] Como uma alternativa, o processo de uniformização atrasado realizado pelo modelador 544 pode ser omitido utilizando um preditor de sub-banda 517 que funciona no domínio uniformizado, por exemplo, um preditor de sub-banda 517 que opera nos blocos 148 de coeficientes uniformizadosreconstruídos. No entanto, verificou-se que uma sequência de vetores de domínio uniformizados (ou blocos) não mapeia bem para sinais de tempo, devido aos aspectos tendenciosos de tempo da transformada (por exemplo, o transformada MDCT). Como consequência, o ajuste ao modelo de sinal subjacente do extrator 543 é reduzido a um nível mais elevado de resultados de codificação de ruído da estrutura alternativa. Por outras palavras, verificou-se que os modelos de sinal (por exemplo, modelos sinusoidais ou periódicos) utilizados pelo preditorde sub-banda 517 gera um melhor desempenho no domínio não uniformizado(em comparação com o domínio uniformi-zado).
[175] Deve-se notar que, em um exemplo alternativo, a saída dopreditor 517 (ou seja, o bloco 150 de coeficientes de transformada estimados) pode ser adicionada na saída da unidade de uniformização inversa 114 (ou seja, para o bloco 149 de coeficientes reconstruídos) (ver Fig. 5a). A unidade modeladora 544 da Fig. 5c pode então ser configurada para executar a operação de uniformização atrasada combinada e uniformizaçãoinversa.
[176] Elementos no fluxo de bits recebido podem controlar alim-peza ocasional de sub-banda o armazenador 541 e o armazenador de envelope 541, por exemplo no caso de uma primeira unidade de codificação (ou seja, um primeiro bloco) de um quadro I. Isto permite a de- codificação de um quadro I, sem o conhecimento dos dados anteriores. A primeira unidade de codificação tipicamente não será capaz de fazer uso de uma contribuição preditiva, mas pode, contudo, utilizar um número relativamente menor de bits para transmitir as informações de preditor 520. A perda de ganho de preditor pode ser compensada através da alocação de mais bits para a codificação de erro de predi- ção desta primeira unidade de codificação. Tipicamente, a contribuição de preditor é novamente substancial para a segunda unidade de codificação (ou seja, um segundo bloco) de um quadro I. Devido a estes aspectos, a qualidade pode ser mantida com um aumento relativamente pequeno nofluxo de bits, mesmo com um uso muito frequente de quadros I.
[177] Em outras palavras, os conjuntos 132, 332 de blocos (também referidos como quadros) compreendem uma pluralidade de blocos 131, que podem ser codificados utilizando codificação preditiva. Ao codificar um quadro I, somente o primeiro bloco 203 de um conjunto de blocos 332 não podeser codificadoutilizando o ganho de código alcançado por um codificador preditivo. Já o bloco diretamente seguinte 201 podefazer uso dos benefícios da codificação preditiva. Isto significa que os inconvenientes de um quadro Icom relação à eficiência de codificação estão limitados à codificação do primeiro bloco 203 de coeficientes de transformação do quadro 332, e não se aplicam aos outros blocos 201, 204, 205 do quadro 332. Assim, o esquema de codificação de fala baseado em transformada descrito no presente documento permite uma utilização relativamente frequente de quadros I, sem impacto significativo na eficiência da codificação. Como tal, o esquema de codificação de fala baseado em transformada presentemente descrito é particularmente adequado para aplicações que requerem uma sincronização relativamente rápida e/ou relativamente frequente entre codificador e decodificador.
[178] Fig.5d mostra um diagrama de blocos de um exemplo dedecodificadorde espectro 502. O decodificadorde espectro 502 compreende um decodificador sem perdas 551 que está configurado para descodificar os dados de coeficiente codificadosem entropia 163. Além disso, o decodificadorde espectro 502 compreende um quantizador inverso 552, que está configurado para atribuir valores de coeficiente para os índices de quantização compreendidos dentro dos dados de coeficiente 163. Como ressaltado no contexto do codificador 100, 170, diferentes coeficientes de transformada podem ser quantizados usando quantizadores diferentes selecionados a partir de um conjunto de quantizadorespredeterminados, por exemplo, um conjunto finito de modelo baseado em quantizadores escalares. Como mostrado na Fig. 4, um conjunto de quantizadores 321, 322, 323 pode compreender diferentes tipos de quantizadores. O conjunto de quantizadores pode compreender um quantizador 321 que fornece a síntese de ruído (no caso de fluxo de bits zero), um ou mais quantizadores oscilados 322 (para relativamente baixas razões sinal para ruído, SNR, e para fluxos de bits intermediários) e/ou um ou mais quantizadores simples 323 (para SNRs relativamente elevadas e para fluxos de bits relativamente elevados).
[179] A unidade de refinamento de envelope 107 pode ser configurada para fornecer o envelope de alocação 138, que pode ser combinado com o parâmetro de deslocamento compreendido dentro dos dados de coeficiente 163, para obter um vetor de alocação. O vetor de alocação contém um valor inteiro para cada banda de frequência 302. O valor inteiro para uma banda de frequência particular 302 aponta para o ponto de distorção de fluxo a ser utilizado para a quantização inversa dos coeficientes de transformada de banda particular 302. Em outras palavras, o valor inteiro para a banda de frequência particular 302 aponta para o quantizadora ser usado para a quantização inversa dos coeficientes de transformada de banda particular 302. Um aumento do valor de número inteiro por um corresponde a um aumento de 1,5 dB na SNR. Para os quantizadores oscilados 322 e quantizadores- simples 323, um modelo de distribuição de probabilidade Laplaciano pode ser utilizado na codificação sem perdas, o que pode empregar codificação aritmética. Um ou mais quantizadores oscilados 322 pode ser usado para preencher a lacuna de uma forma transparente entre casos de baixo e altofluxo de bits. Os quantizadores oscilados 322 podem ser benéficos em criar qualidade áudio de saída suficientemente suave para sinais de ruído semelhantesa estacionárias.
[180] Em outras palavras, o quantizador inverso 552 pode serconfigurado para receber os índices de quantização de coeficiente de um bloco atual 131 de coeficientes de transformada. Os um ou mais índices de quantização de coeficiente de uma determinada banda de frequência 302 foram determinados usando um quantizador correspondente a partir de um conjunto predeterminado de quantizadores. O valor do vetor de alocação (que pode ser determinado por deslocamento do envelope de alocação 138 com o parâmetro de deslocamento) para a banda de frequência particular 302 indica o quantizador que foi usado para determinar um ou mais índices de quantização coeficientes da banda de frequência particular 302. Tendo identificado o quantizador, os um ou mais índices de coeficiente de quantização inversa podem ser quantizados para proporcionar o bloco 145 de coeficientes de erro quantizados.
[181] Além disso, o decodificador espectral 502 pode compreender uma unidade de reescalonamentoinverso 113 para proporcionar o bloco 147 de coeficientes de erro quantizados em escala. As ferramentas e interligações adicionais em torno do decodificador sem perdas 551 e o quantizador inverso 552 da Fig.5d pode ser utilizado para adaptar a decodificação espectral para a sua utilização no decodifica- dor geral 500 mostrado na Fig. 5a, em que a saída do decodificador espectral 502 (ou seja, o bloco 145 de coeficientes de erro quantiza- dos) é utilizado para fornecer uma correção aditiva para um vetor de domínio uniformizado previsto (ou seja, para o bloco 150 de coeficientes de transformada estimados). Em particular, as ferramentas adicionais podem assegurar que o processamento efetuado pelo decodifica- dor 500 corresponde ao processamento efetuado pelo codificador 100, 170.
[182] Em particular, o decodificador espectral 502 pode compreender uma unidade de escalonamento heurística 111. Como mostrado em conjunto com o codificador 100, 170, a unidade de escalonamento heurística 111 pode ter um impacto sobre a alocação de bits. No codificador 100, 170, os blocos atuais 141 de coeficientes de erro de previsão podem ser escalonados até variância de unidade por uma regra heurística. Como consequência, a alocaçãopadrão pode levar a uma quantização muito fina da saída final escalonada para baixo da unidade de escalonamento heurística 111. Então a alocação deverá ser modificada de um modo semelhante à modificação dos coeficientes de erro de predição.
[183] No entanto, como descrito abaixo, pode ser benéfico evitara redução de recursos de codificação para um ou mais das posições de frequência baixas(ou bandas de frequência baixas). Em particular, isso pode ser benéfico para combater um artefato LF (baixa frequência) de estrondo/ruído que passa a ser mais proeminente em situações sonoras (ou seja, para sinal tendo umparâmetro de controle relativamente grande 146, rfu). Como tal, a alocação de bit/seleção de quanti- zador na dependência do parâmetro de controle 146, que é descrito abaixo, pode ser considerada um “impulso de qualidade LF adaptável de vocalização”.
[184] O decodificador espectral pode depender de um parâmetrode controle 146 chamadorfu que pode ser uma versão limitada da ganho de predito^, por exemplo,= :r.:n 1 ç S " .
[185] Métodos alternativos para a determinação do parâmetro decontrole 146, rfu, pode ser utilizado. Em particular, o parâmetro de controle 146 pode ser determinado utilizando o pseudo código dado na
Figure img0004
Tabela 1
[186] O f_gain variável e f_pred_gainpode ser igual. Em particular, o f_gain variável pode corresponder ao ganho de predito^. O parâmetro de controle 146, rfu, é referido como f_rfu na Tabela 1. O ganho f_gain pode ser um número real.
[187] Em comparação com a primeira definição do parâmetro decontrole 146, a última definição (de acordo com a Tabela 1) reduz o parâmetro de controle 146, rfu, para ganhos preditores acima de 1 e aumenta o parâmetro de controle 146, rfu, para ganhos preditores negativos.
[188] Utilizando o parâmetro de controle 146, o conjunto de quan-tizadores utilizado na unidade de quantização de coeficiente 112 do codificador 100, 170 e usado no quantizador inverso 552 pode ser adaptado. Em particular, o ruído do conjunto de quantizadores pode ser adaptado de acordo com o parâmetro de controle 146. A título de exemplo, um valor do parâmetro de controle 146, rfu, perto de 1 pode provocar uma limitação da faixa de níveis de alocação utilizando quan- tizadores oscilados e pode provocar uma redução da variância do nível de síntese de ruído. Em um exemplo, uma decisão osciladalimiar em rfu = 0,75 e um ganho de ruído igual a 1-rfu pode ser ajustado. A adaptação de oscilação pode afetar a decodificação sem perdas eo quanti- zador inverso, enquanto o ganho de adaptação de ruído normalmente afeta apenas o quantizador inverso.
[189] Pode-se supor que a contribuição de preditor é substancialpara situações sonoras/tonais. Como tal, um ganho de preditorrelati- vamente elevado :(ou seja, um parâmetro de controle relativamente alto 146) pode ser indicativo de um sinal de fala sonora ou tonal. Em tais situações, a adição de ruído explícito ou relacionado à oscilação (caso de alocação zero) foi demonstrada empiricamente a ser contraproducente para a qualidade percebida do sinal codificado. Como consequência, o número de quantizadores oscilados 322 e/ou o tipo de ruído utilizado para quantizador de síntese de ruído 321 pode ser adaptado com base no ganho de predito^, melhorando assim a quali-dade percebida do sinal de fala codificado.
[190] Como tal, o parâmetro de controle 146 pode ser usado paramodificar a faixade 324, 325 de SNR para os quais quantizadores oscilados 322 são usados. A título de exemplo, se o parâmetro de controle 146 rfu<0,75, a faixa324 para quantizadores oscilados podeser usada. Em outras palavras, se o parâmetro de controle 146 está abaixo de um limiar predeterminado, o primeiro conjunto 326 de quantizadores pode ser utilizado. Por outro lado, se o parâmetro de controle 146 rfu>0,75, a faixa325 para quantizadores oscilados podeser usada. Em outras palavras, se o parâmetro de controle 146 é maior do que ou igual ao limiar predeterminado, o segundo conjunto 327 de quantizadores po- deser utilizado.
[191] Além disso, o parâmetro de controle 146 pode ser usadopara alteração da variância e alocaçãode bits. A razão para isto é que, tipicamente, uma predição bem sucedida requer uma correção menor, particularmente na faixa de frequência mais baixa a partir de 0-1 kHz. Pode ser vantajoso deixar o quantizador explicitamente ciente deste desvio a partir do modelo de variância unitária, a fim de liberar recursos de codificação para as bandas de frequência mais elevadas 302. Isto é descrito no contexto da Figura 17c painel iiida WO2009/086918, o conteúdo da qual é aqui incorporada por referência. No decodificador 500, esta modificação pode ser implementada modificando o vetor nominal de alocação de acordo com uma regra de escalonamento heurística (aplicado usando a unidade de escalonamento 111), e ao mesmo tempo escalonando a saída do quantizador inverso 552 de acordo com uma regra de escalonamentoheurística inversa usando a unidade de escalonamento inversa 113. Seguindo a teoria da WO2009/086918, a regra de escalonamento heurística e a regra de escalonamento heurística inversadevem ser estreitamente alinhadas. No entanto, verificou-se empiricamente vantajosa para cancelar a modificação de alocação das uma ou mais bandas de frequências mais baixas 302, a fim de combater problemas ocasionais com ruído de LF (frequência baixa) para componentes de sinal sonoras. O cancelamento da alocação de modificação pode ser realizado em dependência do valor do ganho de predito^ e/ou do parâmetro de controle 146. Em particular, o cancelamento da modificação de alocação pode ser realizado apenas se o parâmetro de controle 146 excede a decisão de oscilação limiar.
[192] Assim, o presente documento descreve meios para ajustara composição do conjunto 326 de quantizadores (por exemplo, o número de quantizadores não oscilados 323 e/ou o número de quantiza- dores oscilados 322) com base em informaçõesterais (por exemplo, o parâmetro de controle 146), que é disponível no codificador 100, 170 e no decodificador correspondente 500. A composição da coleção 326 de quantizadores podeser ajustada na presença do ganho de preditor, (por exemplo, com base no parâmetro de controle 146). Em particular, o número . - de quantizadores oscilados322 pode ser aumentado e o número ...de quantizadores não oscilados323 pode ser reduzido, se o ganho de preditorçé relativamente baixo. Além disso, o número de bits alocados podeser reduzido selecionando quantizadores relativamente grosseiros. Por outro lado, o número-de quantizadores oscilados 322 pode ser diminuído e o número ...de quantizadores oscilados 323 pode ser aumentado, se o ganho de predito^ é relativamente grande. Além disso, o número de bits alocados pode ser reduzido selecionan-do quantizadores relativamente grosseiros.
[193] Alternativamente ou em adição, a composição da coleção326 de quantizadores podeser ajustada na presença de um coeficiente de reflexão espectral. Em particular, o número - — .de quantizadores oscilados 322 pode ser aumentada no caso de sinais semelhantes a silvo. Além disso, o número de bits alocados podeser reduzido selecionando quantizadores relativamente grosseiros.
[194] No que se segue, um exemplo de esquema para a determinação de um coeficiente de reflexão espectral Rfc indicativo de uma propriedade semelhante a silvo do excerto atual do sinal de entrada é descrito. Deve notar-se que o coeficiente de reflexão espectral Rfc é diferente do “coeficiente de reflexão” usado no contexto de modelagem de fonte auto-regressiva. O bloco 131 de coeficientes de transformada pode ser dividido em bandas de frequências L 302. Um vetor L- dimensional Bwpode ser definido, em que a entrada do l° vetorBwpode ser igual ao número de posições de transformada 301 que pertencem a Ia banda de frequência 302 (I = 1,..., L). Do mesmo modo, um vetor F K-dimensional pode ser definido, em que a Ia entrada pode ser igual ao ponto médio da la banda de frequência 302, que é obtida através do cálculo da média do menor índice de uma posição de transformada 301 e a maior índice de uma posição de transformada 301 que perten cem a Ia banda de frequência 302. Além disso, um vetor L-dimensional SPSDpode ser definido, em que o vetorSPSDpode compreender valoresde densidade de potência espectral do sinal, o que pode ser obtidoconvertendo os índices de quantização relacionados com o envelope da escala dBde volta para a escala linear. Além disso, um índice de posição máximo Ncore pode ser definido que é o maior índice de posi-ção pertencente à La banda de frequência 302. Um coeficiente de re-flexão escalar Rfc pode ser determinada como
Figure img0005
em que l indica uma laentrada de um vetor L-dimensional.
[195] Em geral, Rfc>0 indica um espectro dominado pela sua parte de alta frequência, e Rfc<0 indica um espectro dominado pela sua parte de baixa frequência. O parâmetro Rfc podeser utilizadocomo se segue: Se o valor Rfu é baixo (ou seja, se o ganho de preditor é baixo) e, se o Rfc> 0, então isso indica um espectro correspondente a uma fricativa (ou seja, sem fala sibilante). Neste caso, um número Ndith relativamente aumentado de quantizadores oscilados 322 pode ser usado na coleção 326, 722 de quantizadores.
[196] Em termos gerais, a coleção 326 de quantizadores (e osquantizadores inversos correspondentes) pode ser ajustada com base na informação lateral (por exemplo, o parâmetro de controle 146 e/ou o coeficiente de reflexão espectral) que está disponível no codificador 100 e o decodificador correspondente 500. A informação lateral pode ser extraída a partir dos parâmetros disponíveis para o codificador 100 e o decodificador 500. Como descrito acima, o ganho de preditor: po- deser transmitidopara o decodificador 500 e pode ser utilizado antes da quantização inversa de coeficientes de transformada, para selecionar a coleção apropriada 326 de quantizadores inversos. Alternativa- mente ou em adição, um coeficiente de reflexão, pode ser estimado ou aproximado com base no envelope espectral que é transmitido para o decodificador 500.
[197] Fig.7 mostra um diagrama de blocos de um exemplo demétodo para determinar umacoleção 326de quantizado-res/quantizadores inversos no codificador 100 e o decodificador correspondente 500. As informações laterais importantes 721 (tal como o parâmetro predito^ e/ou o coeficiente de reflexão) podem ser extraídas 701 a partir do fluxo de bits. A informação lateral 721 pode ser usada para determinar 702 uma coleção 722 de quantizadores a serem utilizados para quantizar os coeficientes de bloco atual e/ou para a quanti- zação inversa dos índices de quantização correspondentes. Usando o processo de alocação de fluxo 703 um quantizador particularde determinada coleção de quantizadores 722 é usada para quantizar os coeficientes de uma banda de frequênciaparticular, 302 e/ou para quanti- zar inversaos índices de quantização correspondentes. A seleção de quantizador 723 resultante a partir do processo de alocação de bits 703 é utilizada no processo de quantização 703 para proporcionar os índices de quantização e/ou é utilizado no processo de quantização inversa 713, para obter os coeficientes quantizados.
[198] As Figs. 9a a 9c mostramexemplo de resultados experimentais que podem ser conseguidos utilizando o sistema de codec baseado em transformada descrito no presente documento. Em particular, as Figs. 9a a 9c ilustram os benefícios do uso de uma coleção ordenada 326 de quantizadores compreendendo os um ou mais quantizadores oscilados 322. Fig. 9a mostra o espectrograma 901 de um sinal original. Pode ser visto que o espectrograma 901 compreende conteúdo espectral na faixa de frequências definida pelo círculo branco. Fig.9b mostra o espectrograma 902 de uma versão quantizada do sinal original (quantizadas em 22kps). No caso da Fig. 9b enchimento de ruído para a alocação de fluxo zero e quantizadores escalares foram usados. Pode ser visto que o espectrograma 902 apresenta blocos espectrais relativamente grandes na faixa de frequênciadefinida pelo círculo branco que estão associados com orifícios espectrais rasos (os chamados “birdies”). Estes blocos tipicamente levam a artefatos audíveis. Fig.9c mostra o espectrograma 903 de outra versão quantizada do sinal original (quantizadaem 22kps). No caso da Fig. 9c preenchimento ruído para a alocação fluxo zero, quantizadores oscilados e quantiza- dores escalares foram usados (como descrito no presente documen-to). Pode ser visto que o espectrograma 903 não apresenta grandes blocos espectrais associados com orifícios espectrais na faixa de frequências definida pelo círculo branco. É conhecida para especialistas na técnica que, a ausência de tais blocos de quantização é uma indicação do desempenho melhorado perceptual do sistema de codec baseado em transformada descrito no presente documento.
[199] A seguir, os vários aspectos adicionais de um codificador100, 170 e/ou um decodificador 500 são descritos. Como descrito acima, um codificador 100, 170 e/ou um decodificador 500 pode compreender uma unidade de escalonamento 111 que está configurada para reescalonar os coeficientes de erro de predição Δ(k), para obter um bloco 142 de coeficientes de erro reescalonados. A unidade de reesca- lonamento 111 podefazer uso de uma ou mais regras heurísticas predeterminadas para realizar o reescalonamento. Em um exemplo, a unidade de reescalonamento 111 pode fazer uso de uma regra de escalonamento heurística que compreende o ganho d(f), por exemplo,
Figure img0006
onde uma frequência de ruptura f0 pode ser definida para, por exemplo, 1000 Hz. Assim, a unidade de reescalonamento 111 pode ser con- figurada para aplicar uma frequência dependente de ganho d(f) para os coeficientes de erro de predição para produzir o bloco 142 de coeficientes de erro reescalonados. A unidade de reescalonamento inversa 113 pode ser configurada para aplicar uminverso da frequência de ganho dependente d(f). A frequência de ganho dependente d(f) pode ser dependente do parâmetro de controlerfu 146. No exemplo acima, o ganho de d(f)apresenta um carater de passagem baixa, de tal modo que os coeficientes de erro de predição são atenuados mais do que em frequências mais altas com menores frequências e/ou de tal forma que os coeficientes de erro de predição são enfatizados mais em fre-quências mais baixas do que em frequências mais altas. O acima mencionado ganho d(f)é sempre maior ou igual a um. Assim, numa modalidade preferencial, a regra de escalonamento heurística é tal que os coeficientes de erro de predição são realçados por um fator de um ou mais (em função da frequência).
[200] Deve-se notar que o ganho em função da frequência podeser indicativo de uma potência ou uma variância. Em tais casos, a regra de escalonamento e a regra de escalonamento inverso devem ser obtidas com base em uma raiz quadrada do ganho dependente da frequência, por exemplo, baseado em .
[201] O grau de ênfase e/ou atenuado pode depender da qualidade da previsão obtida pelo preditor 117. O ganho de predito r.e/ou o parâmetro de controlerfu 146 podem ser um indicativos da qualidade da predição. Em particular, um valor relativamente baixo do parâmetro de controlerfu146 (relativamente próximo de zero) pode ser indicativo de uma baixa qualidade de predição. Em tais casos, deve-se esperar que os coeficientes de erro de prediçãotenhamvalores relativamente elevados (absolutos) em todas as frequências. Um valor relativamente elevado do parâmetro de controlerfu146 (relativamente perto de um) pode ser indicativo de uma alta qualidade de predição. Em tais casos, deve-se esperar que os coeficientes de erro de prediçãotenhamvalores relativamente elevados (absolutos) para altas frequências (que são mais difíceis de prever). Assim, a fim de alcançar variância unitária na saída da unidade de reescalonamento 111, o ganho d(f)pode ser tal que, no caso de uma qualidade relativamente baixa de predição, o ganho d(f) é substancialmente plano para todas as frequências, enquanto que no caso de uma qualidade relativamente elevada de predição, o ganho d(f) tem um carácter de baixa passagem, para aumentar ou estimular a variância nas baixas frequências. Este é o caso para o ganho dependente de rfudmencionado d(f)acima mencionado.
[202] Como descrito acima, a unidade de alocação de bits 110 pode ser configurada para fornecer uma alocação relativa dos bits para os diferentes coeficientes de erro reescalonados, dependendo do valor de energia correspondente no envelope de alocação 138. A unidade de alocação de bits 110 pode ser configurada para levar em consideração a regra de reescalonamento heurística. A regra de reescalonamento heurística pode ser dependente da qualidade da predição. No caso de uma qualidade relativamente elevada de predição, que pode ser benéfica para atribuir um número de bits relativamente aumentado para a codificação dos coeficientes de erro de predição (ou o bloco 142 de coeficientes de erro reescalonados) em altas frequências do que à codificação dos coeficientes em baixas frequências. Isto pode ser devido ao fato de que em caso de uma elevada qualidade de predição, os coeficientes de baixa frequência são já bem previstos, enquanto que os coeficientes de alta frequência são tipicamente bem menos previstos. Por outro lado, no caso de uma qualidade relativamente baixa de predição, a alocação de bits deve permanecer inalterada.
[203] O procedimento acima pode ser implementado através daaplicação de um inverso das regras heurísticas/de ganhod(f) para o envelope atual ajustado 139, a fim de determinar um envelope de alo- cação 138, que leva em conta a qualidade de predição.
[204] O envelope ajustado 139, os coeficientes de erro de predição e o ganho d(f) podem ser representados no registro ou domínio dB. Em tal caso, a aplicação do ganho d(f) para os coeficientes de erro de previsão pode corresponder a uma operação de “adicionar” e a aplicação do inverso do ganho d(f) para o envelope ajustado 139 pode corresponder a uma operação“subtrair”.
[205] Deve-se notar que várias variantes das regras heurísti-ca/ganhod(f) são possíveis. Em particular, a curva dependente de frequência fixa de carácter de baixapassagem :
Figure img0007
pode ser substituída por uma função que depende dos dados de envelope (por exemplo, no envelope ajustado 139 para o bloco atual 131). As regras heurísticas modificadas podem depender do parâmetro de controle rfu146 e dos dados do envelope.
[206] Nas seguintes formas diferentes para a determinação deum ganho de preditorp, que pode corresponder ao ganho de predi- torç, são descritos. O ganho de preditor p podeser utilizadocomo uma indicação da qualidade da predição. O vetor residual de predição (ou seja, o bloco 141 de coeficientes de erro de predição z pode ser dado por: z = x ~py, onde x é o vetor alvo (por exemplo, o bloco atual 140 de coeficientes de transformada uniformizados ou o bloco atual 131 de coeficientes de transformada), y é um vetor que representa o candidato escolhido para a predição (por exemplo, os blocos anteriores 149 de coeficientes reconstruídos), e pé o ganho de preditor(escalar).
[207] w ^ 0 pode ser um vetor de ponderação utilizado para a determinação do ganho de preditorp. Em algumas modalidades, o vetor de ponderação é uma função do envelope de sinal (por exemplo, uma função do envelope ajustado 139, que pode ser estimada no codificador 100, 170 e, em seguida, transmitida para o decodificador 500). O vetor de ponderação tipicamente tem a mesma dimensão que o vetor alvo e o vetor candidato. Uma iaentrada de vetor x pode ser designada por x (por exemplo, i=1, ,,. ,K).
[208] Há maneiras diferentes para definir o ganho de preditor p.Numa modalidade, o ganho de preditor p é um ganho MMSE (erroquadráticomédio mínimo) definido de acordo com o critério de erro quadráticomédio mínimo. Neste caso, o ganho de preditorppodesercalculado utilizando a seguinte fórmula:
Figure img0008
[209] Tal ganho de preditorpnormalmente minimiza o erro qua-drático médio definido como
Figure img0009
[210] É muitas vezes (perceptualmente) benéfico introduzir ponderação para a definição dos erro quadráticos médios D . A ponderação pode ser usada para enfatizar a importância de umacombinação entre xe y para partes perceptualmente importantes do espectro do sinal e minimizam a importância de uma combinação entre xe y para partes do espectro de sinal que são relativamente menos importantes. Tal abordagem resulta no seguinte critério de erro: D = ∑(xi - pyi )2wi ,o ique conduz à seguinte definição do ganho preditorideal (no sentido do erro quadrático de média ponderada):
Figure img0010
[211] A definição acima do ganho de preditor tipicamente resultaem um ganho que é ilimitado. Como indicado acima, os pesos wi do vetor de ponderação w podem ser determinados com base no envelope ajustado 139. Por exemplo, o vetor de peso w pode ser determina- do utilizando uma função predefinida do envelope ajustado 139. A função predefinida pode ser conhecida no codificador e no decodificador (que é também o caso do envelope ajustado 139). Assim, o vetor de peso pode ser determinado da mesma forma que no codificador e no decodificador.
[212] Outra possível fórmula de ganho de preditor é dada por
Figure img0011
onde
Figure img0012
Esta definição do ganhode preditor produz um ganho que é sempre dentro do intervalo [-1, 1]. Uma característica importante do ganho de preditor especificado pela última fórmula é que o ganho de preditor p facilita uma relação tratável entre a energia do sinal alvo xe a energia do sinal residual z . A energia LTP residual pode ser expressa como:
Figure img0013
[213] O parâmetro de controlerfu 146 pode ser determinado combase no ganho de predito. usando as fórmulas acima mencionadas. O ganho de predito^pode ser igual ao ganho de preditorp, determinado utilizando qualquer das fórmulas acima mencionadas.
[214] Como descrito acima, o codificador 100, 170 está configurado para quantizar e codificador o vetor residual z (ou seja, o bloco 141 de coeficientes de erro de predição). O processo de quantização é geralmente guiadopelo envelope de sinal (por exemplo, o envelope de alocação 138) de acordo com um modelo perceptual subjacente, a fim de distribuir os bits disponíveis entre os componentes espectrais do sinal de uma forma significativa perceptualmente. O processo de alocação de fluxo é guiado pelo envelope de sinal (por exemplo, o envelope de alocação 138), que é derivado a partir do sinal de entrada (por exemplo, a partir do bloco 131 de coeficientes de transformada). A operação do preditor 117 muda tipicamente o envelope de sinal. A unidade de quantização 112, tipicamente faz uso de quantizadores que são concebidos partindo do princípio de operação em uma fonte de variância unitária. Nomeadamente no caso de predição de alta qualidade (ou seja, quando o preditor117 é bem-sucedido), a propriedade variância unitária pode deixar de ser o caso, ou seja, o bloco 141 de coeficientes de erro de predição pode não apresentar variância unitária.
[215] É tipicamente não eficienteestimar o envelope de bloco 141de coeficientes de erro de predição (ou seja, para o z residual) e transmitir esse envelope para o decodificador (e para reuniformizar o bloco 141 de coeficientes de erro de predição usando o envelope estimado). Em vez disso, o codificador 100 e o decodificador 500 podem fazer uso de uma regra heurística para redimensionar o bloco 141 de coeficientes de erro de predição (como descrito acima). A regra heurística pode ser utilizada para reescalonar o bloco 141 de coeficientes de erro de predição, de tal modo que o bloco 142 de coeficientes reescalonados se aproxima da variância unitária. Como um resultado disto, os resultados de quantizaçãopodem ser melhorados (usando quanti- zadoresque assumem a variância unitária).
[216] Além disso, como já foi descrito, a regra heurística podeserusadapara modificar o envelope de alocação 138, que é usado para o processo de alocação de bits. A modificação do envelopede aloca- ção138 e o reescalonamentodo bloco 141 de coeficientes de erro de predição são tipicamente realizados pelo codificador 100 e o decodifi- cador 500 da mesma maneira (usando a mesma regra heurística).
[217] Uma possível regra heurística d(f)foi descrita acima. Na outra abordagem seguinte determinar uma regra heurística é descrita. Um inverso do ganho de preditorde energia de domínio ponderado pode ser dado por = [: <de tal modo que : , .. ,, em que i indica a energia quadrática do vetor residual (ou seja, o bloco 141 de coeficientes de erro de predição) no domínio ponderado e em que I ■ |.'in- dica a energia quadrática do vetoralvo (ou seja, o bloco 140 de coeficientes de transformada uniformizados) no domínio ponderado.
[218] As seguintes premissas podem ser feitas1. As entradas do vetor alvo .. têm variância unitária. Isto pode ser um resultadoda uniformização executada pela unidade de uniformização 108. Esta suposição é cumpridadependendo da qualidade da uniformi- zaçãobaseadano envelope realizada pela unidade de uniformiza- ção108.2. A variância das entradas do vetor de predição residual --são da forma de
Figure img0014
para i = 1,..., K, e para alguns
Figure img0015
.Estapremissa baseia-se na heurística que uma busca de preditor orientada por quadrados mínimos leva a umacontribuição de erro distribuída uniformemente no domínio ponderado, de tal modo que o vetor residual
Figure img0016
mais ou menos plano. Além disso, pode-se esperar que o preditorcandidato está próximo do plano, que conduz à limite razoável
Figure img0017
.Deve notar-se que várias modificações desta segunda suposição podem ser usadas.
[219] A fim de estimar o parâmetro t, pode-se inserir as acimamencionadas duas premissas na fórmula erro de predição (por exemplo,
Figure img0018
e assim proporcionar a equação “tipo de nívelde água”
Figure img0019
[220] Pode ser demonstrado que há uma solução para a equaçãoacima no
Figure img0020
. A equação para encontrar o parâmetro t pode ser resolvida usando rotinas de ordenação.
[221] A regra heurística pode então ser determinadapor
Figure img0021
,em que i=1,..., K identifica o posição de frequência. O inverso da regra de escalonamento heurística é dada por
Figure img0022
O inverso da regra de escalonamento heurística éaplicado pela unidade de reescalonamentoinverso 113. A regra de escalonamento dependente da frequência depende dos pesos . : =-.-..Como indicado acima, os pesos * Apodem ser dependentesou podem corresponder ao bloco atual 131 de coeficientes de transformada (por exemplo, o envelope ajustado 139, ou alguma função predefinida do envelope ajustado 139).
[222] Pode ser mostrado que, quando utilizando a fórmula
Figure img0023
para determinar o ganho de preditor, a seguinte relação seaplica=p = 1-p2
[223] Assim, uma regra de escalonamento heurística pode serdeterminada de várias formas diferentes. Foi demonstrado experimentalmente que a regra de escalonamento que é determinada com base nas duas premissas acima mencionadas (referidas como método B de escalonamento) é vantajosa em comparação com a regra de escalonamento fixod(f). Em particular, a regra de escalonamento que é determinada com base nas duas premissas pode levar em conta o efeito de ponderação utilizadono decurso de uma pesquisa de candidato preditor. O método de escalonamento B é convenientemente combi-nado com a definição do ganho
Figure img0024
,por causa da relação anali-ticamente tratável entre a variância do residual e a variância do sinal (o que facilita a derivação de p como descrito acima).
[224] No que se segue, um aspecto adicional para melhorar odesempenho do codificador de áudio baseado em transformada é descrito. Em particular, é proposta a utilização de um chamado indicador de preservação da variância. O indicador de preservação da variância pode ser determinado e transmitido numa base por bloco 131. O indicador de preservação da variância pode ser indicativo da qualidade da predição. Numa modalidade, o indicador de preservação da variância é desligado, no caso de uma qualidade relativamente elevada de predição, e o indicador de preservação de variância ligado, no caso de uma qualidade relativamente baixa de predição. O indicador de preservação da variância pode ser determinado pelo codificador 100, 170, por exemplo, com base no ganho de preditorpe/ou com base no ganho de prediton. A título de exemplo, o preditorde preservação da variância pode ser definido como “ligado”, se o ganho de preditorp ou (ou um parâmetro deste derivado) está abaixo de um limiar predeterminado (por exemplo,2 dB) e vice-versa. Como descrito acima, o inverso do ganho de preditorda energia de domínio ponderado p tipicamente depende do ganho de preditor, por exemplo, = i - :. O inverso do parâmetro de p pode ser utilizado para determinar um valor do indicador de preservação da variância. A título de exemplo, 1/p (por exemplo, expressa em dB) pode ser comparada com um limiar predeterminado (por exemplo 2 dB), a fim de determinar o valor do indicador de preservação da variância. Se 1/p é maior do que o limiar predeterminado, o indicador de preservação da variância pode ser definido para “desligado” (indicando uma qualidade relativamente elevada de predição), e vice-versa.
[225] O indicador de preservação da variância pode ser usadopara controlar as várias configurações diferentes do codificador 100 e do decodificador 500. Em particular, o indicador de preservação da variância pode ser utilizado para controlar o grau de ruído da pluralidade de quantizadores 321, 322, 323. Em particular, o indicador de preservação da variância pode afetar uma ou mais dos seguintes• Ganho de ruído adaptativo para a alocação de bit zero. Em outras palavras, o ganho de ruído doquantizador de síntese de ruído 321 pode ser afetado pelo indicador de preservação da variância.• Gama de quantizadores oscilados. Em outras palavras, a faixa324, 325 de SNRs para que quantizadores oscilados 322 sejam utilizados podeser afetada pelo indicador de preservação da variância.• Pós-ganho dos quantizadores oscilados. Um pós-ganho pode ser aplicado à saída dos quantizadores oscilados, a fim de afetar o desempenho de erro quadrático médio de quantizadores oscilados. O pós-ganho pode ser dependente do indicador de preservação da variância.• Aplicação de escalonamento de heurística. O uso de es- calonamentode heurística (na unidade de reescalonamento 111 e na unidade de reescalonamento inversa 113) pode ser dependente do indicador de preservação da variância.
[226] Um exemplo de como o indicador de preservação da variância pode alterar uma ou mais configurações do codificador 100 e/ou o decodificador 500 é fornecido na Tabela 2.
Figure img0025
Tabela 2
[227] Na fórmula para o pós-ganho, aX = E X2}é uma variânciade um ou mais dos coeficientes do bloco 141 de coeficientes de erro de predição (que estão sendo quantizados), e Δ é um tamanho de etapa de quantizador de um quantizador escalar (612) do quantizador oscilado o qual que o pós-ganho é aplicado.
[228] Como pode ser visto a partir do exemplo da Tabela 2, o ganho de ruído ^.-do quantizador de síntese de ruído 321 (ou seja, a va- riânciado quantizador de síntese de ruído 321) podedepender do indicador de preservação da variância. Como descrito acima, o parâmetro de controlerfu146 pode estar na faixa[0, 1], em que um valor relativamente baixo de rfu indica uma qualidade relativamente baixa de predição e um valor relativamente elevado de rfu indica uma qualidade relativamente elevada de predição. Para os valores de rfuna faixade [0, 1], a fórmula da coluna da esquerda proporciona ganhos de ruído mais baixos do que a fórmula da coluna da direita. Assim, quando o indicador de preservação da variância está ligado (indicando uma qualidade relativamente baixa de predição), um ganho de ruído mais elevado é usado quando o indicador de preservação da variância é desligado (indicando uma qualidade relativamente alta da predição). Tem sido demonstrado experimentalmente que isto melhora a qualidade perceptual global.
[229] Como descrito acima, afaixada SNR 324, 325 dosquantiza-dores oscilados 322 podevariar dependendo do parâmetro de contro- lerfu. De acordo com a Tabela 2, quando o indicador de preservação de variância está ligado (indicando uma qualidade relativamente baixa de predição), uma grande faixa fixa de quantizadores oscilados 322 é utilizada (por exemplo, a faixa324). Por outro lado, quando o indicador de preservação variância é desligado (indicando uma qualidade relativamente elevada de predição), diferentes gamas 324, 325 são usadas, dependendo do parâmetro de controlerfu.
[230] Como foi descrito acima, a determinação do bloco 145 decoeficientes de erro quantizados pode envolver a aplicação de um pós- ganho ? para os coeficientes de erro quantizados, os quais foram quan- tizados usando um quantizadoroscilado 322. O pós-ganho ? pode ser derivado para melhorar o desempenho MSE de um quantizador oscilado 322 (por exemplo, um quantizador com uma oscilação subtrativa).
[231] Tem sido demonstrado experimentalmente que a qualidadeda codificação perceptual pode ser melhorada, ao tornar o pós-ganho dependente do indicador de preservação da variância. O pós-ganho ideal acima indicado do MSE é utilizado, quando o indicador de preservação da variância é desligado (indicando uma qualidade relativamente alta da predição). Por outro lado, quando o indicador de preser-vação variância é ligado (indicando uma qualidade relativamente baixa de predição), pode ser benéfico usar um pós-ganho mais elevado (determinado de acordo com a fórmula do lado direito da Tabela 2).
[232] Como descrito acima, o escalonamento heurístico pode serusado para fornecer blocos 142 de coeficientes de erro escalonados que estão mais próximos à propriedade de variânciaunitária do que os blocos 141 de coeficientes de erro de predição. As regras de escalonamento heurísticas podem ser feitas dependentes do parâmetro de controle 146. Em outras palavras, as regras de escalonamento heurísticas podem ser feitas dependentes da qualidade da predição. Escalonamento heurístico pode ser particularmente benéfico no caso de uma qualidade relativamente elevada de predição, enquanto que os benefícios podem ser limitados no caso de uma qualidade relativamente baixa de predição. Em vista disso, pode ser vantajoso fazer somente o uso de escalonamentoheurísticoquando o indicadorde preservação de variância é desligado (indicando uma qualidade relativamente elevada de predição).
[233] No presente documento, um codificador de fala baseado em transformada 100, 170 e um decodificador de fala baseado em transformada correspondente 500 foram descritos. O codec de fala baseado em transformada pode fazer uso de vários aspectos que permitem melhorar a qualidade dos sinais de fala codificados. Em particular, o codec de fala pode ser configurado para criar uma coleção ordenada de quantizadores compreendendo quantizadores clássicos (não oscilados), quantizadores com oscilação subtrativa, e enchimento de ruído “taxa zero”. A coleção ordenada de quantizadores pode ser criada de uma forma que a coleção ordenada facilita o processo de alocação de fluxo de acordo com um modelo perceptual parametrizado pelo envelope de sinal e pelo parâmetro de alocação de fluxo. A composição da coleção de quantizadores pode ser reconfigurada na presença de informaçõeslaterais (por exemplo, o ganho de preditor) para melhorar o desempenho perceptual do esquema de quantização. Um algoritmo de alocação de fluxo pode ser utilizado, o que facilita o uso do conjunto ordenado de quantizadores, sem a necessidade de sinalização adicional para o decodificador, por exemplo, sinalização adicional relacionada com uma composição particular do conjunto de quanti- zadores, que foi utilizado no codificador e/ou relacionadacom o sinal de oscilação que foi usado para implementar os quantizadores oscilados. Além disso, um algoritmo de alocação de fluxo pode ser utilizado, o que facilita o uso de um codificador aritmético (ou umafaixade codificador) na presença de uma restrição de fluxo de bit (por exemplo, uma restrição ao número máximo permitido de bits e/ou uma restrição no comprimento máximo de mensagem admissível). Além disso, a coleção ordenada de quantizadores facilita o uso de quantizadores oscilados, permitindo ao mesmo tempo a alocação de zero bits para bandas de frequênciasparticulares. Além disso, um algoritmo de alocação de fluxo pode ser utilizado, o que facilita o uso da coleção ordenada de quantizadores, em conjunto com o código de Huffman.
[234] Os métodos e sistemas descritos no presente documentopodem ser implementados como software, firmware e/ou hardware. Determinados componentes podem, por exemplo, ser implementados como software executado em um processador de sinal digital ou microprocessador. Outros componentes podem, por exemplo, ser implementados como hardware e ou como circuitos integrados de aplicação específica. Os sinais encontrados nos métodos e sistemas descritos podem ser armazenados em meios tais como a memória de acesso aleatório ou meio de armazenamento óptico. Eles podem ser transferidos através de redes, tais como redes de rádio, redes de satélites, redes celulares ou redes de telefonia fixa, por exemplo, a Internet. Os dispositivos típicos baseados na utilização dos métodos e sistemas descritos no presente documento são dispositivos eletrônicos portáteis ou outros equipamentos de consumo que são usados para armazenar e/ou processar os sinais de áudio.

Claims (19)

1. Unidade de quantização (112) configurada para quantizar um primeiro coeficiente de um bloco (141) de coeficientes; em que o bloco (141) de coeficientes compreende uma pluralidade de coeficientes para uma pluralidade de posições de frequência correspondentes (301), caracterizada pelo fato de que a unidade de quantização (112) está configurada para:fornecer um conjunto (326, 327) de quantizadores; em que o conjunto (326, 327) de quantizadores compreende um número limitado de diferentes quantizadores (321, 322, 323) associados com diferentes razões sinal para ruído, denominadas como SNR, respectivamente; em que os diferentes quantizadores do conjunto de quantizado- res são ordenados de acordo com sua SNR; o conjunto (326, 327) de quantizadores (321, 322, 323), incluindo:um quantizador de enchimento de ruído (321), em que o quantizador de enchimento de ruído (321) é configurado para quanti- zar o primeiro coeficiente substituindo um valor do primeiro coeficiente por um valor aleatório gerado de acordo com um modelo estatístico predeterminado;um ou mais quantizadores oscilados (322); eum ou mais quantizadores determinísticos não oscilados (323);determinar uma indicação de SNR indicativa de uma SNR atribuída ao primeiro coeficiente;selecionar um primeiro quantizador do conjunto (326, 327) de quantizadores com base na indicação de SNR; equantizar o primeiro coeficiente usando o primeiro quanti- zador.
2. Unidade de quantização (112), de acordo com a reivindicação 1, caracterizada pelo fato de que o quantizador de enchimento de ruído (321) é associado com uma SNR relativamente mais baixa das diferentes SNRs;os um ou mais quantizadores determinísticos não oscilados (323) são associados com uma ou mais SNRs relativamente mais altas das diferentes SNRs; eos um ou mais quantizadores oscilados (322) são associados com uma ou mais SNRs intermediárias, mais altas que a SNR relativamente mais baixa e mais baixa que as uma ou mais SNRs relativamente mais altas das diferentes SNRs.
3. Unidade de quantização (112), de acordo com qualquer uma das reivindicações 1 ou 2, caracterizada pelo fato de que o conjunto de quantizadores é ordenado de acordo com SNRs crescentes associadas com os diferentes quantizadores.
4. Unidade de quantização (112), de acordo com a reivindicação 3, caracterizada pelo fato de queuma diferença de SNR é dada pela diferença das SNRs associadas com um par de quantizadores adjacentes a partir do conjunto ordenado de quantizadores; eas diferenças de SNR para todos os pares de quantizado- res adjacentes dos diferentes quantizadores caem dentro de um intervalo de diferença de SNR predeterminado centralizado em torno de uma diferença alvo de SNR predeterminada.
5. Unidade de quantização (112), de acordo com a reivindicação 1, caracterizada pelo fato de que o quantizador de enchimento de ruído (321):compreende um gerador de números aleatórios configurado para gerar números aleatórios de acordo com o modelo estatístico predeterminado; e/ouestá associado com uma SNR que é essencialmente mais baixa ou igual a 0 dB.
6. Unidade de quantização (112), de acordo com a reivindicação 1, caracterizada pelo fato de que um quantizador oscilado particular (322) dos um ou mais quantizadores oscilados (322) compreendeuma unidade de aplicação de oscilação (611) configurada para determinar um primeiro coeficiente oscilado aplicando um valor de oscilação ao primeiro coeficiente; eum quantizador escalar (612) configurado para determinar um primeiro índice de quantização atribuindo o primeiro coeficiente oscilado a um intervalo do quantizador escalar (612).
7. Unidade de quantização (112), de acordo com a reivindicação 6, caracterizada pelo fato de que o quantizador oscilado particular (322) dos um ou mais quantizadores oscilados (322) compreende aindaum quantizador escalar inverso (612) configurado para atribuir um primeiro valor de reconstrução ao primeiro índice de quantiza- ção; euma unidade de remoção de oscilação (613) configurada para determinar um primeiro coeficiente sem oscilação removendo o valor de oscilação do primeiro valor de reconstrução.
8. Unidade de quantização (112), de acordo com qualquer a reivindicação 6, caracterizado pelo fato de queo quantizador escalar (612) tem um tamanho de etapa de quantizador predeterminada Δ;o valor de oscilação assume valores de um intervalo de oscilação predeterminado; eo intervalo de oscilação predeterminado tem uma largura igual ou menor que o tamanho de etapa de quantizador predeterminada Δ.
9. Unidade de quantização (112), de acordo com a reivindi- cação 1, caracterizada pelo fato de queo bloco (141) de coeficientes está associado com um envelope de bloco espectral (136);o envelope de bloco espectral (136) é indicativo de uma pluralidade de valores de energia espectral (303) para a pluralidade de posições de frequência (301); ea indicação de SNR depende do envelope do bloco espectral (136).
10. Unidade de quantização (112), de acordo com a reivindicação 1, caracterizada pelo fato de quea pluralidade de coeficientes do bloco (141) de coeficientes é atribuída a uma pluralidade de bandas de frequências (302);uma banda de frequência (302) compreende uma ou mais posições de frequência (301); ea unidade de quantificação (112) está configurada para selecionar um quantizador do conjunto (326, 327) de quantizadores para cada uma da pluralidade de bandas de frequências (302), de modo que os coeficientes que sejam atribuídos a uma mesma banda de frequência (302) sejam quantizados utilizando o mesmo quantizador.
11. Unidade de quantização (112), de acordo com a reivindicação 1, caracterizada pelo fato de que a unidade de quantização (112) está configurada paradeterminar (701) informação lateral (721) indicativa de uma propriedade do bloco (141) de coeficientes; egerar (702) o conjunto (326, 327) de quantizadores na dependência da informação lateral (721).
12. Unidade de quantização inversa (552) configurada para dequantizar índices de quantização; em que os índices de quantização estão associados com um bloco de coeficientes compreendendo uma pluralidade de coeficientes para uma pluralidade de posições de fre- quências correspondentes (301) caracterizada pelo fato de que a unidade de quantização inversa (552) é configurada parafornecer um conjunto (326, 327) de quantizadores; em que o conjunto (326, 327) de quantizadores compreende um número limitado de diferentes quantizadores (321, 322, 323) associados com diferentes razões sinal para ruído, denominadas como SNR, respectivamente; em que os diferentes quantizadores do conjunto (326, 327) de quantizadores são ordenados de acordo com sua SNR; o conjunto (326, 327) de quantizadores (321, 322, 323), incluindoum quantizador de enchimento de ruído (321), em que o quantizador de enchimento de ruído (321) é configurado para quanti- zar o primeiro coeficiente substituindo um valor do primeiro coeficiente por um valor aleatório gerado de acordo com um modelo estatístico predeterminado;;um ou mais quantizadores oscilados (322); eum ou mais quantizadores determinísticos não oscilados (323);determinar uma indicação de SNR indicativa de uma SNR atribuída a um primeiro coeficiente do bloco de coeficientes;selecionar um primeiro quantizador do conjunto (326, 327) de quantizadores com base na indicação de SNR; edequantizar um índice de quantização associado com um primeiro coeficiente quantizado para o primeiro coeficiente usando o primeiro quantizador.
13. Codificador de fala baseado em transformada (100, 170) configurado para codificar um sinal de fala para um fluxo de bits; o codificador (100, 170) caracterizado pelo fato de que compreendeuma unidade de enquadramento (101) configurada para receber uma pluralidade de blocos sequenciais (131) de coeficientes de transformada compreendendo um bloco atual (131) e um ou mais blo- cos anteriores (131); em que a pluralidade de blocos sequenciais (131) é indicativa de amostras do sinal de fala;uma unidade de uniformização (108) configurada para determinar um bloco atual (140) de coeficientes de transformada uniformizados uniformizando o correspondente bloco atual (131) de coeficientes de transformada utilizando um envelope de bloco atual correspondente (136);um preditor (117) configurado para determinar um bloco atual (150) de coeficientes de transformada uniformizados estimados com base em um ou mais blocos anteriores (149) de coeficientes de transformada reconstruídos e com base em um ou mais parâmetros de preditor (520); em que os um ou mais blocos anteriores (149) de coefi-cientes de transformada reconstruídos foram derivados dos um ou mais blocos anteriores (131) de coeficientes de transformada;uma unidade de diferença (115) configurada para determinar um bloco atual (141) de coeficientes de erro de predição com base no bloco atual (140) de coeficientes de transformada uniformizados e com base no bloco atual (150) de coeficientes de transformada uniformizados estimados; euma unidade de quantização (112) conforme definida na reivindicação 1, configurada para quantizar coeficientes derivados do bloco atual (141) de coeficientes de erro de predição; em que os dados de coeficiente (163) para o fluxo de bits são determinados com base em índices de quantização associados com os coeficientes quantiza- dos, em que opcionalmenteum bloco (131) de coeficientes de transformação compreende coeficientes MDCT; e/ouum bloco (131) de coeficientes de transformada compreende 256 coeficientes de transformada em 256 posições de frequência 256 (301).
14. Codificador de fala baseado em transformada (100, 170), de acordo com a reivindicação 13, caracterizado pelo fato de que compreende ainda uma unidade de escalonamento (111) configurada para determinar um bloco atual (142) de coeficientes de erro de re-escalonamento com base no bloco atual (141) de coeficientes de erro de predição utilizando um ou mais regras de escalonamento, de modo que em média uma variância dos coeficientes de erro reescalonados do bloco atual (142) de coeficientes de erro reescalonados seja mais alta que uma variância dos coeficientes de erro de predição do bloco atual (141) de coeficientes de erro de predição, em queo bloco atual (141) de coeficientes de erro de predição compreende uma pluralidade de coeficientes de erro de predição para uma correspondente pluralidade de posições de frequência (301); eganhos de escalonamento que são aplicados pela unidade de escalonamento (111) aos coeficientes de erro de predição de acordo com as uma ou mais regras de escalonamento são dependentes das posições de frequência (301) dos respectivos coeficientes de erro de predição.
15. Codificador de fala baseado em transformada (100, 170), de acordo com a reivindicação 13, caracterizado pelo fato de queo preditor (117) é configurado para determinar o bloco atual (150) de coeficientes de transformada uniformizados estimados usando um critério de erro médio quadrático ponderado; eo critério de erro médio quadrático ponderado leva em conta o envelope de bloco atual (136) como pesos.
16. Codificador de fala baseado em transformada (100, 170), de acordo com a reivindicação 13, caracterizado pelo fato de que o codificador de fala baseado em transformada (100, 170) compreende ainda uma unidade de alocação de bit (109, 110, 171, 172) configurada para determinar um vetor de alocação baseado no envelope de bloco atual (136); eo vetor de alocação é indicativo de um primeiro quantizador a partir do conjunto (326, 327) de quantizadores predeterminados a ser usado para quantizar um primeiro coeficiente derivado do bloco atual (141) de coeficientes de erro de predição.
17. Decodificador de fala baseado em transformada (500), configurado para decodificar um fluxo de bits para proporcionar um sinal de fala reconstruído; o decodificador (500) caracterizado pelo fato de que compreende:um preditor (517) configurado para determinar um bloco atual (150) de coeficientes de transformada uniformizados estimados com base em um ou mais blocos anteriores (149) de coeficientes de transformada reconstruídos e com base em um ou mais parâmetros de preditor (520) derivados do fluxo de bits;uma unidade de quantização inversa (552) da reivindicação 37 configurada para determinar um bloco atual (147) de coeficientes de erro de predição quantizados com base em dados de coeficiente (163) compreendidos dentro do fluxo de bits utilizando um conjunto (326, 327) de quantizadores predeterminados;uma unidade de adição (116) configurada para determinar um bloco atual (148) de coeficientes de transformada uniformizados reconstruídos com base no bloco atual (150) de coeficientes de transformada uniformizados estimados e com base no bloco atual (147) de coeficientes de erro de predição quantizados; euma unidade de uniformização inversa (114) configurada para determinar um bloco atual (149) de coeficientes de transformada reconstruídos fornecendo o bloco atual (148) de coeficientes de trans- formada uniformizados reconstruídos com uma forma espectral utilizando um envelope de bloco atual (136); em que o sinal de fala reconstruído é determinado com base no bloco atual (149) de coeficientes de transformada reconstruídos.
18. Método para quantizar um primeiro coeficiente de um bloco (141) de coeficientes; em que o bloco (141) de coeficientes compreende uma pluralidade de coeficientes para uma pluralidade de posições de frequências correspondentes (301), caracterizado pelo fato de que compreendefornecer um conjunto (326, 327) de quantizadores; em que o conjunto (326, 327) de quantizadores compreende uma pluralidade de diferentes quantizadores (321, 322, 323) associados com uma pluralidade de diferentes razões sinal para ruído, denominada como SNR, respectivamente, a pluralidade de diferentes quantizadores (321 , 322, 323) incluindo:um quantizador de enchimento de ruído (321), em que o quantizador de enchimento de ruído (321) é configurado para quanti- zar o primeiro coeficiente substituindo um valor do primeiro coeficiente por um valor aleatório gerado de acordo com um modelo estatístico predeterminado;um ou mais quantizadores oscilados (322); eum ou mais quantizadores determinísticos não oscilados (323);determinar uma indicação de SNR indicativa de uma SNR atribuída ao primeiro coeficiente;selecionar um primeiro quantizador do conjunto (326, 327) de quantizadores com base na indicação de SNR; equantizar o primeiro coeficiente usando o primeiro quanti- zador.
19. Método para dequantizar índices de quantização; em que os índices de quantização estão associados com um bloco (141) de coeficientes compreendendo uma pluralidade de coeficientes para uma pluralidade de posições de frequências correspondentes (301), caracterizado pelo fato de que compreende:fornecer um conjunto (326, 327) de quantizadores; em que o conjunto (326, 327) de quantizadores compreende uma pluralidade de diferentes quantizadores (321, 322, 323) associados com uma pluralidade de diferentes razões sinal para ruído, denominada como SNR, respectivamente, a pluralidade de diferentes quantizadores (321 , 322, 323) incluindo:um quantizador de enchimento de ruído (321), em que o quantizador de enchimento de ruído (321) é configurado para quanti- zar o primeiro coeficiente substituindo um valor do primeiro coeficiente por um valor aleatório gerado de acordo com um modelo estatístico predeterminado;um ou mais quantizadores oscilados (322); eum ou mais quantizadores determinísticos não oscilados (323);determinar uma indicação de SNR indicativa de uma SNR atribuída a um primeiro coeficiente do bloco (141) de coeficientes;selecionar um primeiro quantizador do conjunto (326, 327) de quantizadores com base na indicação de SNR; edequantizar um índice de quantização associado com um primeiro coeficiente quantizado para o primeiro coeficiente usando o primeiro quantizador.
BR112015025009-2A 2013-04-05 2014-04-04 Unidades de quantização e quantização inversa, codificador e decodificador, métodos para quantizar e dequantizar BR112015025009B1 (pt)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201361808673P 2013-04-05 2013-04-05
US61/808,673 2013-04-05
US201361875817P 2013-09-10 2013-09-10
US61/875,817 2013-09-10
PCT/EP2014/056855 WO2014161994A2 (en) 2013-04-05 2014-04-04 Advanced quantizer

Publications (2)

Publication Number Publication Date
BR112015025009A2 BR112015025009A2 (pt) 2017-07-18
BR112015025009B1 true BR112015025009B1 (pt) 2021-12-21

Family

ID=

Similar Documents

Publication Publication Date Title
RU2696292C2 (ru) Аудиокодер и декодер
RU2752127C2 (ru) Усовершенствованный квантователь
AU2017201874B2 (en) Audio encoder and decoder
BR122020016403B1 (pt) Aparelho de decodificação de sinal de áudio, aparelho de codificação de sinal de áudio, método de decodificação de sinal de áudio e método de codificação de sinal de áudio
DK2697795T3 (en) ADAPTIVE SHARING Gain / FORM OF INSTALLMENTS
BR112014008376B1 (pt) codificação/decodificação de áudio baseada em uma representação eficaz de coeficientes autorregressivos
AU2012201692B2 (en) Audio Encoder and Decoder
BR112015025009B1 (pt) Unidades de quantização e quantização inversa, codificador e decodificador, métodos para quantizar e dequantizar
RU2793725C2 (ru) Аудиокодер и декодер
BR122019023345B1 (pt) Sistema de codificação de áudio, decodificador de áudio, método de codificação de áudio e método de decodificação de áudio
BRPI0317954B1 (pt) Variable rate audio coding and decoding process