BR112013002166B1 - método e aparelho para alocação dinâmica de bits para codificar sinais de áudio, e meio legível por computador - Google Patents

método e aparelho para alocação dinâmica de bits para codificar sinais de áudio, e meio legível por computador Download PDF

Info

Publication number
BR112013002166B1
BR112013002166B1 BR112013002166-7A BR112013002166A BR112013002166B1 BR 112013002166 B1 BR112013002166 B1 BR 112013002166B1 BR 112013002166 A BR112013002166 A BR 112013002166A BR 112013002166 B1 BR112013002166 B1 BR 112013002166B1
Authority
BR
Brazil
Prior art keywords
vectors
vector
allocation
bit allocation
task
Prior art date
Application number
BR112013002166-7A
Other languages
English (en)
Other versions
BR112013002166A2 (pt
Inventor
Venkatesh Krishnan
Vivek Rajendran
Ethan R. Duni
Original Assignee
Qualcomm Incorporated
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 Qualcomm Incorporated filed Critical Qualcomm Incorporated
Publication of BR112013002166A2 publication Critical patent/BR112013002166A2/pt
Publication of BR112013002166B1 publication Critical patent/BR112013002166B1/pt

Links

Images

Classifications

    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
    • G10L25/00Speech or voice analysis techniques not restricted to a single one of groups G10L15/00 - G10L21/00
    • G10L25/90Pitch determination of speech signals
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
    • G10L19/00Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis
    • G10L19/02Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis using spectral analysis, e.g. transform vocoders or subband vocoders
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
    • G10L19/00Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis
    • G10L19/02Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis using spectral analysis, e.g. transform vocoders or subband vocoders
    • G10L19/032Quantisation or dequantisation of spectral components
    • G10L19/038Vector quantisation, e.g. TwinVQ audio
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
    • G10L19/00Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis
    • G10L19/04Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis using predictive techniques
    • G10L19/08Determination or coding of the excitation function; Determination or coding of the long-term prediction parameters
    • G10L19/093Determination or coding of the excitation function; Determination or coding of the long-term prediction parameters using sinusoidal excitation models

Landscapes

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

Abstract

SISTEMAS, MÉTODOS, APARELHO E MÍDIAS LEGÍVEIS OR COMPUTADOR PAA ALOCAÇÃO DINÂMICA DE BITS. Uma operação de alocação dinâmica de bits determina uma alocação de bits para cada um de uma pluralidade de vetores, com base em uma pluralidade correspondente de fatores de ganho, e compara cada aloação com um valor limite que é baseado na dimensionalidade do vetor.

Description

Campo da Invenção
[001] Esta invenção refere-se ao campo de processamento de sinais de áudio.
Descrição da Técnica Anterior
[002] Esquemas de codificação baseados na transformada de cosseno discreta modificada (MDCT) são tipicamente utilizados para codificar sinais de áudio generalizados, que podem incluir conteúdo de fala e/ou não- fala, tal como música. Exemplos de codecs de áudio existentes que utilizam codificação MDCT incluem Camada de Áudio 3 MPEG-1 (MP3), Dolby Digital (Dolby Labs., Londres, UK; também chamado AC-3 e padronizado como ATSC A/52), Vorbis (Xiph.Org Foundation, Somerville, MA), Windows Media Audio (WMA, Microsoft Corp., Redmond, WA), Codificação Acústica de Transformação Adaptativa (ATRAC, Sony Corp., Tóquio, JP) e Codificação de Áudio Avançada (AAC, como padronizado mais recentemente em ISO/IEC 14496-3:2009). A codificação MDCT é também um componente de alguns padrões de telecomunicação, como, por exemplo, Codec de Taxa Variável Aperfeiçoado (EVRC, como padronizado no documento C.S0014-D v2.0, 25 janeiro de 2010, do 2o Projeto de Parceiros de 3a Geração). O codec G.718 (“Codificação de fala e áudio de taxa de bits variável embutida de 8-32 kbit/s em banda larga e banda estreita robusta com erros de quadro”, Setor de Padronização de Telecomunicações (ITU-T), Genebra, CH, junho de 2008, corrigido em novembro de 2008 e em agosto de 2009, emendado em março de 2009 e em março de 2010) é um exemplo de um codec de múltiplas camadas que utiliza codificação MDCT.
Sumário da Invenção
[003] Um método de alocação de bits de acordo com uma configuração geral inclui, para cada um dentre uma pluralidade de vetores, calcular um fator de ganho correspondente de uma pluralidade de fatores de ganho. Este método também inclui, para cada um dentre a pluralidade de vetores, calcular uma alocação de bits correspondente que é baseada no fator de ganho. Este método também inclui, para pelo menos um dentre a pluralidade de vetores, determinar que a alocação de bits correspondente não é maior que um valor de alocação mínimo. Este método também inclui alterar a alocação de bits correspondente, em resposta à determinação, para cada um de pelo menos um vetor. Meios de armazenamento legíveis-computador (por exemplo, mídia não- transitória) possuindo características tangíveis que fazem com que uma máquina que lê as características execute tal método são descritos.
[004] Um aparelho para alocação de bits de acordo com uma configuração geral inclui mecanismos para calcular, para cada um dentre uma pluralidade de vetores, um fator de ganho correspondente de uma pluralidade de fatores de ganho, e mecanismos para calcular, para cada um dentre uma pluralidade de vetores, uma alocação de bits correspondente que é baseada no fator de ganho. Este aparelho também inclui mecanismos para determinar, para pelo menos um dentre a pluralidade de vetores, que a alocação de bits correspondente não é maior que um valor de alocação mínimo e mecanismos para alterar a alocação de bits correspondente, em resposta à determinação, para cada um de pelo menos um vetor.
[005] Um aparelho para alocação de bits de acordo com outra configuração geral inclui um calculador de fatores de ganho configurado para calcular, para cada um dentre uma pluralidade de vetores, um fator de ganho correspondente de uma pluralidade de fatores de ganho, e um calculador de alocação de bits configurado para calcular, para cada um dentre a pluralidade de vetores, uma alocação de bits correspondente que é baseada no fator de ganho. Este aparelho também inclui um comparador configurado para determinar, para pelo menos um dentre a pluralidade de vetores, que a alocação de bits correspondente não é maior que um valor de alocação mínimo, e um módulo de ajuste de alocação configurado para alterar a alocação de bits correspondente, em resposta à determinação, para cada um de pelo menos um vetor.
Breve Descrição dos Desenhos
[006] Figura 1A - mostra um fluxograma para um método M100 de acordo com uma configuração geral.
[007] Figura 1B - mostra um fluxograma para uma implementação T210 da tarefa T200.
[008] Figura 1C - mostra um fluxograma para uma implementação T220 da tarefa T210.
[009] Figura 1D - mostra um fluxograma para uma implementação T230 da tarefa T220.
[0010] Figura 2 - mostra um exemplo de sub- bandas selecionadas em um sinal de áudio de banda baixa.
[0011] Figura 3 - mostra um exemplo de sub-bandas selecionadas e componentes residuais em um sinal de áudio de banda alta.
[0012] Figura 4A - mostra um exemplo de uma relação entre localizações de sub-banda em um quadro de referência e um quadro alvo.
[0013] Figura 4B - mostra um fluxograma para uma implementação T240 da tarefa T230.
[0014] Figuras 5A-5D - mostram exemplos de estruturas de quantização de vetores de ganho-forma.
[0015] Figura 6A - mostra um fluxograma para uma implementação T250 da tarefa T230.
[0016] Figura 6B - mostra um fluxograma para uma implementação T255 da tarefa T250.
[0017] Figura 7A - mostra um fluxograma de uma implementação T260 da tarefa T250.
[0018] Figura 7B - mostra um fluxograma para uma implementação T265 da tarefa de alocação dinâmica T260.
[0019] Figura 8A - mostra um fluxograma de uma implementação TA270 da tarefa de alocação dinâmica de bits T230.
[0020] Figura 8B - mostra um diagrama em blocos de uma implementação T280 da tarefa de alocação dinâmica de bits T220.
[0021] Figura 8C - mostra um fluxograma de uma implementação M110 do método M100.
[0022] Figura 9 - mostra um exemplo de codificação de pulsos.
[0023] Figura 10A - mostra um diagrama em blocos de uma implementação T290 da tarefa T280.
[0024] Figura 10B - mostra um fluxograma para uma implementação T295 da tarefa de alocação dinâmica T290.
[0025] Figura 11A - mostra um fluxograma para uma implementação T225 da tarefa de alocação dinâmica T220.
[0026] Figura 11B - mostra um exemplo de um subconjunto de um conjunto de coeficientes espectrais ordenados.
[0027] Figura 12A - mostra um diagrama em blocos de um aparelho para a alocação de bits MF100 de acordo com uma configuração geral.
[0028] Figura 12B - mostra um diagrama em blocos de um aparelho para alocação de bits A100 de acordo com uma configuração geral.
[0029] Figura 13A - mostra um diagrama em blocos de um codificador E100 de acordo com uma configuração geral. A Figura 13D mostra um diagrama em blocos de um decodificador D100 correspondente.
[0030] Figura 13B - mostra um diagrama em blocos de uma implementação E110 do codificador E100. A Figura 13E mostra um diagrama em blocos de uma implementação D110 correspondente do decodificador D100.
[0031] Figura 13C - mostra um diagrama em blocos de uma implementação E120 do codificador E110. Figura 13F - mostra um diagrama de blocos de uma implementação D120 correspondente do decodificador D100.
[0032] Figuras 14A-E - mostram uma faixa de aplicativos para o codificador E100.
[0033] Figura 15A - mostra um diagrama em blocos de um método MZ100 de classificação de sinais.
[0034] Figura 15B - mostra um diagrama em blocos de um dispositivo de comunicação D10.
[0035] Figura 16 - mostra vistas frontal, posterior e lateral de um aparelho de telefone H100.
[0036] Figura 17 - mostra um diagrama em blocos de um exemplo de codificador de múltiplas bandas.
[0037] Figura 18 - mostra um fluxograma de um exemplo de método para codificação de múltiplas bandas.
[0038] Figura 19 - mostra um diagrama em blocos de um codificador E200.
[0039] Figura 20 - mostra um exemplo de matriz de rotação.
Descrição Detalhada da Invenção
[0040] Pode ser desejável utilizar um esquema de alocação dinâmica de bits que é baseado em parâmetros de ganho codificados que são conhecidos tanto do codificador quanto do decodificador, de modo que o esquema possa ser executado sem a transmissão explícita de informações colaterais do codificador para o decodificador.
[0041] A menos que expressamente limitado pelo seu contexto, o termo “sinal” é aqui utilizado para indicar qualquer um dos seus significados costumeiros, inclusive o estado de um local de memória (ou conjunto de locais de memória) expresso em um meio de transmissão cabeado, de barramento ou outro. A menos que expressamente limitado pelo seu contexto, o termo “gerar” é aqui utilizado para indicar qualquer um dos seus significados costumeiros, tal como computar ou senão produzir. A menos que expressamente limitado pelo seu contexto, o termo “calcular” é aqui utilizado para indicar qualquer um dos seus significados costumeiros, tal como computar, avaliar, suavizar, e/ou selecionar a partir de uma pluralidade de valores. A menos que expressamente limitado pelo seu contexto, o termo “obter” é utilizado para indicar qualquer um dos seus significados costumeiros, tal como calcular, derivar, receber (por exemplo, de um dispositivo externo) e/ou recuperar (por exemplo, de um arranjo de elementos de armazenamento). A menos que expressamente limitado pelo seu contexto, o termo “selecionar” é utilizado para indicar qualquer um dos seus significados costumeiros, tal como identificar, indicar, aplicar e/ou utilizar pelo menos um, e menos que todos, de um conjunto de dois ou mais. Onde o termo “compreender” é utilizado na presente descrição e nas reivindicações, este não exclui outros elementos ou operações. O termo “baseado(a) em” (como em “A é baseado em B”) é utilizado para indicar qualquer um dos seus significados costumeiros, inclusive os casos (i) “derivado(a) de” (por exemplo, “B é um precursor de A”), (ii) “baseado(a) em pelo menos” (por exemplo, “A é baseado em pelo menos B”) e, se apropriado no contexto específico, (iii) “igual a” (por exemplo, “A é igual a B”). De maneira semelhante, o termo “em resposta a” é utilizado para indicar qualquer um dos seus significados costumeiros, inclusive “em resposta a pelo menos”.
[0042] A menos que indicado de outro modo, o termo “série” é utilizado para indicar uma sequência de dois ou mais itens. O termo “logaritmo” é utilizado para indicar o logaritmo de base dez, embora extensões de tal operação a outras bases estejam dentro do escopo desta descrição. O termo “componente de frequência” é utilizado para indicar uma de um conjunto de frequências ou bandas de frequência de um sinal, tal como uma amostra de uma representação do sinal no domínio da frequência (por exemplo, produzida por uma transformada rápida de Fourier) ou de uma sub-banda do sinal (por exemplo, uma sub-banda em escala Bark ou em escala mel).
[0043] A menos que indicado de outro modo, qualquer descrição de uma operação de um aparelho que tem uma característica específica é também expressamente destinada a descrever um método que tem uma característica análoga (e vice-versa), e qualquer descrição de uma operação de um aparelho de acordo com uma configuração específica é também expressamente destinada a descrever um método de acordo com uma configuração análoga (e vice- versa). O termo “configuração” pode ser utilizado com referência a um método, aparelho, e/ou sistema indicado pelo seu contexto específico. Os termos “método”, “processo”, “procedimento” e “técnica” são utilizados de maneira genérica e intercambiável, a menos que indicado de outro modo pelo contexto específico. Uma “tarefa” que têm múltiplas sub-tarefas é também um método. Os termos “aparelho” e “dispositivo” são também utilizados de maneira genérica e intercambiável, a menos que indicado de outro modo pelo contexto específico. Os termos “elemento” e “módulo” são tipicamente utilizados para indicar uma parte de uma configuração maior. A menos que expressamente limitado pelo seu contexto, o termo “sistema” é aqui utilizado para indicar qualquer um dos seus significados costumeiros, incluindo “um grupo de elementos que interagem para servir a um propósito comum”.
[0044] Os sistemas, métodos e aparelho aqui descritos são geralmente aplicáveis a representações de codificação de sinais de áudio no domínio da frequência. Um exemplo típico de tal representação é uma série de coeficientes de transformada no domínio das transformadas. Exemplos de transformadas adequadas incluem transformadas ortogonais discretas, tais como transformadas unitárias senoidais. Exemplos de transformadas unitárias senoidais adequadas incluem as transformadas trigonométricas discretas, que incluem, sem limitação, transformadas de cosseno discretas (DCTs), transformadas de seno discretas (DSTs), e transformada discreta de Fourier (DFT). Outros exemplos de transformadas adequadas incluem versões sobrepostas de tais transformadas. Um exemplo específico de uma transformada adequada é a DCT modificada (MDCT) introduzida acima.
[0045] Referência é feita ao longo desta descrição a uma “banda baixa” e uma “banda alta” (de maneira equivalente, “banda superior”) de uma faixa de frequências de áudio, e ao exemplo específico de uma banda baixa de zero a quatro quilohertz (kHz) e uma banda alta de 3,5 a sete kHz. Observa-se expressamente que os princípios aqui discutidos não estão limitados a este exemplo específico de maneira nenhuma, a menos que tal limite seja explicitamente indicado. Outros exemplos (mais uma vez sem limitação) de faixas de frequência para as quais a aplicação destes princípios de codificação, decodificação, alocação, quantização e/ou outro processamento é expressamente contemplada e descrita aqui incluem uma banda baixa que tem um limite inferior de qualquer dentre 0, 25, 50, 100, 150 e 200 Hz e um limite superior de qualquer dentre 3000, 3500, 4000 e 4500 Hz, e uma banda alta possuindo um limite inferior de qualquer dentre 3000, 3500, 4000, 4500, e 5000 Hz e um limite superior de qualquer dentre 6000, 6500, 7000, 7500, 8000, 8500 e 9000 Hz. A aplicação de tais princípios (mais uma vez sem limitação) a uma banda alta que tem um limite inferior de qualquer dentre 3000, 3500, 4000, 4500, 5000, 5500, 6000, 6500, 7000, 7500, 8000, 8500 e 9000 Hz e um limite superior de qualquer dentre 10, 10,5, 11, 11,5, 12, 12,5, 13, 13,5, 14, 14,5, 15, 15,5 e 16 kHz é também expressamente contemplada e por este descrita. Observa-se expressamente também que, embora um sinal de banda alta seja tipicamente convertido em uma taxa de amostragem mais baixa em um estágio anterior do processo de codificação (por exemplo, por meio de re- amostragem e/ou de dizimação), este mantêm um sinal de banda alta e as informações que este porta continua a representar a faixa de frequências de áudio de banda alta.
[0046] Um esquema de codificação que inclui alocação dinâmica de bits aqui descrita pode ser aplicado para codificar qualquer sinal de áudio (por exemplo, incluindo fala). Alternativamente, pode ser desejável utilizar tal esquema de codificação apenas para áudio não- fala (por exemplo, música). Em tal caso, o esquema de codificação pode ser utilizado com um esquema de classificação para determinar o tipo de conteúdo de cada quadro do sinal de áudio e selecionar um esquema de codificação adequado.
[0047] Um esquema de codificação que inclui a alocação dinâmica de bits aqui descrita pode ser utilizado como um codec primário ou uma camada ou estágio em um codec de múltiplas camadas ou múltiplos estágios. Em um exemplo, tal esquema de codificação é utilizado para codificar uma parte do conteúdo de frequência de um sinal de áudio (por exemplo, uma banda baixa ou uma banda alta), e outro esquema de codificação é utilizado para codificar outra parte do conteúdo de frequência do sinal. Em outro exemplo, tal esquema de codificação é utilizado para codificar um residual (isto é, um erro entre os sinais original e codificado) de outra camada de codificação.
[0048] Uma codificação de baixa taxa de bits de sinais de áudio exige frequentemente uma utilização ótima dos bits disponíveis para codificar os conteúdos do quadro de sinal de áudio. Os conteúdos dos quadros de sinal de áudio podem consistir nas amostras PCM (modulação por código de pulso) do sinal ou em uma representação do sinal no domínio das transformadas. A codificação de cada quadro inclui tipicamente dividir o quadro em uma pluralidade de sub-bandas (isto é, dividir o quadro como um vetor em uma pluralidade de sub-vetores), atribuir uma alocação de bits a cada sub-vetor, e codificar cada sub-vetor no número de bits alocado correspondente. Pode ser desejável, em uma aplicação de codificação de áudio típica, por exemplo, efetuar quantização de vetores em um grande número (por exemplo, dez, vinte, trinta ou quarenta) de diferentes vetores de sub-banda para cada quadro. Exemplos de tamanho de quadro incluem (sem limitação) 100, 120, 140, 160 e 180 valores (por exemplo, coeficientes de transformada), e exemplos de comprimento de sub-banda incluem (sem limitação) cinco, seis, sete, oito, nove, dez, onze, doze e dezesseis.
[0049] Uma abordagem de alocação de bits é dividir uma alocação total de bits de maneira uniforme entre os sub-vetores. Por exemplo, o número de bits alocados para cada sub-vetor pode ser fixado de quadro para quadro. Neste caso, o decodificador já pode ser configurado com o conhecimento do esquema de alocação de bits, de modo que não haja necessidade do codificador transmitir esta informação. Entretanto, o objetivo da utilização ótima de bits pode ser o de assegurar que diversos componentes do quadro de sinal de áudio sejam codificados com um número de bits que esteja relacionado com (por exemplo, proporcional) a sua significação perceptiva. Alguns dos vetores de subbanda de entrada podem ser menos significativos (por exemplo, podem captar pouca energia), de modo que um resultado melhor possa ser obtido pela alocação de poucos bits para codificar estes vetores e mais bits para codificar os vetores de sub-bandas mais importantes.
[0050] Uma vez que um esquema de alocação fixo não dá conta de variações na significação perceptiva relativa dos sub-vetores, pode ser desejável utilizar, em vez disso, um esquema de alocação dinâmica, de modo que o número de bits alocados para cada sub-vetor possa variar de quadro para quadro. Neste caso, as informações referentes ao esquema de alocação de bits específico utilizado para cada quadro são fornecidas ao decodificador de modo que o quadro possa ser decodificado.
[0051] A maioria dos codificadores de áudio provê tipicamente tais informações de alocação de bits ao decodificador como informações colaterais. Algoritmos de codificação de áudio tal como AAC, por exemplo, utiliza tipicamente informações colaterais ou esquemas de codificação por entropia, como, por exemplo, a codificação de Huffman, para transmitir as informações de alocação de bits. A utilização de informações somente para transmitir a alocação de bits é ineficaz, uma vez que estas informações colaterais não são utilizadas diretamente na codificação do sinal. Embora palavras-código de comprimento variável como codificação de Huffman ou codificação aritmética possam proporcionar alguma vantagem, pode-se encontrar palavras de código longas que podem reduzir a eficácia da codificação.
[0052] Pode ser desejável, em vez disso, utilizar um esquema de alocação dinâmica de bits que é baseado em parâmetros de ganho codificados que são conhecidos tanto do codificador quanto do decodificador, de modo que o esquema possa ser executado sem a transmissão explícita de informações colaterais do codificador para o decodificador. Tal eficácia pode ser especialmente importante para aplicações de baixa taxa de bits, tal como telefonia celular. Em um exemplo, tal alocação dinâmica de bits pode ser implementada sem as informações colaterais pela alocação de bits para quantização de vetores de forma de acordo com os valores dos ganhos associados.
[0053] A Figura 1A mostra um fluxograma de um método M100 de acordo com uma configuração geral que inclui uma tarefa de divisão T100 e uma tarefa de alocação de bits T200. A tarefa T100 recebe um vetor que será codificado (por exemplo, uma pluralidade de coeficientes de um quadro no domínio das transformadas) e o divide em um conjunto de sub-vetores. Os sub-vetores podem, mas, não necessitam sobrepor e podem até mesmo ser separados uns dos outros (nos exemplos específicos aqui descritos, os sub-vetores não se sobrepõem). Esta divisão pode ser predeterminada (por exemplo, independente do conteúdo do vetor), de modo que cada vetor de entrada seja dividido da mesma maneira. Um exemplo de divisão predeterminada divide cada vetor de entrada de 100 elementos em três sub-vetores de respectivos comprimentos (25, 35, 40). Outro exemplo de divisão predeterminada divide um vetor de entrada de 140 elementos em um conjunto de vinte sub-vetores de comprimento sete. Outro exemplo de divisão predeterminada divide um vetor de entrada de 280 elementos em um conjunto de quarenta sub- vetores de comprimento sete.
[0054] Alternativamente, esta divisão pode ser variável, de modo que os vetores de entrada sejam divididos de maneira diferente de um quadro para o seguinte (por exemplo, de acordo com alguns critérios perceptivos). Pode ser desejável, por exemplo, efetuar codificação eficaz de um sinal de áudio no domínio das transformadas ao detectar e codificar o alvo dos componentes harmônicos do sinal. A Figura 2 mostra um gráfico de magnitude VERSUS frequência no qual oito sub-bandas selecionadas de comprimento sete que correspondem a picos harmonicamente afastados de um sinal residual de codificação de predição linear (LPC) de banda baixa são indicadas por barras próximas ao eixo geométrico de frequência. A Figura 3 mostra um exemplo semelhante para um sinal residual LPC de banda alta que indica os componentes residuais dispostos entre e fora das sub-bandas selecionadas. Em tal caso, pode ser desejável efetuar uma alocação dinâmica entre o conjunto de subbandas e o residual total, efetuar uma alocação dinâmica entre o conjunto de sub-bandas e/ou efetuar uma alocação dinâmica entre os componentes residuais. Uma descrição adicional da modelagem harmônica e da codificação de modo harmônico pode ser encontrada nos pedidos listados acima, para os quais este pedido reivindica prioridade.
[0055] Outro exemplo de esquema de divisão variável identifica um conjunto de sub-bandas perceptivamente importantes no quadro atual (também chamado de quadro alvo) com base nas localizações de sub-bandas perceptivamente importantes em uma versão codificada de outro quadro (também chamado de quadro de referência), que pode ser o quadro anterior. A Figura 4A mostra um exemplo de operação de seleção de sub-bandas em tal esquema de codificação (também chamado de codificação de modo dependente). Uma descrição adicional de codificação de modo dependente pode ser encontrada nos pedidos listados acima, para os quais este pedido reivindica prioridade.
[0056] Outro exemplo de sinal residual é obtido pela codificação de um conjunto de sub-bandas selecionadas e pela subtração do conjunto codificado do sinal original. Neste caso, pode ser desejável dividir o residual resultante em um conjunto de sub-vetores (por exemplo, de acordo com uma divisão predeterminada) e efetuar uma alocação dinâmica entre os sub-vetores.
[0057] As sub-bandas selecionadas podem ser codificadas utilizando um esquema de quantização de vetores (por exemplo, um esquema de quantização de vetores de ganho-forma), e o sinal residual pode ser codificado utilizando um esquema de codificação de pulso fatorial (FPC) ou um esquema de codificação de pulso combinatória.
[0058] De um número total de bits a serem alocados entre a pluralidade de vetores, a tarefa T200 atribui uma alocação de bits a cada um dos diversos vetores. Esta alocação pode ser dinâmica, de modo que o número de bits alocados para cada vetor possa alterar de quadro para quadro.
[0059] O método M100 pode ser disposto para passar as alocações de bits produzidas pela tarefa T200 para uma operação que codifica os sub-vetores para armazenamento ou transmissão. Um tipo de tal operação é um esquema de quantização de vetores (VQ), que codifica um vetor ao associar este a uma entrada em cada um de um ou mais conjuntos de livros-código (que são também conhecidos do decodificador) e utilizando o índice ou índices destas entradas para representar o vetor. A extensão de um índice de livro-código, que determina o número máximo de entradas no livro-código, pode ser qualquer inteiro arbitrário que seja considerado adequado para a aplicação. Uma implementação do método M100 como executado em um decodificador pode ser disposta para passar as alocações de bits produzidas pela tarefa T200 para uma operação que decodifica os sub-vetores para reprodução de um sinal de áudio codificado.
[0060] Para o caso em que dois ou mais da pluralidade de vetores têm extensões diferentes, a tarefa T200 pode ser implementada para calcular a alocação de bits para cada vetor m (onde m = 1, 2, ..., M) com base no número de dimensões (isto é, a extensão) do vetor. Neste caso, a tarefa T200 pode ser configurada para calcular a alocação de bits Bm para cada vetor m como B x (DM/DH), onde B é o número total de bits a serem alocados, Dm é a dimensão do vetor m, e DH é a soma das dimensões de todos os vetores. Em alguns casos, a tarefa T100 pode ser implementada para determinar as dimensões dos vetores ao determinar uma localização para cada uma de um conjunto de sub-bandas, com base em um conjunto de parâmetros de modelagem. Para codificação de modo harmônico, os parâmetros de modelagem podem incluir uma frequência fundamental F0 (dentro do quadro atual ou dentro de outra banda do quadro) e um espaçamento harmônico d entre picos de sub-bandas adjacentes. Os parâmetros para um modelo harmônico podem incluir também um valor de flutuação de fase correspondente para cada uma de uma ou mais das sub-bandas. Para codificação de modo dependente, os parâmetros de modelagem podem incluir um valor de flutuação de fase, com relação à localização de uma banda significativa correspondente de um quadro codificado anterior, para cada uma de uma ou mais sub-bandas. As localizações e dimensões dos componentes residuais do quadro podem ser então determinadas com base nas localizações das sub-bandas. Os componentes residuais, que podem incluir partes do espectro que estão entre e/ou fora das sub-bandas, podem ser também concatenados em um ou mais vetores maiores.
[0061] A Figura 1B mostra um fluxograma de uma implementação T210 da tarefa de alocação dinâmica de bits T200 que inclui sub-tarefas TA200 e TA300. A tarefa TA200 calcula alocações de bits para os vetores, e a tarefa TA300 compara as alocações com um valor de alocação mínimo. A tarefa TA300 pode ser implementada para comparar cada alocação com o mesmo valor de alocação mínimo. Alternativamente, a tarefa TA300 pode ser implementada para comparar cada alocação a um valor de alocação mínimo que pode ser diferente para dois ou mais dentre a pluralidade de vetores.
[0062] A tarefa TA300 pode ser implementada para aumentar a alocação de bits que é menor que o valor de alocação mínimo (por exemplo, ao alterar a alocação para o valor de alocação mínimo). Alternativamente, a tarefa TA300 pode ser implementada para reduzir uma alocação de bits que é menor que (alternativamente, não maior que) o valor de alocação mínimo para zero.
[0063] A Figura 1C mostra um fluxograma de uma implementação T220 da tarefa de alocação dinâmica de bits T200 que inclui a sub-tarefa TA100 e uma implementação TA210 da tarefa de alocação TA200. A tarefa TA100 calcula um fator de ganho correspondente para cada um da pluralidade de vetores, e a tarefa TA210 calcula uma alocação de bits para cada vetor com base no fator de ganho correspondente. É tipicamente desejável que o codificador calcule as alocações de bits utilizando os mesmos fatores de ganho do decodificador. Por exemplo, pode ser desejável que a tarefa de cálculo do fator de ganho TA100 executada no decodificador produza o mesmo resultado da tarefa TA100 executada no codificador. Consequentemente, pode ser desejável que a tarefa TA100 executada no codificador inclua a dequantização dos fatores de ganho.
[0064] A quantização de vetores de ganho-forma é uma técnica de codificação que pode ser utilizada para codificar de maneira eficaz vetores de sinal (por exemplo, que representam dados de som ou imagem) ao desacoplar a energia do(s) vetor(es), que é representada por um fator de ganho, da direção do(s) vetor(es), que é representada por uma forma. Tal técnica pode ser especialmente adequada para aplicações nas quais a faixa dinâmica do sinal pode ser grande, tal como a codificação de sinais de áudio, tal como fala e/ou música.
[0065] Um quantizador de vetor de ganho-forma (GSVQ) codifica a forma e o ganho de um vetor de entrada x separadamente. A Figura 5A mostra um exemplo de uma operação de quantização de vetores de ganho-forma. Neste exemplo, o quantizador de forma SQ100 é configurado para executar um esquema de quantização de vetores (VQ) ao selecionar o vetor de forma quantizado S de um livro-código como o vetor mais próximo no livro-código do vetor de entrada x (por exemplo, mais próximo no sentido de um erro quadrático médio) e ao transmitir o índice do vetor S’ no livro-código. Em outro exemplo, o quantizador de forma SQ100 é configurado para executar um esquema de quantização de codificação de pulso ao selecionar um padrão de norma unitária de pulsos unitários que está mais próximo do vetor de entrada x (por exemplo, mais próximo no sentido de um erro quadrático médio) e ao transmitir um índice de livro- código para este padrão. O calculador de normas NC10 é configurado para calcular a norma || x|| do vetor de entrada x, e o quantizador de ganhos GQ10 é configurado para quantizar a norma para produzir um fator de ganho quantizado. O quantizador de ganho GQ10 pode ser configurado para quantizar a norma como um escalar ou para combinar a norma com outros ganhos (por exemplo, normas de outros da pluralidade de vetores) em um vetor de ganho para quantização de vetor.
[0066] O quantizador de forma SQ100 é tipicamente implementado como um quantizador de vetor com a restrição de que os vetores do livro-código têm uma norma unitária (isto é, são todos pontos na hiper-esfera unitária). Esta restrição simplifica a busca de livro- código (por exemplo, de um cálculo de erro quadrático médio para uma operação de produto interno). Por exemplo, o quantizador de forma SQ100 pode ser configurado para selecionar o vetor S’ dentre um livro-código de K vetores de norma unitária SK, k = 0,1, ..., K - 1, de acordo com uma operação tal como arg maxK(XTSK). Tal busca pode ser exaustiva ou otimizada. Por exemplo, os vetores podem ser dispostos dentro do livro-código para suportar uma estratégia de busca específica.
[0067] Em alguns casos, pode ser desejável restringir a entrada do quantizador de forma SQ100 de modo a ser de norma unitária (por exemplo, para permitir uma estratégia de busca de livro-código específica). A Figura 5B apresenta tal exemplo de uma operação de quantização de vetor de forma-ganho. Neste exemplo, o normalizador NL10 é configurado para normalizar o vetor de entrada x de modo a produzir a norma 11 xII e um vetor de forma de norma unitária S = x/II x II, e o quantizador de forma SQ100 é disposto para receber o vetor de forma S como sua entrada. Em tal caso, o quantizador de forma SQ100 pode ser configurado para selecionar o vetor S dentre um livro-código de K vetores de norma unitária Sk, k = 0,1, ..., K - 1, de acordo com uma operação tal como arg maxK(STSK).
[0068] Alternativamente, o quantizador de forma SQ100 pode ser configurado para selecionar o vetor S dentre um livro-código de padrões de pulsos unitários. Neste caso, o quantizador SQ100 pode ser configurado para selecionar o padrão que, quando normalizado, está mais próximo do vetor de forma S (por exemplo, mais próximo no sentido de um erro quadrático médio). Tal padrão é tipicamente codificado como um índice de livro-código que indica o número de pulsos e o sinal para cada posição ocupada no padrão. A seleção do padrão pode incluir escalonar o vetor de entrada e associar este ao padrão, e o vetor quantizado S e gerado pela normalização do padrão selecionado. Exemplos de esquemas de codificação de pulsos que podem ser executados pelo quantizador de forma SQ100 para codificar tais padrões incluem codificação de pulsos fatorial e codificação de pulsos combinatória.
[0069] O quantizador de ganho GQ10 pode ser configurado para efetuar quantização escalar do ganho ou para combinar o ganho com outros ganhos em um vetor de ganho para quantização de vetor. No exemplo das Figuras 5A e 5B, o quantizador de ganho GQ10 é disposto para receber e quantizar o ganho do vetor de entrada x como a norma || x|| (também chamado “ganho de malha aberta”). Em outros casos, o ganho é baseado na correlação do vetor de forma quantizado S com a forma original. Tal ganho é chamado de “ganho de malha fechada”. A Figura 5C mostra um exemplo de tal operação de quantização de vetor de ganho-forma, que inclui um calculador de produtos internos IP10 e uma implementação SQ110 do quantizador de forma SQ100, que também produz o vetor de forma quantizado S. O calculador IP10 é disposto para calcular o produto interno do vetor de forma quantizado S e o vetor de entrada original (por exemplo, STX) , e o quantizador de ganhos GQ10 é disposto para receber e quantizar este produto como o ganho de malha fechada. Na medida em que o quantizador de forma SQ110 produz um resultado de quantização de forma precária, o ganho de malha fechada será mais baixo. Na medida em que o quantizador de forma quantiza de maneira precisa a forma, o ganho de malha fechada será mais elevado. Quando a quantização de forma é perfeita, o ganho de malha fechada é igual ao ganho de malha aberta. A Figura 5D mostra um exemplo de uma operação de quantização de vetor de ganho- forma semelhante, que inclui um normalizador NL20 configurado para normalizar o vetor de entrada x de modo a produzir um vetor de forma de norma unitária S = x/|| x|| como entrada para o quantizador de forma SQ110.
[0070] No sentido da codificação de origem, o ganho de malha fechada pode ser considerado como sendo mais ótimo, uma vez que leva em conta o erro de quantização de forma específica, diferentemente do ganho de malha aberta. Entretanto, pode ser desejável executar processamento de fluxo ascendente (upstream) com base neste valor de ganho. Especificamente, pode ser desejável utilizar este fator de ganho para decidir como quantizar a forma (por exemplo, para alocar dinamicamente bits entre as formas). Tal dependência da operação de codificação de forma do ganho pode tornar desejável utilizar um cálculo de ganho de malha aberta (por exemplo, para evitar informações colaterais). Neste caso, uma vez que o ganho controla a alocação de bits, a quantização de forma depende explicitamente do ganho tanto no codificador quanto no decodificador, de modo que um cálculo de ganho de malha aberta independente de forma é utilizado. Uma descrição adicional da quantização de vetores de ganho-forma, que inclui estruturas de quantização de forma de múltiplos estágios que podem ser utilizadas em conjunto com um esquema de alocação dinâmica, como aqui descrito, pode ser encontrada nos pedidos listados acima, para os quais este pedido reivindica prioridade.
[0071] Pode ser desejável combinar uma estrutura de codificação de ganhos preditiva (por exemplo, um esquema de modulação de código de pulso diferencial) com uma estrutura de transformada para codificação de ganhos. Em um exemplo, um vetor de ganhos de sub-banda em um plano (por exemplo, um vetor dos fatores de ganho da pluralidade de vetores) é introduzido no codificador de transformadas para obter os componentes médio e diferenciais, com a operação de codificação preditiva sendo executada apenas no componente médio (por exemplo, de quadro para quadro). Em um exemplo, cada elemento m do vetor de ganho de entrada de comprimento M é calculado de acordo com uma expressão tal como 10 logiol I xm 112, onde xm denota o vetor de sub-banda correspondente. Pode ser desejável utilizar tal método em conjunto com a tarefa de alocação dinâmica T210 aqui descrita. Uma vez que o componente médio não afeta a alocação dinâmica entre os vetores, os componentes diferenciais (que são codificados sem dependência do passado) podem ser utilizados como os fatores de ganho em uma implementação da tarefa de alocação dinâmica T210 para obter uma operação que seja resistente à falha da operação de codificação preditiva (por exemplo, resultante de um apagamento do quadro anterior). A Figura 20 mostra um exemplo de uma matriz de rotação (onde S é o vetor de coluna [1 1 1 ... 1]T /sqrt(M)) que pode ser aplicada pelo codificador de transformadas ao vetor de comprimento M de fatores de ganho de modo a obter um vetor rotacionado que tem um componente médio no primeiro elemento e componentes diferenciais correspondentes nos outros elementos. Neste caso, o componente diferencial para o elemento ocupado pelo componente médio pode ser reconstruído a partir do componente médio e dos outros componentes diferenciais.
[0072] A tarefa TA210 pode ser configurada para calcular uma alocação de bits BM para cada vetor m de modo que a alocação seja baseada no número de dimensões DM e na energia EM do vetor (por exemplo, da energia por dimensão do vetor). Em um exemplo, a alocação de bits Bm para cada vetor m é inicializada no valor B x (DM/DH) + alog2(Em/DM) — BFZ, onde Fz é calculado como a soma ∑[(DM/DH) x log2(EM/DM) de todos os vetores m. Valores exemplares para cada um dos fatores a e b incluem 0,5. Para o caso no qual os vetores m são vetores de norma unitária (por exemplo, vetores de forma), a energia EM de cada vetor na tarefa TA210 é o fator de ganho correspondente.
[0073] A Figura 1D mostra um fluxograma para uma implementação T230 da tarefa de alocação dinâmica T200 que inclui uma implementação TA310 da tarefa de comparação TA300. A tarefa TA310 compara a alocação atual para cada vetor m com um limite Tm, que é baseado no número de dimensões Dm do vetor. Para cada vetor m, o limite Tm é calculado como uma função de forma monótona não decrescente do número correspondente de dimensões Dm. O limite Tm pode ser calculado, por exemplo, como o mínimo de Dm e um valor V. Em um exemplo, o valor de Dm varia de cinco a trinta e dois, e o valor de V é doze. Neste caso, um vetor de cinco dimensões fracassará na comparação se a sua alocação atual for de menos que cinco bits, enquanto um vetor de vinte e quatro dimensões será aprovado pela comparação, desde que a sua alocação atual seja de pelo menos doze bits.
[0074] A tarefa T230 pode ser configurada de modo que as alocações para vetores que não são aprovadas pela comparação na tarefa TA310 sejam reinicializadas em zero. Neste caso, os bits que foram alocados anteriormente para estes vetores podem ser utilizados para aumentar as alocações para um ou mais outros vetores. A Figura 4B mostra um fluxograma para uma implementação T240 da tarefa T230, que inclui uma sub-tarefa TA400, que efetua tal distribuição (por exemplo, pela repetição da tarefa TA210, de acordo com um número revisado dos bits disponíveis para alocação, para os vetores cujas alocações ainda estão sujeitas a alterações).
[0075] Observa-se em particular que, embora a tarefa TA210 possa ser implementada para efetuar uma alocação dinâmica com base em critérios perceptivos (por exemplo, energia por dimensão), a implementação correspondente do método M100 pode ser configurada para produzir um resultado que depende apenas dos valores de ganho de entrada e das dimensões vetoriais. Consequentemente, um decodificador que tem conhecimento dos mesmos valores de ganho e das dimensões vetoriais dequantizados pode executar o método M100 de modo a obter as mesmas alocações de bits sem a necessidade de um codificador correspondente para transmitir qualquer informação colateral.
[0076] Pode ser desejável configurar a tarefa de alocação dinâmica de bits T200 para impor um valor máximo às alocações de bits calculadas pela tarefa TA200 (por exemplo, a tarefa TA210). A Figura 6A mostra um fluxograma de tal implementação T250 da tarefa T230 que inclui uma implementação TA305 da sub-tarefa TA300, que compara as alocações de bits calculadas na tarefa TA210 com um valor de alocação máximo e/ou com um valor de alocação mínimo. A tarefa TA305 pode ser implementada para comparar cada alocação com o mesmo valor de alocação máximo. Alternativamente, a tarefa TA305 pode ser implementada para comparar cada alocação com um valor de alocação máximo que pode ser diferente para dois ou mais da pluralidade de vetores.
[0077] A tarefa TA305 pode ser configurada para corrigir uma alocação que excede um valor de alocação máximo Bmax (também chamado de limite superior) ao alterar a alocação de bits do vetor para o valor Bmax e ao remover o vetor da alocação ativa (por exemplo, impedindo outras alterações na alocação para este vetor). Alternativamente ou adicionalmente, a tarefa TA305 pode ser configurada para reduzir uma alocação de bits que seja menor que (alternativamente, não maior que) um valor de alocação mínimo Bmin (também chamado de limite inferior) para zero, ou para corrigir uma alocação que seja menor que o valor Bmin ao alterar a alocação de bits do vetor para o valor Bmin e ao remover o vetor da alocação ativa (por exemplo, ao impedir outras alterações na alocação para este vetor). Para vetores que serão codificados por pulso, pode ser desejável utilizar os valores de Bmin e/ou Bmax que correspondem aos números inteiros de pulsos, ou saltar a tarefa TA305 para tais vetores.
[0078] A tarefa TA305 pode ser configurada para corrigir iterativamente as piores sobre-alocações e/ou sub-alocações atuais até que nenhuma violação de limite permaneça. A tarefa TA305 pode ser implementada para executar operações adicionais após corrigir todas as violações de limite: por exemplo, atualizar os valores de Dh e Fz, calcular um número de bits disponíveis Bav que dê conta das re-alocações corretivas, e recalcular as alocações Bm para vetores m atualmente em alocação ativa (por exemplo, de acordo com uma expressão tal como DM x ( Bav / Dh) + A log2 ( EM / DM ) — BFz ) .
[0079] A Figura 6B mostra um fluxograma para uma implementação T255 da tarefa de alocação dinâmica T250, que também inclui uma ocorrência da tarefa TA310.
[0080] Pode ser desejável configurar a tarefa de alocação dinâmica T200 para impor uma restrição de inteiro a cada uma das alocações de bits. A Figura 7A mostra um fluxograma de tal implementação T260 da tarefa T250, que inclui uma ocorrência da tarefa TA400 e as sub- tarefas TA500 e TA600.
[0081] Depois que os bits desalocados são distribuídos na tarefa TA400, a tarefa TA500 impõe uma restrição de inteiro às alocações de bits Bm ao truncar cada alocação Bm para o maior número inteiro não maior que Bm. Para vetores que serão codificados por pulso, pode ser desejável truncar a alocação Bm correspondente para o maior número inteiro não maior que Bm que corresponde a um número inteiro de pulsos. A tarefa TA500 também atualiza o número de bits disponíveis Bav (por exemplo, de acordo com uma expressão tal como B — ∑“=1Bm) . A tarefa TA500 pode ser também configurada para armazenar o resíduo truncado para cada vetor (por exemplo, para utilização posterior na tarefa TA600). Em um exemplo, a tarefa TA500 armazena o resíduo truncado para cada vetor em um elemento correspondente de uma matriz de erros ΔB.
[0082] A tarefa TA600 distribui quaisquer bits restantes para serem alocados. Em um exemplo, se o número de bits restantes Bav for pelo menos igual ao número de vetores atualmente em alocação ativa, a tarefa TA600 incrementa a alocação para cada vetor, removendo vetores cujas alocações atingem Bmax da alocação ativa e atualizando Bav, até que esta condição não se aplique mais. Se Bav for menor que o número de vetores atualmente em alocação ativa, a tarefa TA600 distribui os bits restantes para os vetores que têm os maiores resíduos truncados da tarefa TA500 (por exemplo, os vetores que correspondem aos valores mais elevados na matriz de erros ΔB) . Para vetores que são codificados por pulso, pode ser desejável aumentar suas alocações apenas para valores que correspondem a números inteiros de pulsos.
[0083] A Figura 7B mostra um fluxograma para uma implementação T265 da tarefa de alocação dinâmica T260, que inclui também uma ocorrência da tarefa TA310.
[0084] A Figura 8A mostra um fluxograma de uma implementação TA270 da tarefa de alocação dinâmica de bits T230, que inclui uma sub-tarefa de depuração TA150. A tarefa TA150 executa uma depuração inicial de um conjunto Sv de vetores a serem quantizados (por exemplo, vetores de forma), com base nos fatores de ganho calculados. Por exemplo, a tarefa TA150 pode ser implementada para remover de consideração erros de baixa energia, onde a energia de um vetor pode ser calculada como o ganho de malha aberta ao quadrado. A tarefa TA150 pode ser configurada, por exemplo, para depurar vetores cujas energias são menores (alternativamente, não maiores) do que um valor limite Ts. Em um exemplo específico, o valor de Ts é 316. A tarefa TA150 pode ser também configurada para terminar a tarefa T270 se a energia média por vetor for trivial (por exemplo, não maior que 100).
[0085] A tarefa TA150 pode ser configurada para calcular um número máximo de vetores a serem depurados Pmax com base no número total de bits B a serem alocados para o conjunto Sv dividido pelo número máximo de bits Bmax a serem alocados para qualquer vetor. Em um exemplo, a tarefa TA150 calcula Pmax ao subtrair o teto(B/Bmax) de M, onde M é o número de vetores em Sv. Para o caso no qual, vetores demais são depurados, a tarefa TA150 pode ser configurada para anular a depuração do vetor que tem a energia máxima entre os vetores atualmente depurados até que não mais que o número máximo de vetores seja depurado.
[0086] A Figura 8B mostra um diagrama em blocos de uma implementação T280 da tarefa de alocação dinâmica de bits T220, que inclui a tarefa de depuração TA150, a tarefa de restrição de inteiro TA500 e a tarefa de distribuição TA600. Observa-se em particular que a tarefa T280 pode ser implementada para produzir um resultado que depende apenas dos valores de ganho de entrada, de modo que o codificador e o decodificador possam executar a tarefa T280 nos mesmos valores de ganho dequantizados para obter as mesmas alocações de bits sem transmitir qualquer informação colateral. Observa-se também que a tarefa T280 pode ser implementada de modo a incluir ocorrências das tarefas TA310 e/ou TA400 aqui descritas, e que adicionalmente ou alternativamente, a tarefa TA300 pode ser implementada como a tarefa TA305. A listagem de pseudocódigos no Apêndice A descreve uma implementação específica da tarefa T280.
[0087] De modo a suportar um esquema de alocação dinâmica, pode ser desejável implementar o quantizador de forma (e o dequantizador correspondente) de modo a selecionar dentre livros-código de tamanhos diferentes (isto é, dentre livros-código que têm comprimentos de índice diferentes) em resposta ao número específico de bits que são alocados para cada forma a ser quantizada. Em um exemplo, o quantizador de forma SQ100 (ou SQ110) pode ser implementado para utilizar um livro-código que tem um comprimento de índice menor para codificar a forma de um vetor de sub-banda cujo ganho de malha aberta é baixo, e para utilizar um livro-código que tem um comprimento de índice maior de modo a codificar a forma de um vetor de sub-banda cujo ganho de malha aberta é alto. Tal esquema de alocação dinâmica pode ser configurado para utilizar um mapeamento entre um ganho de vetor e um comprimento de índice de livro-código de forma que é fixo ou por outro lado determinístico, de modo que o dequantizador correspondente possa aplicar o mesmo esquema sem qualquer informação colateral adicional.
[0088] Qualquer tipo de operação de codificação de vetores é um esquema de codificação de pulsos (por exemplo, codificação de pulsos fatorial ou codificação de pulsos combinatória), que codifica um vetor ao associar este com um padrão de pulsos unitários e ao utilizar um índice que identifica esse padrão para representar o vetor. A Figura 9 mostra um exemplo no qual um vetor de trinta dimensões, cujo valor em cada dimensão é indicado pela linha cheia, é representado pelo padrão de pulsos (0, 0, -1, -1, +1, +2, -1, 0, 0, +1, -1, -1, + 1, - 1, +1, -1, -1, +2, -1, 0, 0, 0, 0, -1, +1, 0, 0, 0, 0), conforme indicado pelos pontos. Este padrão de pulsos pode ser tipicamente representado por um índice que é bem menor que trinta bits. Pode ser desejável utilizar um esquema de codificação de pulsos para quantização de vetores gerais (por exemplo, de um resíduo) e/ou para quantização de forma.
[0089] A alteração de uma alocação de bits de quantização em incrementos de um bit (isto é, a imposição de uma granularidade de quantização fixa de um bit ou “granularidade de inteiro”) é relativamente simples na VQ convencional, que pode acomodar tipicamente um comprimento de vetor de livro-código de inteiro arbitrário. A codificação de pulsos funciona de maneira diferente, contudo, no sentido de que o tamanho do domínio de quantização é determinado não pelo comprimento de vetor de livro-código, mas pelo número máximo de pulsos que podem ser codificados para um dado comprimento de vetor de entrada. Quando este número máximo de pulsos muda para um, o comprimento de vetor de livro-código pode alterar por um inteiro maior que um (isto é, de modo que a granularidade de quantização seja variável). Consequentemente, a alteração de uma alocação de bits de quantização de codificação de pulsos nas etapas de um bit (isto é, a imposição da granularidade de inteiro) pode resultar em alocações que não são válidas. A granularidade de quantização para um esquema de codificação de pulsos tende a ser maior para taxas de bits baixas e diminuir para a granularidade de inteiro à medida que a taxa de bits aumenta.
[0090] O comprimento do índice de codificação de pulsos determina o número máximo de pulsos no padrão correspondente. Como observado acima, nem todos os comprimentos de índice de inteiro são válidos, uma vez que o aumento do comprimento de um índice de codificação de pulsos para um, não necessariamente aumenta o número de pulsos que podem ser representados pelos padrões correspondentes. Consequentemente, pode ser desejável que uma aplicação de codificação de pulsos da tarefa de alocação dinâmica T200 inclua uma tarefa que traduza as alocações de bits produzidas pela tarefa T200 (que não são necessariamente válidas no esquema de codificação de pulsos) em alocações de pulsos. A Figura 8C mostra um fluxograma de uma implementação M110 do método M100 que inclui tal tarefa T300, que pode ser implementada para verificar se uma alocação é de um comprimento de índice válido no livro-código de pulso e para reduzir uma alocação inválida ao comprimento de índice válido mais elevado que seja menor que o da alocação inválida.
[0091] Considera-se também a possibilidade de utilizar o método M100 para um caso que utilize tanto a VQ convencional quanto a VQ de codificação de pulsos (por exemplo, no qual alguns do conjunto de vetores serão codificados com a utilização de um esquema de VQ convencional, e ao contrário pelo menos um dos vetores será codificado com a utilização de um esquema de codificação de pulsos).
[0092] A Figura 10A mostra um diagrama em blocos de uma implementação T290 da tarefa T280 que inclui as implementações TA320, TA510 e TA610 das tarefas TA300, TA500 e TA600, respectivamente. Neste exemplo, os vetores de entrada são dispostos de modo que a última das m subbandas sob alocação (na convenção de indexação baseada em zero utilizada no pseudo-código, a sub-banda com o índice m-1) deve ser codificada com a utilização de um esquema de codificação de pulsos (por exemplo, codificação de pulsos fatorial ou codificação de pulsos combinatória), enquanto as primeiras (m-1) sub-bandas sejam codificadas com a utilização de VQ convencional. Para as sub-bandas a serem codificadas com a utilização de VQ convencional (por exemplo, não por pulsos), as alocações de bits são calculadas de acordo com a restrição de inteiro como descrita acima. Para a sub-banda a ser codificada por pulsos, a alocação de bits é calculada de acordo com uma restrição de inteiro ao número máximo de pulsos a serem codificados. Em um exemplo de aplicação de tal esquema, um conjunto selecionado de sub-bandas perceptivamente significativas é codificado com a utilização de VQ convencional, e o residual correspondente (por exemplo, uma concatenação das amostras não-selecionadas, ou a diferença entre o quadro original e as sub-bandas selecionadas codificadas) é codificado com a utilização de codificação de pulsos. Deve ficar entendido que, embora a tarefa T280 seja descrita com referência à codificação de pulsos de um vetor, a tarefa T280 pode ser também implementada na codificação de pulsos de múltiplos vetores (por exemplo, uma pluralidade de sub-vetores de um residual, tal como mostrado na Figura 3).
[0093] A tarefa TA320 pode ser implementada para impor limites superiores e/ou inferiores às alocações de bits iniciais, como descrito acima com referência às tarefas TA300 e TA305. Neste caso, a sub-banda a ser codificada por pulsos é excluída do teste de sobre- e/ou sub-alocações. A tarefa TA320 pode ser também implementada para excluir esta sub-banda da realocação efetuada após cada correção.
[0094] A tarefa TA510 impõe uma restrição de inteiro às alocações de bits Bm para as sub-bandas de VQ convencional ao truncar cada alocação Bm para o maior inteiro não maior que Bm. A tarefa TA510 também reduz a alocação de bits inicial Bm para a sub-banda a ser codificada por pulsos, quando apropriado, ao aplicar uma restrição de inteiro ao número máximo de pulsos a serem codificados. A tarefa TA510 pode ser configurada para aplicar esta restrição de inteiro de codificação de pulsos ao calcular o número máximo de pulsos que podem ser codificados com a alocação de bits inicial Bm, dado o comprimento do vetor de sub-banda a ser codificado por pulsos, e então substituir a alocação de bits inicial Bm pelo número real de bits necessários para codificar este número máximo de pulsos para tal comprimento de vetor.
[0095] A tarefa TA510 também atualiza o valor de Bav de acordo com uma expressão tal como B — ∑m=\Bm. A tarefa TA510 pode ser configurada para determinar se Bav é pelo menos tão grande quanto o número de bits necessários para aumentar o número máximo de pulsos na quantização por codificação de pulsos por um, e para ajustar a alocação de bits de codificação de pulsos e, por conseguinte, Bav. A tarefa TA510 pode ser também configurada para armazenar o resíduo truncado para cada vetor de sub-banda a ser codificado com a utilização de VQ convencional em um elemento correspondente de uma matriz de erros ΔB.
[0096] A tarefa TA610 distribui os bits Bav restantes. A tarefa TA610 pode ser configurada para distribuir os bits restantes para os vetores de sub-banda a serem codificados com a utilização de VQ convencional que correspondem aos valores mais elevados na matriz de erros ΔB. A tarefa TA610 pode ser também configurada para utilizar quaisquer bits restantes para aumentar a alocação de bits se possível para a sub-banda a ser codificada por pulsos, para o caso no qual todas as alocações de bits de VQ convencional estão em Bmax.
[0097] A listagem de pseudo-códigos no Apêndice B descreve uma implementação específica da tarefa T280 que inclui um função de ajuda encontrar_pulsos_fpc. Para um dado comprimento de vetor e limite de alocação de bits, esta função retorna o número máximo de pulsos que podem ser codificados, o número de bits necessários para codificar esse número de pulsos, e o número de bits adicionais que seriam necessários se o número máximo de pulsos fosse incrementado.
[0098] A Figura 10B mostra um fluxograma para uma implementação T295 da tarefa de alocação dinâmica T290 que inclui também uma ocorrência da tarefa TA310.
[0099] Um sinal esparso é frequentemente fácil de codificar porque alguns parâmetros (ou coeficientes) contêm a maioria das informações do sinal. Na codificação de um sinal com ambos os componentes esparsos e não- esparsos, pode ser desejável atribuir mais bits para codificar os componentes não-esparsos do que os componentes esparsos. Pode ser desejável enfatizar os componentes não- esparsos de um sinal para aperfeiçoar o desempenho de codificação destes componentes. Tal abordagem é focalizada na medida de distribuição de energia dentro do vetor (por exemplo, uma medida de esparsidade) para aperfeiçoar o desempenho de codificação para uma classe de sinal específica comparada com outras, o que pode ajudar a assegurar que sinais não-esparsos sejam bem representados e a intensificar o desempenho de codificação total.
[00100] Um sinal que tem mais energia pode ter mais bits para codificar. Um sinal que seja menos esparso pode igualmente ter mais bits para codificar do que um sinal que tem a mesma energia, mas é mais esparso. Um sinal que é muito esparso (por exemplo, de apenas um único pulso) é tipicamente muito fácil de codificar, enquanto um sinal que é bem distribuído (por exemplo, muito à semelhança de ruído) é tipicamente mais difícil de codificar, mesmo se os dois sinais tiverem a mesma energia. Pode ser desejável configurar uma operação de alocação dinâmica para dar conta do efeito das esparsidades relativas de sub-bandas em suas respectivas dificuldades de codificação relativas. Por exemplo, tal operação de alocação dinâmica pode ser configurada para ponderar a alocação para um sinal menos esparso mais pesadamente do que a alocação para um sinal com a mesma energia que seja mais esparso.
[00101] Em um exemplo aplicado a uma codificação orientada por modelo, a concentração da energia em uma sub-banda indica que o modelo se encaixa bem no sinal de entrada, de modo que uma boa qualidade de codificação pode ser esperada de uma alocação de bits baixa. Para a codificação baseada no modelo harmônico aqui descrito e como aplicada a uma banda alta, tal caso pode surgir com um sinal musical de um único instrumento. Tal sinal pode ser referido como “esparso”. Alternativamente, uma distribuição plana da energia pode indicar que o modelo não capta a estrutura do sinal também, de modo que pode ser desejável utilizar uma alocação de bits mais elevada para manter a qualidade perceptiva desejada. Tal sinal pode ser referido como “não-esparso”.
[00102] A Figura 11A mostra um fluxograma para uma implementação T225 da tarefa de alocação dinâmica T220 que inclui uma sub-tarefa TB100 e uma implementação TA215 da tarefa de cálculo de alocação TA210. Para cada um da pluralidade de vetores, a tarefa TB100 calcula um valor correspondente de uma medida de distribuição de energia dentro do vetor (isto é, um fator de esparsidade). A tarefa TB100 pode ser configurada para calcular o fator de esparsidade com base na relação entre a energia total da sub-banda e a energia total de um sub-conjunto dos coeficientes da sub-banda. Em um exemplo, o sub-conjunto é o maior (isto é, de energia máxima) coeficiente LC da subbanda (por exemplo, como mostrado na Figura 11B). Exemplos de valores para LC incluem 5, 10, 15 e 20 (cinco, sete, dez, quinze ou vinte por cento do número total de coeficientes na sub-banda). Neste caso, pode-se entender que a relação entre estes valores [como, por exemplo, (energia do sub-conjunto)/(energia de sub-banda total)] indica o grau no qual a energia da sub-banda está concentrada ou distribuída. De maneira semelhante, a tarefa TB100 pode ser configurada para calcular o fator de esparsidade com base no número dos maiores coeficientes da sub-banda que é suficiente para atingir a soma de energia que é uma parte específica (por exemplo, 5, 10, 12, 15, 20, 25 ou 30 por cento) da energia de sub-banda total. A tarefa TB100 pode incluir ordenar as energias dos coeficientes da sub-banda.
[00103] A tarefa TA215 calcula as alocações de bits para os vetores com base nos fatores de ganho e esparsidade correspondentes. A tarefa TA215 pode ser implementada para dividir a alocação de bits disponível total entre as sub-bandas na proporção para os valores dos seus fatores de esparsidade correspondentes, de modo que mais bits são alocados para a sub-banda ou sub-bandas menos concentradas.
Figure img0001
Figure img0002
Em um exemplo, a tarefa TA215 é configurada para mapear fatores de esparsidade que são menores que um valor limite sL para um, para mapear fatores de esparsidade que são maiores que um valor limite sH para um valor R que é menor que um (por exemplo, R = 0,7) e para mapear linearmente fatores de esparsidade de sL a sH na faixa de 1 a R. Em tal caso, a tarefa TA215 pode ser implementada para calcular a alocação de bits Bm para cada vetor m como o exemplares para cada um dos fatores a e b incluem 0,5. Para o caso no qual os vetores m são vetores de norma unitária (por exemplo, vetores de forma), a energia Em de cada vetor na tarefa TA210 é o fator de ganho correspondente.
[00104] Observa-se expressamente que qualquer uma das ocorrências da tarefa TA210 aqui descritas pode ser implementada como uma ocorrência da tarefa TA215 (por exemplo, com uma ocorrência correspondente da tarefa de cálculo de fatores de esparsidade TB100). Um codificador que execute tal tarefa de alocação dinâmica pode ser configurado para transmitir uma indicação dos fatores de esparsidade e ganho, de modo que o decodificador possa derivar a alocação de bits destes valores. Em outro exemplo, uma implementação da tarefa TA210 aqui descrita pode ser configurada para calcular as alocações de bits com base nas informações de uma operação LPC (por exemplo, em adição a ou alternativamente à dimensão e/ou esparsidade do vetor). Por exemplo, tal implementação da tarefa TA210 pode ser configurada para produzir as alocações de bits de acordo com um fator de ponderação que é proporcional à inclinação espectral (isto é, o primeiro coeficiente de reflexão). Em tal caso, as alocações para vetores correspondendo às bandas de baixa frequência podem ser ponderadas de maneira mais ou menos abundante com base na inclinação espectral para o quadro.
[00105] Alternativamente ou adicionalmente, um fator de esparsidade aqui descrito pode ser utilizado para selecionar ou caso contrário calcular o valor de um fator de modulação para a sub-banda correspondente. O fator de modulação pode ser então utilizado para modular (por exemplo, escalonar) os coeficientes da sub-banda. Em um exemplo específico, tal esquema de modulação baseado em esparsidade é aplicado à codificação da banda alta.
[00106] Em um caso de codificação de ganho de malha aberta, pode ser desejável configurar o decodificador (por exemplo, o dequantizador de ganho) para multiplicar o ganho de malha aberta por um fator y, que é uma função do número de bits que foi utilizado para codificar a forma (isto é, os comprimentos dos índices dos vetores de livro- código de forma). Quando muito poucos bits são utilizados para quantizar a forma, é provável que o quantizador de forma produza um erro grande, de modo que os vetores S e S podem não casar muito bem, de modo que pode ser desejável no decodificador reduzir o ganho para refletir esse erro. O fator de correção y representa este erro apenas no sentido médio: este depende apenas do livro-código (especificamente, do número de bits nos livros-código) e não de qualquer detalhe específico do vetor de entrada x. O codec pode ser configurado de modo que o fator de correção y não seja transmitido, mas, em vez disso, seja apenas lido de uma tabela pelo decodificador de acordo com o número de bits que foram utilizados para quantizar o vetor S.
[00107] Este fator de correção y indica, com base na taxa de bits, a proximidade na qual pode-esperar que o vetor médio S se aproxime da forma verdadeira S. À medida que a taxa de bits subir, o erro médio diminuirá e o valor do fator de correção y se aproximará de um e, à medida que a taxa de bits baixar muito, a correlação entre S e o vetor S (por exemplo, o produto interno do vetor ST e S) diminuirá, e o valor do fator de correção y diminuirá também. Embora possa ser desejável obter o mesmo efeito como no ganho de malha aberta (por exemplo, no sentido adaptativo de entrada por entrada real), no caso de malha aberta a correção está tipicamente disponível apenas no sentido médio.
[00108] Alternativamente, uma classificação de uma interpolação entre os métodos de ganho de malha aberta e de malha fechada pode ser executada. Tal abordagem aumenta a expressão de ganho de malha aberta com um fator de correção dinâmica que é dependente da qualidade da quantização de forma específica, e não apenas do erro de quantização médio baseado no comprimento. Tal fator pode ser calculado com base no produto escalar das formas quantizadas e não quantizadas. Pode ser desejável codificar o valor deste fator de correção de maneira muito grosseira (como, por exemplo, um índice em um livro-código de quatro ou oito entradas), de modo que este possa ser transmitido em muitos poucos bits.
[00109] A Figura 12A mostra um diagrama em blocos de um aparelho para alocação de bits MF100 de acordo com uma configuração geral. O aparelho MF100 inclui mecanismos FA100 para calcular, para cada um de uma pluralidade de vetores, um fator de ganho correspondente de uma pluralidade de fatores de ganho (por exemplo, como aqui descrito com referência às implementações da tarefa TA100). O aparelho MF100 também inclui mecanismos FA210 para calcular, para cada um da pluralidade de vetores, uma alocação de bits correspondente que é baseada no fator de ganho (por exemplo, como aqui descrito com referência às implementações da tarefa TA210). O aparelho MF100 inclui também mecanismos FA300 para determinar, para pelo menos um da pluralidade de vetores, que a alocação de bits correspondente não é maior que um valor de alocação mínimo (por exemplo, como aqui descrito com referência às implementações da tarefa TA300). O aparelho MF100 inclui também mecanismos FB300 para alterar a alocação de bits correspondente, em resposta à determinação, para cada de pelo menos um vetor (por exemplo, como aqui descrito com referência às implementações da tarefa TA300).
[00110] A Figura 12B mostra um diagrama em blocos de um aparelho para alocação de bits A100 de acordo com uma configuração geral que inclui um calculador de fatores de ganho 100, um calculador de alocação de bit 210, um comparador 300, e um módulo de ajuste de alocação 300B. O calculador de fatores de ganho 100 é configurado para calcular, para cada um de uma pluralidade de vetores, um fator de ganho correspondente de uma pluralidade de fatores de ganho (por exemplo, como aqui descrito com referência às implementações da tarefa TA100). O calculador de alocação de bit 210 é configurado para calcular, para cada um da pluralidade de vetores, uma alocação de bit correspondente que é baseada no fator de ganho (por exemplo, como aqui descrito com referência às implementações da tarefa TA210). O comparador 300 é configurado para determinar, para pelo menos um da pluralidade de vetores, que a alocação de bit correspondente não é maior que um valor de alocação mínimo (por exemplo, como aqui descrito com referência às implementações da tarefa TA300). O módulo de ajuste de alocação 300B é configurado para alterar a alocação de bit correspondente, em resposta à determinação, para cada um de pelo menos um vetor (por exemplo, como aqui descrito com referência às implementações da tarefa TA300). O aparelho A100 pode ser também implementado para incluir um divisor de quadros configurado para dividir um quadro em uma pluralidade de sub-vetores (por exemplo, como aqui descrito com referência às implementações da tarefa T100).
[00111] A Figura 13A mostra um diagrama em blocos de um codificador E100 de acordo com uma configuração geral que inclui uma ocorrência do aparelho A100 e um codificador de sub-banda SE10. O codificador de sub-banda SE10 é configurado para quantizar a pluralidade de vetores (ou uma pluralidade de vetores baseados nestes, tal como uma pluralidade correspondente de vetores de forma) de acordo com as alocações correspondentes calculadas pelo aparelho A100. Por exemplo, o codificador de sub-banda SE10 pode ser configurado para executar uma operação de codificação VQ convencional e/ou a operação VQ de codificação por pulsos aqui descrita. A Figura 13D mostra um diagrama em blocos de um decodificador D100 correspondente que inclui uma ocorrência do aparelho A100 e um decodificador de sub-banda SD10, que é configurado para dequantizar a pluralidade de vetores (ou uma pluralidade de vetores baseados nestes, tal como uma pluralidade de vetores de forma correspondente) de acordo com as alocações correspondentes calculadas pelo aparelho A100. A Figura 13B mostra um diagrama em blocos de uma implementação E110 do codificador E100 que inclui um empacotador de bits BP10 configurado para empacotar as sub-bandas codificadas em quadros que estejam em conformidade com um ou mais codecs aqui descritos (por exemplo, EVRC, AMR-WB). A Figura 13E mostra um diagrama em blocos de uma implementação correspondente D110 do decodificador D100 que inclui um desempacotador de bits U10 correspondente. A Figura 13C mostra um diagrama em blocos de uma implementação E120 do codificador E110 que inclui as ocorrências A100a e A100b do aparelho A100 e um codificador residual SE20. Neste caso, o codificador de sub-banda SE10 é disposto para quantizar uma primeira pluralidade de vetores (ou uma pluralidade de vetores baseados nestes, tal como uma pluralidade correspondente de vetores de forma) de acordo com as alocações correspondentes calculadas pelo aparelho A100a, e o codificador residual SE20 é configurado para quantizar uma segunda pluralidade de vetores (ou uma pluralidade de vetores baseados nestes, tal como uma pluralidade correspondente de vetores de forma) de acordo com as alocações correspondentes calculadas pelo aparelho A100b. A Figura 13F mostra um diagrama em blocos de uma implementação D120 correspondente do decodificador D100 que inclui um decodificador residual SD20 correspondente, que é configurado para dequantizar a segunda pluralidade de vetores (ou uma pluralidade de vetores baseados nestes, tal como uma pluralidade correspondente de vetores forma) de acordo com as alocações correspondentes calculadas pelo aparelho A100b.
[00112] As Figuras 14A-E mostram uma faixa de aplicativos para o codificador E100 aqui descrito. A Figura 14A mostra um diagrama em blocos de um percurso de processamento de áudio que inclui um módulo de transformada MM1 (por exemplo, um módulo de transformada rápida de Fourier ou MDCT) e uma ocorrência do codificador E100 que é disposto para receber os quadros de áudio SA10 como amostras no domínio de transformada (isto é, como coeficientes no domínio de transformada) e para produzir quadros codificados SE10 correspondentes.
[00113] A Figura 14B mostra um diagrama em blocos de uma implementação do percurso da Figura 14A, na qual o módulo de transformada MM1 é implementado utilizando um módulo de transformada MDCT. O módulo DCT modificado MM10 executa uma operação MDCT em cada quadro de áudio para produzir um conjunto de coeficientes no domínio MDCT.
[00114] A Figura 14C mostra um diagrama em blocos de uma implementação do percurso da Figura 14A que inclui um módulo de análise de codificação de predição linear AM10. O módulo de análise de codificação de predição linear (LPC) AM10 executa uma operação de análise LPC no quadro classificado de modo a produzir um conjunto de parâmetros LPC (por exemplo, coeficientes de filtro) e um sinal residual LPC. Em um exemplo, o módulo de análise LPC AM10 é configurado para efetuar uma análise LPC de décima ordem em um quadro que tem uma largura de banda de zero a 4000 Hz. Em outro exemplo, o módulo de análise LPC AM10 é configurado para efetuar uma análise LPC de sexta ordem em um quadro que tem uma faixa de freqüências de largura de banda de 3500 a 7000 Hz. O módulo DCT modificada MM10 executa uma operação MDCT no sinal residual LPC de modo a produzir um conjunto de coeficientes no domínio de transformada. Um percurso de decodificação correspondente pode ser configurado para decodificar quadros codificados SE10 e para executar uma transformada MDCT inversa nos quadros decodificados para obter um sinal de excitação para entrada em um filtro de síntese LPC.
[00115] A Figura 14D mostra um diagrama em blocos de um percurso de processamento que inclui um classificador de sinal SC10. O classificador de sinal SC10 recebe quadros SA10 de um sinal de áudio e classifica cada quadro em uma de pelo menos duas categorias. Por exemplo, o classificador de sinal SC10 pode ser configurado para classificar um quadro SA10 como fala ou música, de modo que, se o quadro for classificado como música, então o resto do percurso mostrado na Figura 14D é utilizado para codificá-lo e, se o quadro for classificado como fala, então um percurso de processamento diferente é utilizado para codificá-lo. Tal classificação pode incluir detecção de atividade de sinal, detecção de ruído, detecção de periodicidade, detecção de esparsidade no domínio do tempo e/ou detecção de esparsidade no domínio da frequência.
[00116] A Figura 15A mostra um diagrama em blocos de um método MZ100 de classificação de sinal que pode ser executado pelo classificador de sinal SC10 (por exemplo, em cada um dos quadros de áudio SA10). O método MC100 inclui as tarefas TZ100, TZ200, TZ300, TZ400, TZ500 e TZ600. A tarefa TZ100 quantiza o nível de atividade no sinal. Se o nível de atividade estiver abaixo de um limite, a tarefa TZ200 codifica o sinal como silêncio (por exemplo, utilizando um esquema de predição linear excitado por ruído de baixa taxa de bits (NELP) e/ou um esquema de transmissão descontínua (DTX)). Se o nível de atividade for suficientemente elevado (por exemplo, acima do limite), a tarefa TZ300 quantiza o grau de periodicidade do sinal. Se a tarefa TZ300 determinar que o sinal é não periódico, a tarefa TZ400 codifica o sinal utilizando um esquema NELP. Se a tarefa TZ300 determinar que o sinal é periódico, a tarefa TZ500 quantiza o grau de esparsidade do sinal no domínio do tempo e/ou da frequência. Se a tarefa TZ500 determinar que o sinal é esparso no domínio do tempo, a tarefa TZ600 codifica o sinal utilizando um esquema de predição linear excitada por código (CELP), tal como CELP relaxada (RCELP) ou CELP algébrica (ACELP). Se a tarefa TZ500 determinar que o sinal é esparso no domínio da frequência, a tarefa TZ700 codifica o sinal utilizando um modelo harmônico (por exemplo, passando o sinal para o resto do percurso de processamento da Figura 14D).
[00117] Como mostrado na Figura 14D, o percurso de processamento pode incluir um módulo de depuração perceptual PM10, que é configurado para simplificar o sinal no domínio MDCT (por exemplo, para reduzir o número de coeficientes no domínio de transformada a serem codificados) ao aplicar critérios psico-acústicos, tais como mascaramento de tempo, mascaramento de frequência e/ou limite de escuta. O módulo PM10 pode ser implementado para computar os valores de tais critérios ao aplicar um modelo perceptual para os quadros de áudio originais SA10. Neste exemplo, o codificador E100 é disposto para codificar os quadros depurados para produzir quadros codificados SE10 correspondentes.
[00118] A Figura 14E mostra um diagrama em blocos de uma implementação de ambos os percursos das Figuras 14C e 14D, na qual o codificador E100 é disposto para codificar o residual LPC.
[00119] A Figura 15B mostra um diagrama em blocos de um dispositivo de comunicação D10 que inclui uma implementação do aparelho A100. O dispositivo D10 inclui um chip ou conjunto de chips CS10 (por exemplo, um conjunto de chips de modem de estação móvel (MSM)) que incorpora os elementos do aparelho A100 (ou MF100) e possivelmente do aparelho D100 (ou DF100). O chip/conjunto de chips CS10 pode incluir um ou mais processadores, que podem ser configurados para executar a parte de software e/ou firmware do aparelho A100 ou MF100 (por exemplo, instruções).
[00120] O chip/conjunto de chips CS10 inclui um receptor, que é configurado para receber um sinal de comunicação de radiofrequência (RF) e para decodificar e reproduzir um sinal de áudio codificado dentro do sinal RF, e um transmissor, que é configurado para transmitir um sinal de comunicação RF que descreve um sinal de áudio codificado (por exemplo, incluindo índices de livro-código como produzidos pelo aparelho A100) que é baseado em um sinal produzido pelo microfone MV10. Tal dispositivo pode ser configurado para transmitir e receber dados de comunicação de voz de forma sem fio por meio de um ou mais esquemas de codificação e decodificação (também chamados “codecs”). Exemplos de tais codecs incluem o Codec de Taxa Variável Aperfeiçoado, como descrito no documento C.S0014- V, v1.0 do 2° Projeto de Parceiros de Terceira Geração (3GPP2), intitulado “Codec de Taxa Variável Aperfeiçoado, Opções de Serviço de Fala 3, 68 e 70 para Sistemas Digitais de Banda Larga com Espalhamento Espectral”, fevereiro de 2007 (disponível on-line como www-dot-3gpp-dot-org); o codec de fala Vocoder de Modo Selecionável, como descrito no documento 3GPP2 C.S0030-0, v3.0, intitulado “Opção de Serviço de Vocoder de Modo Selecionável (SMV) para Sistemas de Comunicação de Banda Larga com Espalhamento Espectral”, janeiro de 2004 (disponível on-line como www-dot-3gpp-dot- org); o codec de fala de Múltiplas-Taxas Adaptivo (AMR), como descrito no documento ETS1 TS 126 092 V6.0.0 (Instituto Europeu de Padrões de Telecomunicação (ETSI), Sophia Antipolis Cedex, FR, dezembro de 2004); e o codec de fala de Banda Larga AMR, como descrito no documento ETSI TS 126 192 V6.0.0 (ETSI, dezembro de 2004). Por exemplo, o chip ou conjunto de chips CS10 pode ser configurado para produzir os quadros codificados de modo a estarem em conformidade com um ou mais codecs.
[00121] O dispositivo D10 é configurado para receber e transmitir os sinais de comunicação RF por meio da antena C30. O dispositivo D10 pode incluir também um diplexador e um ou mais amplificadores de potência no percurso até a antena C30. O chip/conjunto de chips CS10 é também configurado para receber entrada de usuário por meio do teclado C10 e para exibir informações por meio do monitor C20. Neste exemplo, o dispositivo D10 inclui também uma ou mais antenas C40 para suportar serviços de localização do Sistema Global de Posicionamento (GPS) e/ou comunicações de curto alcance com um dispositivo externo, tal como um fone de ouvido sem fio (por exemplo, Bluetooth™) . Em outro exemplo, tal dispositivo de comunicação é o próprio fone de ouvido Bluetooth™ e é destituído do teclado C10, do monitor C20 e da antena C30.
[00122] O dispositivo de comunicação D10 pode ser incorporado em diversos dispositivos de comunicação, incluindo telefones inteligentes e computadores do tipo laptop e tablet. A Figura 16 mostra as vistas frontal, traseira e lateral de um aparelho de telefone H100 (por exemplo, um telefone inteligente), que tem dois microfones de voz MV10-1 e MV10-3 dispostos na superfície frontal, um microfone de voz MV10-2 disposto na superfície traseira, um microfone de erros ME10 localizado no canto superior da superfície frontal, e um microfone de referência de ruído MR10 localizado sobre a superfície traseira. Um alto- falante LS10 é disposto no centro superior da superfície frontal perto do microfone de erros ME10, e dois outros alto-falantes LS20L, LS20R são também apresentados (por exemplo, para aplicações de telefone com alto-falante). A distância máxima entre os microfones de tal aparelho de telefone é tipicamente de cerca de dez ou doze centímetros.
[00123] Em um codificador de múltiplas bandas (por exemplo, como mostrado na Figura 17), pode ser desejável efetuar GSVQ de ganho de malha fechada em banda baixa (por exemplo, em um codificador de modo dependente ou de modo harmônico, como aqui descrito no pedido), e efetuar GSVQ de ganho de malha aberta com alocação dinâmica de bits baseada em ganho (por exemplo, de acordo com uma implementação da tarefa T210) entre as formas na banda alta. Neste exemplo, o quadro de banda baixa é o residual de uma operação de análise LPC de décima ordem em banda baixa como produzido pelo banco de filtros de análise de um quadro de entrada de frequência de áudio, e o quadro de banda alta é o residual de uma operação de análise LPC de sexta ordem em banda alta como produzido pelo banco de filtros de análise do quadro de entrada de frequência de áudio. A Figura 18 mostra um fluxograma de um método correspondente de codificação em múltiplas bandas, no qual as alocações de bits para a uma ou mais das codificações indicadas (isto é, codificação de pulsos de espectro UB- MDCT, codificação GSVQ de sub-bandas harmônicas e/ou codificação de pulsos de resíduos) pode ser efetuada de acordo com uma implementação da tarefa T210.
[00124] Como discutido acima, um esquema de codificação em múltiplas bandas pode ser configurado de modo que cada uma da banda baixa e da banda alta seja codificada utilizando um modo de codificação independente ou um modo de codificação dependente (alternativamente, um harmônico). Para o caso no qual a banda baixa é codificada utilizando um modo de codificação independente (por exemplo, GSVQ aplicada a um conjunto de sub-bandas fixas), uma alocação dinâmica como descrita acima pode ser efetuada (por exemplo, de acordo com uma implementação da tarefa T210) para alocar uma alocação de bits total para o quadro (que pode ser fixa ou pode variar de quadro para quadro) entre a banda baixa e a banda alta de acordo com os ganhos correspondentes. Em tal caso, outra alocação dinâmica como descrita acima pode ser efetuada (por exemplo, de acordo com uma implementação da tarefa T210) para alocar a alocação de bits de banda baixa resultante entre as subbandas de banda baixa e/ou outra alocação dinâmica como descrita acima pode ser efetuada (por exemplo, de acordo com uma implementação da tarefa T210) para alocar a alocação de bits de banda alta resultante entre as subbandas de banda alta.
[00125] Para o caso no qual a banda baixa é codificada utilizando um modo de codificação dependente (alternativamente, um harmônico), pode ser desejável primeiro alocar bits da alocação de bits total para o quadro (que pode ser fixa ou pode variar de quadro para quadro) para as sub-bandas selecionadas pelo modo de codificação. Pode ser desejável utilizar informações do espectro LPC para a banda baixa para esta alocação. Em um exemplo, o espectro de inclinação LPC (por exemplo, como indicado pelo primeiro coeficiente de reflexão) é utilizado para determinar a sub-banda que tem a ponderação LPC mais elevada, e o número máximo de bits (por exemplo, dez bits) é alocado para essa sub-banda (por exemplo, para quantização de forma), com alocações mais baixas correspondentes sendo dadas às sub-bandas com ponderações LPC mais baixas. Uma alocação dinâmica como descrita acima, pode ser então efetuada (por exemplo, de acordo com uma implementação da tarefa T210) para alocar os bits restantes na alocação de quadros entre o residual de banda baixa e a banda alta. Em tal caso, outra alocação dinâmica como descrita acima pode ser efetuada (por exemplo, de acordo com uma implementação da tarefa T210) para alocar a alocação de bits em banda alta resultante entre as subbandas de banda alta.
[00126] Uma seleção de modo de codificação como mostrada na Figura 18 pode ser estendida a um caso de múltiplas bandas. Em um exemplo, cada uma da banda baixa e da banda alta é codificada utilizando um modo de codificação independente e um modo de codificação dependente (alternativamente, um modo de codificação independente e um modo de codificação harmônico), de modo que combinações de quatro modos diferentes sejam inicialmente consideradas para o quadro. Em seguida, para cada um dos modos de banda baixa, o melhor modo de banda alta correspondente é selecionado (por exemplo, de acordo com uma comparação entre as duas opções utilizando uma métrica perceptiva em banda alta). Das duas opções restantes (isto é, o modo independente de banda baixa com o melhor modo de banda alta correspondente, e o modo dependente (ou harmônico) de banda baixa com o melhor modo de banda alta correspondente), a seleção entre estas opções é feita com referência a uma métrica perceptiva que cobre tanto a banda baixa quanto a banda alta. Em um exemplo de tal caso de múltiplas bandas, o modo independente de banda baixa utiliza GSVQ para codificar um conjunto de sub-bandas fixas, e o modo independente de banda alta utiliza um esquema de codificação de pulsos (por exemplo, codificação de pulsos fatorial) para codificar o sinal de banda alta.
[00127] A Figura 19 mostra um diagrama em blocos de um codificador E200 de acordo com uma configuração geral, que é configurado para receber quadros de áudio como amostras no domínio da MDCT (isto é, como coeficientes no domínio de transformada). O codificador E200 inclui um codificador de modo independente IM10 que é configurado para codificar um quadro de um sinal no domínio da MDCT SM10 de acordo com um modo de codificação independente para produzir um quadro codificado de modo independente SI10. O modo de codificação independente agrupa os coeficientes no domínio de transformada em subbandas de acordo com uma divisão de sub-bandas predeterminada (isto é, fixa) e codifica as sub-bandas utilizando um esquema de quantização de vetores (VQ). Exemplos de esquemas de codificação para o modo de codificação independente incluem codificação de pulsos (por exemplo, codificação de pulsos fatorial e codificação de pulsos combinatória). O codificador E200 pode ser configurado de acordo com os mesmos princípios para receber quadros de áudio como amostras em outro domínio de transformada, tal como o domínio da transformada rápida de Fourier (FFT).
[00128] O codificador E200 inclui também um codificador de modo harmônico HM10 (alternativamente, um codificador de modo dependente) que é configurado para codificar o quadro do sinal no domínio da MDCT SM10 de acordo com um modelo harmônico de modo a produzir um quadro codificado no modo harmônico SD10. Ou um ou o outro dos codificadores IM10 e HM10 pode ser implementado para incluir uma ocorrência correspondente do aparelho A100, de modo que o quadro codificado correspondente seja produzido de acordo com um esquema de alocação dinâmica aqui descrito. O codificador E200 inclui também um seletor de modo de codificação SEL10 que é configurado para utilizar uma medida de distorção para selecionar um entre o quadro codificado no modo independente SI10 e o quadro codificado no modo harmônico SD10 como o quadro codificado SE10. O codificador E100 mostrado nas Figuras 14A-14E pode ser realizado como uma implementação do codificador E200. O codificador E200 pode ser também utilizado para codificar um residual LPC de banda baixa (por exemplo, 0-4 kHz) no domínio da MDCT e/ou para codificar um residual LPC de banda alta (por exemplo, 3,5 - 7 kHz) no domínio da MDCT em um codec de múltiplas bandas, como mostrado na Figura 17.
[00129] Os métodos e aparelho aqui descritos podem ser aplicados geralmente em qualquer aplicativo de transceptor e/ou de detecção de áudio, especialmente em ocorrências móveis ou por outro lado portáteis de tais aplicativos. Por exemplo, a faixa de configurações aqui descrita inclui dispositivos de comunicação que residem em um sistema de comunicação de telefonia sem fio configurado para utilizar uma interface aérea de acesso múltiplo por divisão de código (CDMA). No entanto, os versados na técnica entenderiam que um método e um aparelho que têm características aqui descritas podem residir em qualquer um dos diversos sistemas de comunicação que utilizam uma ampla faixa de tecnologias conhecidas dos versados na técnica, tais como sistemas que utilizam Voz sobre IP (VoIP) através de canais de transmissão cabeados e/ou sem fio (por exemplo, CDMA, TDMA, FDMA e/ou TD-SCDMA).
[00130] É expressamente considerada e aqui descrita que dispositivos de comunicação aqui descritos podem ser adaptados para utilização em redes que são comutadas por pacote (por exemplo, redes cabeadas e/ou sem fio dispostas para portar transmissões de áudio de acordo com protocolos tais como o VoIP) e/ou comutadas por circuito. É também expressamente considerada e aqui descrita que dispositivos de comunicação aqui descritos podem ser adaptados para uso em sistemas de codificação de banda estreita (por exemplo, sistemas que codificam uma faixa de frequência de áudio de cerca de quatro ou cinco quilohertz) e/ou para utilização em sistemas de codificação de banda larga (por exemplo, sistemas que codificam frequências de áudio mais elevadas que cinco quilohertz), incluindo sistemas de codificação de banda larga de banda inteira e sistemas de codificação de banda larga de banda dividida.
[00131] A apresentação das configurações descritas é provida para permitir que qualquer pessoa versada na técnica faça ou utilize os métodos e outras estruturas aqui descritas. Os fluxogramas, diagramas em blocos, e outras estruturas mostradas e descritas aqui são apenas exemplos, e outras variantes destas estruturas estão também dentro do escopo da descrição. Várias modificações nestas configurações são possíveis, e os princípios genéricos aqui apresentados podem ser aplicados a outras configurações também. Assim, a presente descrição não pretende estar limitada às configurações mostradas acima, mas, em vez disso, deve receber o mais amplo alcance compatível com os princípios e características novas aqui descritas em qualquer seção, incluindo nas reivindicações apensas como depositadas, que formam uma parte da descrição original.
[00132] Os versados na técnica entenderão que as informações e os sinais podem ser representados utilizando qualquer de uma variedade de tecnologias e técnicas diferentes. Por exemplo, dados, instruções, comandos, informações, sinais, bits, e símbolos referidos ao longo de toda a descrição acima podem ser representados por tensões, correntes, ondas eletromagnéticas, campos ou partículas magnéticas, campos ou partículas ópticas ou qualquer combinação destes.
[00133] Requisitos de projeto importantes para implementação de uma configuração como descrita aqui podem incluir minimizar o retardo de processamento e/ou a complexidade computacional (tipicamente medidos em milhões de instruções por segundo ou MIPS), especialmente em aplicativos intensivos em computação, como, por exemplo, a reprodução de informações de áudio ou audiovisuais compactadas (por exemplo, um arquivo ou fluxo codificado de acordo com um formato de compactação, tal como um dos exemplos aqui identificados) ou aplicativos para comunicações em banda larga (por exemplo, comunicações de voz a taxas de amostragem mais elevadas que oito quilohertz, tais como 12, 16, 44,1, 48 ou 192 kHz).
[00134] Um aparelho como aqui descrito (por exemplo, o aparelho A100 e MF100) pode ser implementado em qualquer combinação de hardware com software e/ou com firmware, que seja considerada adequada para o aplicativo pretendido. Por exemplo, os elementos de tal aparelho podem ser fabricados como dispositivos eletrônicos e/ou ópticos que residem, por exemplo, no mesmo chip ou entre dois ou mais chips de um conjunto de chips. Um exemplo de tal dispositivo é um arranjo fixo ou programável de elementos lógicos, tais como transistores ou portas lógicas, e qualquer um destes elementos pode ser implementado como um ou mais de tais arranjos. Quaisquer dois ou mais, ou mesmo todos, destes elementos podem ser implementados dentro do mesmo arranjo ou arranjos. Tal arranjo ou arranjos podem ser implementados dentro de um ou mais chips (por exemplo, dentro de um conjunto de chips que inclui dois ou mais chips).
[00135] Um ou mais elementos das diversas implementações do aparelho aqui descrito (por exemplo, o aparelho A100 e MF100) podem ser implementados no todo ou em parte como um ou mais conjuntos de instruções dispostos para serem executados em um ou mais arranjos fixos ou programáveis de elementos lógicos, tais como microprocessadores, processadores embutidos, núcleos IP, processadores de sinal digital, FPGAs (arranjos de portas programáveis em campo), ASSPs (produtos padrão de aplicação específica) e ASICs (circuitos integrados de aplicação específica). Qualquer um dos vários elementos de uma implementação de um aparelho como aqui descrito pode ser também incorporado como um ou mais computadores (por exemplo, máquinas incluindo um ou mais arranjos programados para executar um ou mais conjuntos ou sequências de instruções, também chamados “processadores”) e quaisquer dois ou mais, ou mesmo todos, destes elementos podem ser implementados dentro do mesmo computador ou computadores.
[00136] Um processador ou outro mecanismo para processamento como aqui descrito pode ser fabricado como um ou mais dispositivos eletrônicos e/ou ópticos que residem, por exemplo, no mesmo chip ou entre dois ou mais chips de um conjunto de chips. Um exemplo de tal dispositivo é um arranjo fixo ou programável de elementos lógicos, tais como transistores ou portas lógicas, e quaisquer destes elementos podem ser implementados como um ou mais de tais arranjos. Tal arranjo ou arranjos podem ser implementados dentro de um ou mais chips (por exemplo, dentro de um conjunto de chips incluindo dois ou mais chips). Exemplos de tais arranjos incluem arranjos fixos ou programáveis de elementos lógicos, tais como microprocessadores, processadores embutidos, núcleos IP, DSPs, FPGAs, ASSPs e ASICs. Um processador ou outro mecanismo para processamento como aqui descrito pode ser também incorporado como um ou mais computadores (por exemplo, máquinas incluindo um ou mais arranjos programados para executar um ou mais conjuntos ou sequências de instruções) ou outros processadores. É possível que um processador como aqui descrito seja utilizado para executar tarefas ou executar outros conjuntos de instruções que não estão diretamente relacionados a um procedimento de uma implementação do método M100 ou MD100, tal como uma tarefa referente a outra operação de um dispositivo ou sistema no qual o processador é embutido (por exemplo, um dispositivo de detecção de áudio). É também possível que parte de um método como aqui descrito seja executada por um processador do dispositivo de detecção de áudio e que outra parte do método seja executada sob o controle de um ou mais outros processadores.
[00137] Os versados na técnica entenderão que os diversos módulos, blocos lógicos, circuitos ilustrativos, e testes e outras operações descritas em conexão com as configurações aqui descritas podem ser implementados como hardware eletrônico, software de computador, ou combinações de ambos. Tais módulos, blocos lógicos, circuitos, e operações podem ser implementados ou executados com um processador de propósito geral, um processador de sinal digital (DSP), um ASIC ou ASSP, um FPGA ou outro dispositivo lógico programável, porta lógica ou lógica de transistor, componentes de hardware discretos, ou qualquer combinação destes projetada para produzir a configuração como aqui descrita. Por exemplo, tal configuração pode ser implementada, pelo menos em parte, como um circuito conectado (hardwired), como uma configuração de circuito fabricada em um circuito integrado de aplicação específica, ou como um programa de firmware carregado em um armazenamento não-volátil ou um programa de software carregado de ou em um meio de armazenamento de dados, tal como um código legível por máquina, tal código sendo instruções executáveis por um arranjo de elementos lógicos, tais como um processador de propósito geral ou outra unidade de processamento de sinal digital. Um processador de propósito geral pode ser um microprocessador, mas alternativamente, o processador pode ser qualquer processador, controlador, microcontrolador ou máquina de estado convencional. Um processador pode ser também implementado como uma combinação de dispositivos de computação, como, por exemplo, uma combinação de DSP e microprocessador, uma pluralidade de microprocessadores, um ou mais microprocessadores em um conjunto com um núcleo DSP, ou qualquer outra configuração. Um módulo de software pode residir em um meio de armazenamento não-transitório, tal como uma RAM (memória de acesso aleatório), ROM (memória de leitura), RAM não-volátil (NVRAM), tal como RAM flash, ROM programável e apagável (EPROM), ROM programável e apagável eletricamente (EEPROM), registradores, disco rígido, disco removível, ou CD-ROM; ou qualquer outra forma de meio de armazenamento conhecida na técnica. Um meio de armazenamento exemplar é acoplado ao processador de modo que o processador possa ler informações do, e gravar informações no, meio de armazenamento. Alternativamente, o meio de armazenamento pode ser integrado com o processador. O processador e o meio de armazenamento podem residir em um ASIC. O ASIC pode residir em um terminal de usuário. Alternativamente, o processador e o meio de armazenamento podem residir como componentes discretos em um terminal de usuário.
[00138] Observa-se que os diversos métodos aqui descritos (por exemplo, implementações do método M100 ou outros métodos descritos com referência ao funcionamento dos diversos aparelhos aqui descritos) podem ser executados por um arranjo de elementos lógicos tal como um processador, e que os diversos elementos de um aparelho aqui descrito podem ser implementados como módulos projetados para execução em tal arranjo. Como aqui utilizado, o termo “módulo” ou “sub-módulo” pode referir-se a qualquer método, aparelho, dispositivo, unidade ou meio de armazenamento de dados legível por computador que incluem instruções de computador (por exemplo, expressões lógicas) na forma de software, hardware ou firmware. Deve ficar entendido que múltiplos módulos ou sistemas podem ser combinados em um módulo ou sistema, e um módulo ou sistema pode ser separado em múltiplos módulos ou sistemas para desempenhar as mesmas funções. Quando implementados em software ou outras instruções executáveis por computador, os elementos de um processo são essencialmente os segmentos de código para executar as tarefas relacionadas, como, por exemplo, com rotinas, programas, objetos, componentes, estruturas de dados, e semelhantes. O termo “software” deve ser entendido para incluir código-fonte, código de linguagem assembly, código de máquina, código binário, firmware, macrocódigo, microcódigo, qualquer um ou mais conjuntos ou sequências de instruções executáveis por um arranjo de elementos lógicos e qualquer combinação de tais exemplos. Os segmentos de programa ou código podem ser armazenados em um meio legível por processador ou transmitidos por um sinal de dados de computador incorporado em uma onda portadora através de um meio de transmissão ou enlace de comunicação.
[00139] As implementações dos métodos, esquemas e técnicas aqui descritos podem ser tangivelmente incorporadas (por exemplo, em características legíveis por computador tangíveis, de um ou mais meios de armazenamento legíveis por computador como listados aqui) como um ou mais conjuntos de instruções executáveis por uma máquina incluindo um arranjo de elementos lógicos (por exemplo, um processador, microprocessador, microcontrolador ou outra máquina de estado finita). O termo “meio legível por computador” pode incluir qualquer meio que possa armazenar ou transferir informações, incluindo meios de armazenamento voláteis, não-voláteis, removíveis e não-removíveis.
[00140] Exemplos de um meio legível por computador incluem um circuito eletrônico, um dispositivo de memória de semicondutor, uma ROM, uma memória flash, uma ROM apagável (EROM), um disquete ou outro armazenamento magnético, um CD-ROM/DVD ou outro armazenamento óptico, um disco rígido ou qualquer outro meio que possa ser utilizado para armazenar as informações desejadas, meio de fibra óptica, um enlace de frequência de rádio, ou qualquer outro meio que possa ser utilizado para portar as informações desejadas e possa ser acessado. O sinal de dados de computador pode incluir qualquer sinal que pode propagar através de um meio de transmissão como, por exemplo, canais de rede eletrônicos, fibras ópticas, ar, enlaces eletromagnéticos, RF, etc. Os segmentos de código podem ser baixados através das redes de computadores, tais como a Internet ou uma intranet. Seja como for, o escopo da presente descrição não deve ser interpretado como limitado por tais modalidades.
[00141] Cada uma das tarefas dos métodos aqui descritos pode ser incorporada diretamente em hardware, em um módulo de software executado por um processador, ou em uma combinação dos dois. Em uma aplicação típica de uma implementação de um método aqui descrito, um arranjo de elementos lógicos (por exemplo, portas lógicas) é configurado para executar uma, mais de uma, ou mesmo todas, das diversas tarefas do método. Uma ou mais (possivelmente todas) das tarefas podem ser também implementadas como código (por exemplo, um ou mais conjuntos de instruções), incorporadas em um produto de programa de computador (como, por exemplo, um ou mais meios de armazenamento de dados tais como discos, cartões de memória flash ou outra memória não-volátil, chips de memória de semicondutor, etc.) que seja legível e/ou executável por uma máquina (por exemplo, um computador) incluindo um arranjo de elementos lógicos (por exemplo, um processador, microprocessador, microcontrolador ou outra máquina de estado finita). As tarefas de uma implementação de um método aqui descrito podem ser também executadas por mais de um arranjo ou máquina. Nestas ou em outras implementações, as tarefas podem ser executadas dentro de um dispositivo para comunicações sem fio, tal como um telefone celular ou outro dispositivo possuindo tal capacidade de comunicação. Tal dispositivo pode ser configurado para comunicar com redes comutadas por circuito e/ou comutadas por pacote (por exemplo, com a utilização de um ou mais protocolos, como o VoIP). Por exemplo, tal dispositivo pode incluir um conjunto de circuitos RF configurado para receber e/ou transmitir quadros codificados.
[00142] É expressamente descrito que os diversos métodos aqui descritos podem ser executados por um dispositivo de comunicação portátil, tal como um aparelho de telefone, um fone de ouvido, ou um assistente digital portátil (PDA), e que os diversos aparelhos aqui descritos podem ser incluídos dentro de tal dispositivo. Uma aplicação em tempo real (por exemplo, on-line) típica é uma conversa telefônica conduzida usando tal dispositivo móvel.
[00143] Em uma ou mais modalidades exemplares, as operações aqui descritas podem ser implementadas em hardware, software, firmware, ou qualquer combinação destes. Se implementadas em software, tais operações podem ser armazenadas em ou transmitidas através de um meio legível por computador como uma ou mais instruções ou código. O termo “meio legível por computador” inclui meios de armazenamento em computador e meios de comunicação (por exemplo, transmissão). A título de exemplo, e não de limitação, os meios de armazenamento legíveis por computador podem compreender um arranjo de elementos de armazenamento, tal como memória de semicondutor (que pode incluir, sem limitação, RAM dinâmica ou estática, ROM, EEPROM e/ou RAM flash), ou memória ferroelétrica, magneto- resistiva, ovônica, polimérica ou memória com alteração de fase; CD-ROM ou outro armazenamento em disco óptico; e/ou dispositivos de armazenamento em disco magnético ou outros dispositivos de armazenamento magnético. Tais meios de armazenamento podem armazenar informações na forma de instruções ou estruturas de dados que podem ser acessadas por um computador. Os meios de comunicação podem compreender qualquer meio que possa ser utilizado para portar um código de programa na forma de instruções ou estruturas de dados e que possa ser acessado por um computador, incluindo qualquer meio que facilite a transferência de um programa de computador de um lugar para outro. Além disto, qualquer conexão é apropriadamente denominada de meio legível por computador. Por exemplo, se o software for transmitido de um site de rede, servidor ou outra fonte remota utilizando um cabo coaxial, cabo de fibra óptica, par trançado, linha de assinante digital (DSL) ou tecnologias sem fio tais como infravermelho, rádio e/ou microondas, então o cabo coaxial, o cabo de fibra óptica, par trançado, DSL, ou tecnologias sem fio tais como infravermelho, rádio, e/ou microondas são incluídos na definição de meio. O termo disco (disk) e disco (disc), como aqui utilizado, inclui disco compacto (CD), disco laser, disco óptico, disco versátil digital (DVD), disquete e disco Blu-ray™ (Blu-Ray Disc Association, Universal City, CA), em que discos (DISKS) usualmente reproduzem dados magneticamente, enquanto discos (DISCS) reproduzem dados opticamente com lasers. Combinações destes devem ser também incluídas dentro do escopo dos meios legíveis por computador.
[00144] Um aparelho de processamento de sinal acústico como descrito aqui pode ser incorporado em um dispositivo eletrônico que aceita entrada de fala para controlar determinadas operações, ou por outro lado pode beneficiar-se da separação de ruídos desejados de ruídos de fundo, como, por exemplo, dispositivos de comunicação. Muitas aplicações podem beneficiar-se do aperfeiçoamento ou da separação de um som desejado claro de ruídos de fundo que se originam de múltiplas direções. Tais aplicações podem incluir interfaces homem-máquina em dispositivos eletrônicos ou de computação que incorporam capacidades tais como reconhecimento e detecção de voz, aperfeiçoamento e separação de fala, controle ativado por voz, e semelhantes. Pode ser desejável implementar tal aparelho de processamento de sinal acústico como sendo adequado em dispositivos que só apresentam capacidades de processamento limitadas.
[00145] Os elementos das diversas implementações dos módulos, elementos, e dispositivos aqui descritos podem ser fabricados como dispositivos eletrônicos e/ou ópticos que residem, por exemplo, no mesmo chip ou entre dois ou mais chips em um conjunto de chips. Um exemplo de tal dispositivo é um arranjo fixo ou programável de elementos lógicos, tais como transistores ou portas. Um ou mais elementos das diversas implementações do aparelho aqui descrito podem ser também implementados no todo ou em parte como um ou mais conjuntos de instruções dispostos para execução em um ou mais arranjos fixos ou programáveis de elementos lógicos, tais como microprocessadores, processadores embutidos, núcleos IP, processadores de sinal digital, FPGAs, ASSPs, e ASICs.
[00146] É possível que um ou mais elementos de uma implementação de um aparelho como aqui descrito sejam utilizados para desempenhar tarefas ou executar outros conjuntos de instruções que não estão diretamente relacionados com uma operação do aparelho, como, por exemplo, uma tarefa referente a outra operação de um dispositivo ou sistema no qual o aparelho é embutido. É também possível que um ou mais elementos de uma implementação de tal aparelho tenham uma estrutura em comum (como, por exemplo, um processador utilizado para executar partes de código que correspondem a elementos diferentes em tempos diferentes, um conjunto de instruções executado para realizar tarefas correspondendo a diferentes elementos em tempos diferentes, ou uma disposição eletrônicos e/ou ópticos que executam elementos diferentes em tempos diferentes) APÊNDICE A
Figure img0003
Figure img0004
Figure img0005
Figure img0006
Figure img0007
Figure img0008
Figure img0009

Claims (21)

1. Método para alocação dinâmica de bits para codificar sinais de áudio, o método CARACTERIZADO pelo fato de que compreende: calcular (TA100) um fator de ganho correspondente de uma pluralidade de fatores de ganho, para cada um dentre uma pluralidade de vetores; e calcular (TA210), por um aparelho eletrônico de codificação de áudio, uma alocação de bits correspondente que seja baseada no fator de ganho, para cada um dentre a pluralidade de vetores; determinar (TA310) que uma alocação de bits correspondente não é maior que um valor de alocação mínimo, para pelo menos um dentre a pluralidade de vetores, em que cada valor de alocação mínimo correspondente é calculado com base em um comprimento de vetor correspondente e com base em um valor, em que o valor é o mesmo para cada um do pelo menos um vetor; e alterar, pelo aparelho eletrônico de codificação de áudio, uma alocação de bits correspondente, para cada um de pelo menos um vetor, em resposta à determinação; e codificar cada vetor da pluralidade de vetores em um número alocado correspondente de bits.
2. Método para alocação dinâmica de bits, de acordo com a reivindicação 1, CARACTERIZADO pelo fato de que um primeiro valor de alocação mínimo correspondendo a um primeiro vetor dentre uma a pluralidade de vetores é diferente de um segundo valor de alocação mínimo correspondendo a um segundo vetor dentre a pluralidade de vetores.
3. Método para alocação dinâmica de bits, de acordo com a reivindicação 1, CARACTERIZADO pelo fato de que cada valor de alocação mínimo correspondente é calculado como um mínimo de um comprimento de vetor correspondente e o valor.
4. Método para alocação dinâmica de bits, de acordo com a reivindicação 1, CARACTERIZADO pelo fato de que cada valor de alocação mínimo correspondente é calculado de acordo com uma função monotonicamente não decrescente de comprimento de vetor correspondente.
5. Método para alocação dinâmica de bits, de acordo com a reivindicação 1, CARACTERIZADO pelo fato de que o método compreende, para cada um dentre a pluralidade de vetores, calcular um valor de uma distribuição de energia do vetor correspondente; e em que, para cada um dentre a pluralidade de vetores, uma alocação de bits correspondente é baseada em um valor correspondente de uma distribuição de energia do vetor correspondente.
6. Método para alocação dinâmica de bits, de acordo com a reivindicação 1, CARACTERI ZADO pelo fato de que o método compreende, para pelo menos um dentre a pluralidade de vetores: determinar que uma alocação de bits correspondente não corresponde a um comprimento de índice de livro-código válido; e reduzir uma alocação de bits correspondente em resposta à determinação.
7. Método para alocação dinâmica de bits, de acordo com a reivindicação 1, CARACTERI ZADO pelo fato de que para pelo menos um dentre uma pluralidade de vetores, uma alocação de bits correspondente é o comprimento de índice de um livro-código de padrões que têm, cada um, n pulsos unitários, e o método compreende calcular um número de bits entre uma alocação de bits correspondente e um comprimento de índice de um livro-código de padrões que têm, cada um, (n+1) pulsos unitários.
8. Método para alocação dinâmica de bits, de acordo com a reivindicação 1, CARACTERIZADO pelo fato de que o método compreende calcular, a partir de cada um dentre a pluralidade de vetores, um fator de ganho correspondente e um vetor de forma correspondente.
9. Método para alocação dinâmica de bits, de acordo com a reivindicação 1, CARACTERIZADO pelo fato de que o método compreende determinar um comprimento de cada um dentre a pluralidade de vetores, em que determinar um comprimento de cada um da pluralidade de vetores é baseado em localizações de uma segunda pluralidade de vetores; e em que um quadro de um sinal de áudio inclui a pluralidade de vetores e a segunda pluralidade de vetores.
10. Método para alocação dinâmica de bits, de acordo com a reivindicação 1, CARACTERIZADO pelo fato de que a pluralidade de fatores de ganho é calculada ao dequantizar um vetor de ganho quantizado correspondente.
11. Aparelho para alocação dinâmica de bits para codificar sinais de áudio, CARACTERIZADO pelo fato de que compreende: meios para calcular (TA100) um fator de ganho correspondente de uma pluralidade de fatores de ganho, para cada um dentre uma pluralidade de vetores; e meios para calcular (TA210), por um aparelho eletrônico de codificação de áudio, uma alocação de bits correspondente que seja baseada no fator de ganho, para cada um dentre a pluralidade de vetores; meios para determinar (TA310) que uma alocação de bits correspondente não é maior que um valor de alocação mínimo, para pelo menos um dentre a pluralidade de vetores, em que cada valor de alocação mínimo correspondente é calculado com base em um comprimento de vetor correspondente e com base em um valor, em que o valor é o mesmo para cada um do pelo menos um vetor; e meios para alterar, pelo aparelho eletrônico de codificação de áudio, uma alocação de bits correspondente, para cada um de pelo menos um vetor, em resposta à determinação; e meios para codificar cada vetor da pluralidade de vetores em um número alocado correspondente de bits.
12. Aparelho para alocação dinâmica de bits, de acordo com a reivindicação 11, CARACTERIZADO pelo fato de que um primeiro valor de alocação mínimo correspondendo a um primeiro vetor dentre uma a pluralidade de vetores é diferente de um segundo valor de alocação mínimo correspondendo a um segundo vetor dentre a pluralidade de vetores.
13. Aparelho para alocação dinâmica de bits, de acordo com a reivindicação 11, CARACTERIZADO pelo fato de que cada valor de alocação mínimo correspondente é calculado como um mínimo de um comprimento de vetor correspondente e o valor.
14. Aparelho para alocação dinâmica de bits, de acordo com a reivindicação 11, CARACTERIZADO pelo fato de que cada valor de alocação mínimo correspondente é calculado de acordo com uma função monotonicamente não decrescente de comprimento de vetor correspondente.
15. Aparelho para alocação dinâmica de bits, de acordo com a reivindicação 11, CARACTERIZADO pelo fato de que o aparelho compreende meios para calcular, para cada um dentre a pluralidade de vetores, um valor de uma distribuição de energia do vetor correspondente; e em que, para cada um dentre a pluralidade de vetores, uma alocação de bits correspondente é baseada em um valor correspondente de uma distribuição de energia do vetor correspondente.
16. Aparelho para alocação dinâmica de bits, de acordo com a reivindicação 11, CARACTERIZADO pelo fato de que o aparelho compreende meios para determinar, para pelo menos um dentre a pluralidade de vetores, que uma alocação de bits correspondente não corresponde a um comprimento de índice de livro-código válido e para reduzir uma alocação de bits correspondente em resposta à determinação.
17. Aparelho para alocação dinâmica de bits, de acordo com a reivindicação 11, CARACTERIZADO pelo fato de que para pelo menos um dentre uma pluralidade de vetores, uma alocação de bits correspondente é o comprimento de índice de um livro-código de padrões que têm, cada um, n pulsos unitários, e o aparelho compreende ainda meios para calcular um número de bits entre uma alocação de bits correspondente e um comprimento de índice de um livro- código de padrões que têm, cada um, (n+1) pulsos unitários.
18. Aparelho para alocação dinâmica de bits, de acordo com a reivindicação 11, CARACTERIZADO pelo fato de que o aparelho compreende meios para calcular, a partir de cada um dentre a pluralidade de vetores, um fator de ganho correspondente e um vetor de forma correspondente.
19. Aparelho para alocação dinâmica de bits, de acordo com a reivindicação 11, CARACTERIZADO pelo fato de que o aparelho compreende meios para determinar um comprimento de cada um dentre a pluralidade de vetores, em que determinar um comprimento de cada um da pluralidade de vetores é baseado em localizações de uma segunda pluralidade de vetores; e em que um quadro de um sinal de áudio inclui a pluralidade de vetores e a segunda pluralidade de vetores.
20. Aparelho para alocação dinâmica de bits, de acordo com a reivindicação 11, CARACTERIZADO pelo fato de que a pluralidade de fatores de ganho é calculada ao dequantizar um vetor de ganho quantizado correspondente.
21. Meio de armazenamento legível por computador, CARACTERIZADO pelo fato de que possui atributos tangíveis que fazem com que a máquina leia os atributos para executar o método tal como definido em qualquer uma das reivindicações 1 a 10.
BR112013002166-7A 2010-07-30 2011-07-29 método e aparelho para alocação dinâmica de bits para codificar sinais de áudio, e meio legível por computador BR112013002166B1 (pt)

Applications Claiming Priority (13)

Application Number Priority Date Filing Date Title
US36966210P 2010-07-30 2010-07-30
US61/369,662 2010-07-30
US36970510P 2010-07-31 2010-07-31
US36975110P 2010-08-01 2010-08-01
US61/369,751 2010-08-01
US37456510P 2010-08-17 2010-08-17
US61/374,565 2010-08-17
US38423710P 2010-09-17 2010-09-17
US61/384,237 2010-09-17
US201161470438P 2011-03-31 2011-03-31
US13/193,529 2011-07-28
US13/193,529 US9236063B2 (en) 2010-07-30 2011-07-28 Systems, methods, apparatus, and computer-readable media for dynamic bit allocation
PCT/US2011/045862 WO2012016126A2 (en) 2010-07-30 2011-07-29 Systems, methods, apparatus, and computer-readable media for dynamic bit allocation

Publications (2)

Publication Number Publication Date
BR112013002166A2 BR112013002166A2 (pt) 2016-05-31
BR112013002166B1 true BR112013002166B1 (pt) 2021-02-02

Family

ID=45527629

Family Applications (1)

Application Number Title Priority Date Filing Date
BR112013002166-7A BR112013002166B1 (pt) 2010-07-30 2011-07-29 método e aparelho para alocação dinâmica de bits para codificar sinais de áudio, e meio legível por computador

Country Status (10)

Country Link
US (4) US20120029926A1 (pt)
EP (5) EP2599080B1 (pt)
JP (4) JP5694532B2 (pt)
KR (4) KR101445510B1 (pt)
CN (4) CN103052984B (pt)
BR (1) BR112013002166B1 (pt)
ES (1) ES2611664T3 (pt)
HU (1) HUE032264T2 (pt)
TW (1) TW201214416A (pt)
WO (4) WO2012016126A2 (pt)

Families Citing this family (59)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE602006018618D1 (de) * 2005-07-22 2011-01-13 France Telecom Verfahren zum umschalten der raten- und bandbreitenskalierbaren audiodecodierungsrate
CN102959873A (zh) * 2010-07-05 2013-03-06 日本电信电话株式会社 编码方法、解码方法、装置、程序及记录介质
US20120029926A1 (en) 2010-07-30 2012-02-02 Qualcomm Incorporated Systems, methods, apparatus, and computer-readable media for dependent-mode coding of audio signals
US9208792B2 (en) 2010-08-17 2015-12-08 Qualcomm Incorporated Systems, methods, apparatus, and computer-readable media for noise injection
WO2012037515A1 (en) 2010-09-17 2012-03-22 Xiph. Org. Methods and systems for adaptive time-frequency resolution in digital data coding
CN103329199B (zh) * 2011-01-25 2015-04-08 日本电信电话株式会社 编码方法、编码装置、周期性特征量决定方法、周期性特征量决定装置、程序、记录介质
WO2012122297A1 (en) 2011-03-07 2012-09-13 Xiph. Org. Methods and systems for avoiding partial collapse in multi-block audio coding
US9009036B2 (en) * 2011-03-07 2015-04-14 Xiph.org Foundation Methods and systems for bit allocation and partitioning in gain-shape vector quantization for audio coding
US8838442B2 (en) 2011-03-07 2014-09-16 Xiph.org Foundation Method and system for two-step spreading for tonal artifact avoidance in audio coding
PT3624119T (pt) 2011-10-28 2022-05-16 Fraunhofer Ges Forschung Aparelho de codificação e método de codificação
RU2505921C2 (ru) * 2012-02-02 2014-01-27 Корпорация "САМСУНГ ЭЛЕКТРОНИКС Ко., Лтд." Способ и устройство кодирования и декодирования аудиосигналов (варианты)
HUE033069T2 (hu) 2012-03-29 2017-11-28 ERICSSON TELEFON AB L M (publ) Harmonikus hangjelek átalakítási kódolása/dekódolása
DE202013005408U1 (de) * 2012-06-25 2013-10-11 Lg Electronics Inc. Mikrophonbefestigungsanordnung eines mobilen Endgerätes
CN103516440B (zh) 2012-06-29 2015-07-08 华为技术有限公司 语音频信号处理方法和编码装置
EP2685448B1 (en) * 2012-07-12 2018-09-05 Harman Becker Automotive Systems GmbH Engine sound synthesis
WO2014009775A1 (en) * 2012-07-12 2014-01-16 Nokia Corporation Vector quantization
US8885752B2 (en) * 2012-07-27 2014-11-11 Intel Corporation Method and apparatus for feedback in 3D MIMO wireless systems
US9129600B2 (en) * 2012-09-26 2015-09-08 Google Technology Holdings LLC Method and apparatus for encoding an audio signal
PL3584791T3 (pl) 2012-11-05 2024-03-18 Panasonic Holdings Corporation Urządzenie do kodowania mowy/dźwięku oraz sposób kodowania mowy/dźwięku
CN105976824B (zh) * 2012-12-06 2021-06-08 华为技术有限公司 信号解码的方法和设备
ES2970676T3 (es) * 2012-12-13 2024-05-30 Fraunhofer Ges Forschung Dispositivo de codificación de audio vocal, dispositivo de decodificación de audio vocal, procedimiento decodificación de audio vocal, y procedimiento de decodificación de audio vocal
US9577618B2 (en) * 2012-12-20 2017-02-21 Advanced Micro Devices, Inc. Reducing power needed to send signals over wires
PL2943953T3 (pl) 2013-01-08 2017-07-31 Dolby International Ab Prognozowanie oparte na modelu w próbkowanym krytycznie banku filtrów
RU2660605C2 (ru) 2013-01-29 2018-07-06 Фраунхофер-Гезелльшафт Цур Фердерунг Дер Ангевандтен Форшунг Е.Ф. Концепция заполнения шумом
BR112015029574B1 (pt) 2013-06-11 2021-12-21 Fraunhofer-Gesellschaft Zur Forderung Der Angewandten Forschung E.V. Aparelho e método de decodificação de sinal de áudio.
CN104282308B (zh) * 2013-07-04 2017-07-14 华为技术有限公司 频域包络的矢量量化方法和装置
EP2830064A1 (en) 2013-07-22 2015-01-28 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Apparatus and method for decoding and encoding an audio signal using adaptive spectral tile selection
CN104347082B (zh) * 2013-07-24 2017-10-24 富士通株式会社 弦波帧检测方法和设备以及音频编码方法和设备
US9224402B2 (en) 2013-09-30 2015-12-29 International Business Machines Corporation Wideband speech parameterization for high quality synthesis, transformation and quantization
US8879858B1 (en) 2013-10-01 2014-11-04 Gopro, Inc. Multi-channel bit packing engine
WO2015049820A1 (ja) * 2013-10-04 2015-04-09 パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカ 音響信号符号化装置、音響信号復号装置、端末装置、基地局装置、音響信号符号化方法及び復号方法
KR101782278B1 (ko) * 2013-10-18 2017-10-23 텔레폰악티에볼라겟엘엠에릭슨(펍) 스펙트럼의 피크 위치의 코딩 및 디코딩
EP3074970B1 (en) 2013-10-21 2018-02-21 Dolby International AB Audio encoder and decoder
MX365684B (es) * 2013-11-12 2019-06-11 Ericsson Telefon Ab L M Codificacion de vector de ganancia y forma dividida.
US20150149157A1 (en) * 2013-11-22 2015-05-28 Qualcomm Incorporated Frequency domain gain shape estimation
MX353200B (es) 2014-03-14 2018-01-05 Ericsson Telefon Ab L M Método y aparato de codificación de audio.
CN104934032B (zh) * 2014-03-17 2019-04-05 华为技术有限公司 根据频域能量对语音信号进行处理的方法和装置
US9542955B2 (en) * 2014-03-31 2017-01-10 Qualcomm Incorporated High-band signal coding using multiple sub-bands
AU2015291897B2 (en) 2014-07-25 2019-02-21 Fraunhofer-Gesellschaft Zur Foerderung Der Angewandten Forschung E.V. Acoustic signal encoding device, acoustic signal decoding device, method for encoding acoustic signal, and method for decoding acoustic signal
US9620136B2 (en) 2014-08-15 2017-04-11 Google Technology Holdings LLC Method for coding pulse vectors using statistical properties
US9672838B2 (en) 2014-08-15 2017-06-06 Google Technology Holdings LLC Method for coding pulse vectors using statistical properties
US9336788B2 (en) * 2014-08-15 2016-05-10 Google Technology Holdings LLC Method for coding pulse vectors using statistical properties
US9905240B2 (en) 2014-10-20 2018-02-27 Audimax, Llc Systems, methods, and devices for intelligent speech recognition and processing
US20160232741A1 (en) * 2015-02-05 2016-08-11 Igt Global Solutions Corporation Lottery Ticket Vending Device, System and Method
WO2016142002A1 (en) * 2015-03-09 2016-09-15 Fraunhofer-Gesellschaft Zur Foerderung Der Angewandten Forschung E.V. Audio encoder, audio decoder, method for encoding an audio signal and method for decoding an encoded audio signal
TW202242853A (zh) * 2015-03-13 2022-11-01 瑞典商杜比國際公司 解碼具有增強頻譜帶複製元資料在至少一填充元素中的音訊位元流
DE102015104864A1 (de) 2015-03-30 2016-10-06 Thyssenkrupp Ag Lagerelement für einen Stabilisator eines Fahrzeugs
CN108028045A (zh) * 2015-07-06 2018-05-11 诺基亚技术有限公司 用于音频信号解码器的位错误检测器
EP3171362B1 (en) * 2015-11-19 2019-08-28 Harman Becker Automotive Systems GmbH Bass enhancement and separation of an audio signal into a harmonic and transient signal component
US10210874B2 (en) * 2017-02-03 2019-02-19 Qualcomm Incorporated Multi channel coding
US10825467B2 (en) * 2017-04-21 2020-11-03 Qualcomm Incorporated Non-harmonic speech detection and bandwidth extension in a multi-source environment
CN111033495A (zh) * 2017-08-23 2020-04-17 谷歌有限责任公司 用于快速相似性搜索的多尺度量化
US11276411B2 (en) * 2017-09-20 2022-03-15 Voiceage Corporation Method and device for allocating a bit-budget between sub-frames in a CELP CODEC
CN108153189B (zh) * 2017-12-20 2020-07-10 中国航空工业集团公司洛阳电光设备研究所 一种民机显示控制器的电源控制电路及方法
US11367452B2 (en) 2018-03-02 2022-06-21 Intel Corporation Adaptive bitrate coding for spatial audio streaming
WO2019193173A1 (en) 2018-04-05 2019-10-10 Telefonaktiebolaget Lm Ericsson (Publ) Truncateable predictive coding
CN110704024B (zh) * 2019-09-28 2022-03-08 中昊芯英(杭州)科技有限公司 一种矩阵处理装置、方法及处理设备
US20210209462A1 (en) * 2020-01-07 2021-07-08 Alibaba Group Holding Limited Method and system for processing a neural network
CN111681639B (zh) * 2020-05-28 2023-05-30 上海墨百意信息科技有限公司 一种多说话人语音合成方法、装置及计算设备

Family Cites Families (115)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3978287A (en) 1974-12-11 1976-08-31 Nasa Real time analysis of voiced sounds
US4516258A (en) * 1982-06-30 1985-05-07 At&T Bell Laboratories Bit allocation generator for adaptive transform coder
JPS6333935A (ja) 1986-07-29 1988-02-13 Sharp Corp ゲイン/シエイプ・ベクトル量子化器
US4899384A (en) 1986-08-25 1990-02-06 Ibm Corporation Table controlled dynamic bit allocation in a variable rate sub-band speech coder
JPH01205200A (ja) 1988-02-12 1989-08-17 Nippon Telegr & Teleph Corp <Ntt> 音声符号化方式
US4964166A (en) 1988-05-26 1990-10-16 Pacific Communication Science, Inc. Adaptive transform coder having minimal bit allocation processing
US5388181A (en) 1990-05-29 1995-02-07 Anderson; David J. Digital audio compression system
US5630011A (en) 1990-12-05 1997-05-13 Digital Voice Systems, Inc. Quantization of harmonic amplitudes representing speech
US5222146A (en) 1991-10-23 1993-06-22 International Business Machines Corporation Speech recognition apparatus having a speech coder outputting acoustic prototype ranks
EP0551705A3 (en) 1992-01-15 1993-08-18 Ericsson Ge Mobile Communications Inc. Method for subbandcoding using synthetic filler signals for non transmitted subbands
CA2088082C (en) 1992-02-07 1999-01-19 John Hartung Dynamic bit allocation for three-dimensional subband video coding
IT1257065B (it) 1992-07-31 1996-01-05 Sip Codificatore a basso ritardo per segnali audio, utilizzante tecniche di analisi per sintesi.
KR100188912B1 (ko) 1992-09-21 1999-06-01 윤종용 서브밴드코딩의 비트재할당 방법
US5664057A (en) 1993-07-07 1997-09-02 Picturetel Corporation Fixed bit rate speech encoder/decoder
JP3228389B2 (ja) 1994-04-01 2001-11-12 株式会社東芝 利得形状ベクトル量子化装置
TW271524B (pt) * 1994-08-05 1996-03-01 Qualcomm Inc
US5751905A (en) * 1995-03-15 1998-05-12 International Business Machines Corporation Statistical acoustic processing method and apparatus for speech recognition using a toned phoneme system
SE506379C3 (sv) 1995-03-22 1998-01-19 Ericsson Telefon Ab L M Lpc-talkodare med kombinerad excitation
US5692102A (en) 1995-10-26 1997-11-25 Motorola, Inc. Method device and system for an efficient noise injection process for low bitrate audio compression
US5692949A (en) 1995-11-17 1997-12-02 Minnesota Mining And Manufacturing Company Back-up pad for use with abrasive articles
US5956674A (en) 1995-12-01 1999-09-21 Digital Theater Systems, Inc. Multi-channel predictive subband audio coder using psychoacoustic adaptive bit allocation in frequency, time and over the multiple channels
US5781888A (en) 1996-01-16 1998-07-14 Lucent Technologies Inc. Perceptual noise shaping in the time domain via LPC prediction in the frequency domain
JP3240908B2 (ja) 1996-03-05 2001-12-25 日本電信電話株式会社 声質変換方法
JPH09288498A (ja) 1996-04-19 1997-11-04 Matsushita Electric Ind Co Ltd 音声符号化装置
JP3707153B2 (ja) 1996-09-24 2005-10-19 ソニー株式会社 ベクトル量子化方法、音声符号化方法及び装置
DE69708693C5 (de) 1996-11-07 2021-10-28 Godo Kaisha Ip Bridge 1 Verfahren und Vorrichtung für CELP Sprachcodierung oder -decodierung
FR2761512A1 (fr) 1997-03-25 1998-10-02 Philips Electronics Nv Dispositif de generation de bruit de confort et codeur de parole incluant un tel dispositif
US6064954A (en) 1997-04-03 2000-05-16 International Business Machines Corp. Digital audio signal coding
WO1999003095A1 (en) 1997-07-11 1999-01-21 Koninklijke Philips Electronics N.V. Transmitter with an improved harmonic speech encoder
DE19730130C2 (de) 1997-07-14 2002-02-28 Fraunhofer Ges Forschung Verfahren zum Codieren eines Audiosignals
WO1999010719A1 (en) 1997-08-29 1999-03-04 The Regents Of The University Of California Method and apparatus for hybrid coding of speech at 4kbps
US5999897A (en) * 1997-11-14 1999-12-07 Comsat Corporation Method and apparatus for pitch estimation using perception based analysis by synthesis
JPH11224099A (ja) 1998-02-06 1999-08-17 Sony Corp 位相量子化装置及び方法
JP3802219B2 (ja) 1998-02-18 2006-07-26 富士通株式会社 音声符号化装置
US6301556B1 (en) 1998-03-04 2001-10-09 Telefonaktiebolaget L M. Ericsson (Publ) Reducing sparseness in coded speech signals
US6115689A (en) 1998-05-27 2000-09-05 Microsoft Corporation Scalable audio coder and decoder
JP3515903B2 (ja) 1998-06-16 2004-04-05 松下電器産業株式会社 オーディオ符号化のための動的ビット割り当て方法及び装置
US6094629A (en) 1998-07-13 2000-07-25 Lockheed Martin Corp. Speech coding system and method including spectral quantizer
US7272556B1 (en) 1998-09-23 2007-09-18 Lucent Technologies Inc. Scalable and embedded codec for speech and audio signals
US6766288B1 (en) * 1998-10-29 2004-07-20 Paul Reed Smith Guitars Fast find fundamental method
US6363338B1 (en) * 1999-04-12 2002-03-26 Dolby Laboratories Licensing Corporation Quantization in perceptual audio coders with compensation for synthesis filter noise spreading
ATE269574T1 (de) 1999-04-16 2004-07-15 Dolby Lab Licensing Corp Audiokodierung mit verstärkungsadaptiver quantisierung und symbolen verschiedener länge
US6246345B1 (en) 1999-04-16 2001-06-12 Dolby Laboratories Licensing Corporation Using gain-adaptive quantization and non-uniform symbol lengths for improved audio coding
JP4242516B2 (ja) 1999-07-26 2009-03-25 パナソニック株式会社 サブバンド符号化方式
US6236960B1 (en) 1999-08-06 2001-05-22 Motorola, Inc. Factorial packing method and apparatus for information coding
US6782360B1 (en) 1999-09-22 2004-08-24 Mindspeed Technologies, Inc. Gain quantization for a CELP speech coder
US6952671B1 (en) 1999-10-04 2005-10-04 Xvd Corporation Vector quantization with a non-structured codebook for audio compression
JP2001242896A (ja) 2000-02-29 2001-09-07 Matsushita Electric Ind Co Ltd 音声符号化/復号装置およびその方法
JP3404350B2 (ja) 2000-03-06 2003-05-06 パナソニック モバイルコミュニケーションズ株式会社 音声符号化パラメータ取得方法、音声復号方法及び装置
CA2359260C (en) 2000-10-20 2004-07-20 Samsung Electronics Co., Ltd. Coding apparatus and method for orientation interpolator node
GB2375028B (en) 2001-04-24 2003-05-28 Motorola Inc Processing speech signals
JP3636094B2 (ja) 2001-05-07 2005-04-06 ソニー株式会社 信号符号化装置及び方法、並びに信号復号装置及び方法
CN1244904C (zh) 2001-05-08 2006-03-08 皇家菲利浦电子有限公司 声频信号编码方法和设备
JP3601473B2 (ja) 2001-05-11 2004-12-15 ヤマハ株式会社 ディジタルオーディオ圧縮回路および伸長回路
KR100347188B1 (en) 2001-08-08 2002-08-03 Amusetec Method and apparatus for judging pitch according to frequency analysis
US7240001B2 (en) 2001-12-14 2007-07-03 Microsoft Corporation Quality improvement techniques in an audio encoder
US7027982B2 (en) * 2001-12-14 2006-04-11 Microsoft Corporation Quality and rate control strategy for digital audio
US7310598B1 (en) 2002-04-12 2007-12-18 University Of Central Florida Research Foundation, Inc. Energy based split vector quantizer employing signal representation in multiple transform domains
DE10217297A1 (de) 2002-04-18 2003-11-06 Fraunhofer Ges Forschung Vorrichtung und Verfahren zum Codieren eines zeitdiskreten Audiosignals und Vorrichtung und Verfahren zum Decodieren von codierten Audiodaten
JP4296752B2 (ja) 2002-05-07 2009-07-15 ソニー株式会社 符号化方法及び装置、復号方法及び装置、並びにプログラム
US7447631B2 (en) 2002-06-17 2008-11-04 Dolby Laboratories Licensing Corporation Audio coding system using spectral hole filling
TWI288915B (en) 2002-06-17 2007-10-21 Dolby Lab Licensing Corp Improved audio coding system using characteristics of a decoded signal to adapt synthesized spectral components
EP1543307B1 (en) * 2002-09-19 2006-02-22 Matsushita Electric Industrial Co., Ltd. Audio decoding apparatus and method
JP4657570B2 (ja) 2002-11-13 2011-03-23 ソニー株式会社 音楽情報符号化装置及び方法、音楽情報復号装置及び方法、並びにプログラム及び記録媒体
FR2849727B1 (fr) 2003-01-08 2005-03-18 France Telecom Procede de codage et de decodage audio a debit variable
JP4191503B2 (ja) 2003-02-13 2008-12-03 日本電信電話株式会社 音声楽音信号符号化方法、復号化方法、符号化装置、復号化装置、符号化プログラム、および復号化プログラム
US7996234B2 (en) 2003-08-26 2011-08-09 Akikaze Technologies, Llc Method and apparatus for adaptive variable bit rate audio encoding
US7613607B2 (en) 2003-12-18 2009-11-03 Nokia Corporation Audio enhancement in coded domain
CA2457988A1 (en) 2004-02-18 2005-08-18 Voiceage Corporation Methods and devices for audio compression based on acelp/tcx coding and multi-rate lattice vector quantization
WO2006006366A1 (ja) 2004-07-13 2006-01-19 Matsushita Electric Industrial Co., Ltd. ピッチ周波数推定装置およびピッチ周波数推定方法
US20060015329A1 (en) 2004-07-19 2006-01-19 Chu Wai C Apparatus and method for audio coding
EP1798724B1 (en) 2004-11-05 2014-06-18 Panasonic Corporation Encoder, decoder, encoding method, and decoding method
JP4599558B2 (ja) 2005-04-22 2010-12-15 国立大学法人九州工業大学 ピッチ周期等化装置及びピッチ周期等化方法、並びに音声符号化装置、音声復号装置及び音声符号化方法
US7630882B2 (en) * 2005-07-15 2009-12-08 Microsoft Corporation Frequency segmentation to obtain bands for efficient coding of digital media
EP1943643B1 (en) 2005-11-04 2019-10-09 Nokia Technologies Oy Audio compression
CN101030378A (zh) 2006-03-03 2007-09-05 北京工业大学 一种建立增益码书的方法
KR100770839B1 (ko) * 2006-04-04 2007-10-26 삼성전자주식회사 음성 신호의 하모닉 정보 및 스펙트럼 포락선 정보,유성음화 비율 추정 방법 및 장치
US8712766B2 (en) 2006-05-16 2014-04-29 Motorola Mobility Llc Method and system for coding an information signal using closed loop adaptive bit allocation
US7987089B2 (en) 2006-07-31 2011-07-26 Qualcomm Incorporated Systems and methods for modifying a zero pad region of a windowed frame of an audio signal
US8374857B2 (en) * 2006-08-08 2013-02-12 Stmicroelectronics Asia Pacific Pte, Ltd. Estimating rate controlling parameters in perceptual audio encoders
US20080059201A1 (en) 2006-09-03 2008-03-06 Chih-Hsiang Hsiao Method and Related Device for Improving the Processing of MP3 Decoding and Encoding
JP4396683B2 (ja) 2006-10-02 2010-01-13 カシオ計算機株式会社 音声符号化装置、音声符号化方法、及び、プログラム
WO2008045846A1 (en) 2006-10-10 2008-04-17 Qualcomm Incorporated Method and apparatus for encoding and decoding audio signals
US20080097757A1 (en) 2006-10-24 2008-04-24 Nokia Corporation Audio coding
KR100862662B1 (ko) 2006-11-28 2008-10-10 삼성전자주식회사 프레임 오류 은닉 방법 및 장치, 이를 이용한 오디오 신호복호화 방법 및 장치
CN101548316B (zh) 2006-12-13 2012-05-23 松下电器产业株式会社 编码装置、解码装置以及其方法
EP2101322B1 (en) 2006-12-15 2018-02-21 III Holdings 12, LLC Encoding device, decoding device, and method thereof
KR101299155B1 (ko) * 2006-12-29 2013-08-22 삼성전자주식회사 오디오 부호화 및 복호화 장치와 그 방법
FR2912249A1 (fr) 2007-02-02 2008-08-08 France Telecom Codage/decodage perfectionnes de signaux audionumeriques.
DE602007004943D1 (de) 2007-03-23 2010-04-08 Honda Res Inst Europe Gmbh Tonhöhenextraktion mit Hemmung der Harmonischen und Subharmonischen der Grundfrequenz
US9653088B2 (en) 2007-06-13 2017-05-16 Qualcomm Incorporated Systems, methods, and apparatus for signal encoding using pitch-regularizing and non-pitch-regularizing coding
US8005023B2 (en) 2007-06-14 2011-08-23 Microsoft Corporation Client-side echo cancellation for multi-party audio conferencing
US7761290B2 (en) 2007-06-15 2010-07-20 Microsoft Corporation Flexible frequency and time partitioning in perceptual transform coding of audio
US7774205B2 (en) 2007-06-15 2010-08-10 Microsoft Corporation Coding of sparse digital media spectral data
ES2378350T3 (es) * 2007-06-21 2012-04-11 Koninklijke Philips Electronics N.V. Método para codificar vectores
US7885819B2 (en) * 2007-06-29 2011-02-08 Microsoft Corporation Bitstream syntax for multi-process audio decoding
HUE041323T2 (hu) 2007-08-27 2019-05-28 Ericsson Telefon Ab L M Eljárás és eszköz hangjel észlelési spektrális dekódolására, beleértve a spektrális lyukak kitöltését
WO2009033288A1 (en) 2007-09-11 2009-03-19 Voiceage Corporation Method and device for fast algebraic codebook search in speech and audio coding
WO2009048239A2 (en) * 2007-10-12 2009-04-16 Electronics And Telecommunications Research Institute Encoding and decoding method using variable subband analysis and apparatus thereof
US8527265B2 (en) 2007-10-22 2013-09-03 Qualcomm Incorporated Low-complexity encoding/decoding of quantized MDCT spectrum in scalable speech and audio codecs
US8139777B2 (en) 2007-10-31 2012-03-20 Qnx Software Systems Co. System for comfort noise injection
CN101465122A (zh) 2007-12-20 2009-06-24 株式会社东芝 语音的频谱波峰的检测以及语音识别方法和系统
US20090319261A1 (en) 2008-06-20 2009-12-24 Qualcomm Incorporated Coding of transitional speech frames for low-bit-rate applications
ES2379761T3 (es) 2008-07-11 2012-05-03 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Proporcinar una señal de activación de distorsión de tiempo y codificar una señal de audio con la misma
EP3246918B1 (en) 2008-07-11 2023-06-14 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Audio decoder, method for decoding an audio signal and computer program
US8300616B2 (en) 2008-08-26 2012-10-30 Futurewei Technologies, Inc. System and method for wireless communications
US8364471B2 (en) 2008-11-04 2013-01-29 Lg Electronics Inc. Apparatus and method for processing a time domain audio signal with a noise filling flag
BR122019023704B1 (pt) 2009-01-16 2020-05-05 Dolby Int Ab sistema para gerar um componente de frequência alta de um sinal de áudio e método para realizar reconstrução de frequência alta de um componente de frequência alta
JP5335004B2 (ja) 2009-02-13 2013-11-06 パナソニック株式会社 ベクトル量子化装置、ベクトル逆量子化装置、およびこれらの方法
FR2947945A1 (fr) * 2009-07-07 2011-01-14 France Telecom Allocation de bits dans un codage/decodage d'amelioration d'un codage/decodage hierarchique de signaux audionumeriques
US9117458B2 (en) 2009-11-12 2015-08-25 Lg Electronics Inc. Apparatus for processing an audio signal and method thereof
JP5625076B2 (ja) * 2010-03-10 2014-11-12 フラウンホーファーゲゼルシャフトツール フォルデルング デル アンゲヴァンテン フォルシユング エー.フアー. コーディングコンテキストのピッチ依存適合を用いた、オーディオ信号復号器、オーディオ信号符号化器、オーディオ信号を復号するための方法、オーディオ信号を符号化するための方法、およびコンピュータプログラム
WO2011141772A1 (en) 2010-05-12 2011-11-17 Nokia Corporation Method and apparatus for processing an audio signal based on an estimated loudness
US20120029926A1 (en) 2010-07-30 2012-02-02 Qualcomm Incorporated Systems, methods, apparatus, and computer-readable media for dependent-mode coding of audio signals
US9208792B2 (en) 2010-08-17 2015-12-08 Qualcomm Incorporated Systems, methods, apparatus, and computer-readable media for noise injection

Also Published As

Publication number Publication date
JP2013534328A (ja) 2013-09-02
CN103038821B (zh) 2014-12-24
WO2012016122A2 (en) 2012-02-02
CN103038821A (zh) 2013-04-10
WO2012016110A3 (en) 2012-04-05
EP2599082A2 (en) 2013-06-05
CN103038820A (zh) 2013-04-10
KR101445510B1 (ko) 2014-09-26
WO2012016126A3 (en) 2012-04-12
JP2013532851A (ja) 2013-08-19
EP3021322B1 (en) 2017-10-04
CN103038822A (zh) 2013-04-10
KR101445509B1 (ko) 2014-09-26
BR112013002166A2 (pt) 2016-05-31
US8831933B2 (en) 2014-09-09
KR20130036364A (ko) 2013-04-11
WO2012016126A2 (en) 2012-02-02
US20120029926A1 (en) 2012-02-02
TW201214416A (en) 2012-04-01
JP5694531B2 (ja) 2015-04-01
KR20130036361A (ko) 2013-04-11
EP3852104B1 (en) 2023-08-16
EP2599082B1 (en) 2020-11-25
HUE032264T2 (en) 2017-09-28
CN103038822B (zh) 2015-05-27
EP2599081A2 (en) 2013-06-05
CN103052984A (zh) 2013-04-17
KR20130069756A (ko) 2013-06-26
EP2599081B1 (en) 2020-12-23
KR101442997B1 (ko) 2014-09-23
JP2013537647A (ja) 2013-10-03
JP2013539548A (ja) 2013-10-24
WO2012016122A3 (en) 2012-04-12
US20120029925A1 (en) 2012-02-02
EP2599080B1 (en) 2016-10-19
JP5587501B2 (ja) 2014-09-10
US8924222B2 (en) 2014-12-30
WO2012016110A2 (en) 2012-02-02
KR20130037241A (ko) 2013-04-15
US20120029924A1 (en) 2012-02-02
US9236063B2 (en) 2016-01-12
US20120029923A1 (en) 2012-02-02
EP2599080A2 (en) 2013-06-05
CN103052984B (zh) 2016-01-20
WO2012016128A2 (en) 2012-02-02
JP5694532B2 (ja) 2015-04-01
WO2012016128A3 (en) 2012-04-05
EP3021322A1 (en) 2016-05-18
EP3852104A1 (en) 2021-07-21
ES2611664T3 (es) 2017-05-09

Similar Documents

Publication Publication Date Title
BR112013002166B1 (pt) método e aparelho para alocação dinâmica de bits para codificar sinais de áudio, e meio legível por computador
CN103069482B (zh) 用于噪声注入的系统、方法和设备
HUE035162T2 (en) Systems, procedures, equipment and computer-readable media for decoding harmonic signals
EP2599079A2 (en) Systems, methods, apparatus, and computer-readable media for dependent-mode coding of audio signals

Legal Events

Date Code Title Description
B06F Objections, documents and/or translations needed after an examination request according [chapter 6.6 patent gazette]
B06U Preliminary requirement: requests with searches performed by other patent offices: procedure suspended [chapter 6.21 patent gazette]
B09A Decision: intention to grant [chapter 9.1 patent gazette]
B16A Patent or certificate of addition of invention granted [chapter 16.1 patent gazette]

Free format text: PRAZO DE VALIDADE: 20 (VINTE) ANOS CONTADOS A PARTIR DE 29/07/2011, OBSERVADAS AS CONDICOES LEGAIS.