BR112017000791B1 - Sistema e método de recuperação de erro de transmissão de pacote com base em redundância - Google Patents

Sistema e método de recuperação de erro de transmissão de pacote com base em redundância Download PDF

Info

Publication number
BR112017000791B1
BR112017000791B1 BR112017000791-6A BR112017000791A BR112017000791B1 BR 112017000791 B1 BR112017000791 B1 BR 112017000791B1 BR 112017000791 A BR112017000791 A BR 112017000791A BR 112017000791 B1 BR112017000791 B1 BR 112017000791B1
Authority
BR
Brazil
Prior art keywords
packet
temporary storage
packets
delay
analyzer
Prior art date
Application number
BR112017000791-6A
Other languages
English (en)
Other versions
BR112017000791A2 (pt
Inventor
Venkatesh Krishnan
Vivek Rajendran
Sandip Sarkar
Subasingha Shaminda Subasingha
Venkatraman S. Atti
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
Priority claimed from US14/809,085 external-priority patent/US9712287B2/en
Application filed by Qualcomm Incorporated filed Critical Qualcomm Incorporated
Publication of BR112017000791A2 publication Critical patent/BR112017000791A2/pt
Publication of BR112017000791B1 publication Critical patent/BR112017000791B1/pt

Links

Abstract

Trata-se de um dispositivo que inclui um receptor, um armazenamento temporário e um analisador. O receptor é configurado para receber pacotes que correspondem pelo menos a um subconjunto de uma sequência de pacotes e que incluem dados de correção de erro. Os dados de correção de erro de um primeiro pacote dos pacotes incluem uma cópia parcial de um segundo pacote. O armazenamento temporário é configurado para armazenar os pacotes. O analisador é configurado para determinar se um primeiro pacote em particular da sequência não está no armazenamento temporário, para determinar se uma cópia parcial do primeiro pacote em particular está armazenada no armazenamento temporário como dados de correção de erro em um segundo pacote em particular, para atualizar um valor com base, pelo menos em parte, na possibilidade de o primeiro pacote em particular não estar no armazenamento temporário e a cópia parcial do primeiro pacote em particular estar armazenada no armazenamento temporário, e para ajustar um parâmetro de recuperação de erro com base, pelo menos em parte, no valor.

Description

I. REFERÊNCIA CRUZADA A PEDIDOS RELACIONADOS
[0001] O presente pedido reivindica a prioridade do Pedido de Patente Provisório no U.S. 62/031.675, depositado em 31 de julho de 2014, e do Pedido de Patente no U.S. 14/809.085, depositado em 24 de julho de 2015, ambos intitulados “SYSTEM AND METHOD OF REDUNDANCY BASED PACKET TRANSMISSION ERROR RECOVERY”, cujo conteúdo está incorporado a título de referência em sua totalidade.
II. CAMPO
[0002] A presente revelação é relacionada, em geral, a recuperação de erro de transmissão de pacote com base em redundância.
III. DESCRIÇÃO DA TÉCNICA RELACIONADA
[0003] Os avanços na tecnologia têm resultado em dispositivos de computação menores e com maior eficácia. Por exemplo, atualmente há uma variedade de dispositivos de computação pessoais portáteis, incluindo dispositivos de computação sem fio, tais como telefones sem fio portáteis, assistentes pessoais digitais (PDAs) e dispositivos de paginação, que são pequenos, leves e facilmente transportados por usuários. Mais especificamente, os telefones sem fio portáteis, tais como telefones celulares e telefones de protocolo de internet (IP), podem comunicar pacotes de voz e dados por meio de redes sem fio. Além disso, muitos dos tais telefones sem fio incluem outros tipos de dispositivos que são incorporados nos mesmos. Por exemplo, um telefone sem fio também pode incluir uma câmera estática digital, uma câmera de vídeo digital, um gravador digital e um reprodutor de arquivo de áudio. Além disso, tais telefones sem fio podem processar instruções executáveis, incluindo aplicativos de software, tais como um aplicativo de navegador da web, que podem ser usados para acessar a Internet. Como tal, esses telefones sem fio podem incluir capacidades de computação significativas.
[0004] A transmissão de voz por técnicas digitais se expande, particularmente, em aplicações telefônicas de longa distância e de rádio digital. Pode existir um interesse em determinar a menor quantidade de informações que podem ser enviadas por meio de um canal enquanto se mantém uma qualidade percebida de fala reconstruída. Caso a fala seja transmitida através de amostragem e digitalização, uma taxa de dados na ordem de sessenta e quatro quilobits por segundo (kbps) pode ser usada para alcançar uma qualidade de fala de um telefone analógico. Através do uso da análise de fala, seguida de codificação, transmissão e de ressíntese em um receptor, uma redução significativa na taxa de dados pode ser alcançada.
[0005] Os dispositivos para comprimir a fala podem ser úteis em muitos campos de telecomunicações. Um campo exemplificativo é comunicação sem fio. O campo de comunicações sem fio tem muitas aplicações, incluindo, por exemplo, telefones sem fio, paginação, laços locais sem fio, telefonia sem fio, tal como sistemas de telefone de serviço de comunicação celular e pessoal (PCS), telefonia de Protocolo de Internet (IP) móvel e sistemas de comunicação por satélite. Uma aplicação particular é a telefonia sem fio par assinantes móveis.
[0006] Várias interfaces áreas foram desenvolvidas para sistemas de comunicação sem fio incluindo, por exemplo, acesso múltiplo por divisão de frequência (FDMA), acesso múltiplo por divisão de tempo (TDMA), acesso múltiplo por divisão de código (CDMA) e CDMA síncrono por visão de tempo (TD-SCDMA). Em conexão com as mesmas, vários padrões internacionais e domésticos foram estabelecidos incluindo, por exemplo, Serviço de Telefone Móvel Avançado (AMPS), Comunicações Sistema Global para Comunicações móveis (GSM) e o Padrão Interim 95 (IS-95). Um sistema de comunicação de telefonia sem fio exemplificativo é um sistema de acesso múltiplo por divisão de código (CDMA). O padrão IS-95 e derivados do mesmo, IS-95A, ANSI J-STD-008 e IS-95B (denominados no presente documento coletivamente de IS-95), são promulgados pela Associação da Indústria de Telecomunicação (TIA - Telecommunication Industry Association), e outros corpos de padrões bem conhecidos para especificar o uso de uma interface área de CDMA para sistemas de comunicação de telefona celular ou PCS.
[0007] O padrão IS-95 envolvido subsequentemente nos sistemas "3G", tais como cdma2000 e WCDMA, que fornecem mais capacidade e serviço de dados de pacote de alta velocidade. Duas variações de cdma2000 são apresentadas pelos documentos IS-2000 (cdma2000 1xRTT) e IS-856 (cdma2000 1xEV-DO), que são emitidos pela TIA. O sistema de comunicação cdma2000 1xRTT oferece uma taxa de dados de pico de 153 kbps ao passo que o sistema de comunicação cdma2000 1xEV-DO define um conjunto de taxas de dados, que parte de 38,4 kbps para 2,4 Mbps. O padrão WCDMA é incorporado no Projeto de Parceira de 3a Geração "3 GPP", Documentos nos 3G TS 25.211, 3G TS 25.212, 3G TS 25.213 e 3G TS 25.214. A especificação de Telecomunicações Móveis Internacionais Avançada (IMT -Avançadas) apresenta padrões “4G”. A especificação de IMT-Avançadas define uma taxa de dados de pico para serviço 4G em 100 megabits por segundo (Mbit/s) para comunicação de alta mobilidade (por exemplo, de trens e carros) e 1 gigabit por segundo (Gbit/s) para comunicação de mobilidade baixa (por exemplo, de pedestres e usuários estacionários).
[0008] Os dispositivos que empregam técnicas para comprimir a fala extraindo-se parâmetros que se referem a um modelo de geração de fala humana são denominados de codificadores de fala. Os codificadores de fala podem compreender um criptador e um decodificador. O criptador divide o sinal de fala de chegada em blocos de tempo ou em quadros de análise. A duração de cada segmento no tempo (ou "quadro") pode ser selecionada como curta o suficiente a ponto de poder se esperar que um envelope espectral do sinal permaneça relativamente estacionário. Por exemplo, um comprimento de quadro é vinte milissegundos, o que corresponde a 160 amostras em uma taxa de amostragem de oito quilohertz (kHz), embora qualquer comprimento de quadro ou taxa de amostragem considerado adequado para a aplicação em particular possa ser usado.
[0009] O encriptador analisa o quadro de fala recebido para extrair determinados parâmetros relevantes e, então, quantiza os parâmetros em representação binária, por exemplo, para um conjunto de bits ou um pacote de dados binário. Os pacotes de dados são transmitidos através de um canal de comunicação (isto é, uma conexão de rede cabeada e/ou sem fio) a um receptor e a um decodificador. O decodificador processa os pacotes de dados, desquantiza os pacotes de dados processados para produzir os parâmetros e ressintetiza os quadros de fala com o uso dos parâmetros desquantizados.
[0010] A função do codificador de fala é comprimir o sinal de fala digitalizado em um sinal de baixa taxa de bits removendo-se redundâncias naturais inerentes na fala. A compressão digital pode ser alcançada representando-se um quadro de fala de entrada com um conjunto de parâmetros e empregando-se a quantização para representar os parâmetros com um conjunto de bits. Se o quadro de fala de entrada tiver um número de bits i e um pacote de dados produzido pelo codificador de fala tiver um número de bits No, o fator de compactação alcançado pelo codificador de fala é Cr= Ni/No. O desafio é manter alta qualidade de voz da fala decodificada ao mesmo tempo que o fator-alvo de compressão é alcançado. O desempenho de um codificador de fala depende de (1) quão bem o modelo de fala, ou a combinação do processo de análise e síntese descrito acima, desempenha e (2) quão bem o processo de quantização de parâmetro é realizado na taxa de bit de No bits por quadro. A meta do modelo de fala é, então, capturar a essência do sinal de fala, ou a qualidade-alvo de voz, com um pequeno conjunto de parâmetros para cada quadro.
[0011] Os codificadores de fala utilizam geralmente um conjunto de parâmetros (incluindo vetores) para descrever o sinal de fala. Um bom conjunto de parâmetros fornece idealmente uma largura de banda de sistema baixa para a reconstituição de um sinal de fala perceptualmente preciso. O tom, a intensidade de sinal, o envelope espectral (ou formantes), espectros de amplitude e de fase são exemplos dos parâmetros de codificação de fala.
[0012] Os codificadores de fala podem ser implantados como codificadores de domínio de tempo que tentam capturar a forma de onda de fala por domínio de tempo empregando-se processamento de alta resolução de tempo para criptar pequenos segmentos de fala (por exemplo, subquadros de 5 milissegundos (ms)) por vez. Para cada subquadro, uma representação de alta precisão de um espaço de livro de códigos é constatada por meio de um algoritmo de busca. Alternativamente, os codificadores de fala podem ser implantados como codificadores de domínio de frequência que tentam capturar espectro de fala a curto prazo do quadro de fala de entrada com um conjunto de parâmetros (análise) e empregam um processo de síntese correspondente para recriar a forma de onda de fala a partir dos parâmetros espectrais. O quantizador de parâmetro preserva os parâmetros representando-se os mesmos com representações armazenadas de vetores de código em conformidade com técnicas de quantização conhecidas.
[0013] Um codificador de fala por domínio de tempo é o codificador de Predição Linear com Excitação por Código (CELP). Em um codificador de CELP, as correlações a curto prazo, ou redundâncias, no sinal de fala são removidos por uma análise de predição linear (LP), que constata coeficientes de um filtro de formante a curto prazo. A aplicação de um filtro de predição a curto prazo ao quadro de fala de chegada gera um sinal de resíduo de LP, que é modelado adicionalmente e quantizado com parâmetros de filtro de predição a longo prazo e um livro de códigos estocásticos subsequente. Desse modo, a codificação de CELP divide a tarefa de criptar a forma de onda de fala por domínio de tempo em tarefas separadas de criptar os coeficientes de filtro a curto prazo de LP e criptar o resíduo de LP. A codificação por domínio de tempo pode ser realizada em uma taxa fixa (isto é, com o uso do mesmo número de bits, No, para cada quadro) ou em uma taxa variável (na qual diferentes taxas de bits são usadas para diferentes tipos de conteúdo de quadro). Os codificadores de taxa variável tentam usar a quantidade de bits necessária para criptar os parâmetros de codec em um nível adequado para obter uma qualidade alvo.
[0014] Os codificadores de domínio de tempo, tal como o codificador de CELP pode depender de um alto número, No, por quadro para preservar a precisão da forma de onda de fala por domínio de tempo. Tais codificadores podem entregar excelente qualidade de voz desde que o número de bits, No, por quadro seja relativamente grande (por exemplo, 8 kbps ou maior). Em baixas taxas de bits (por exemplo, 4 kbps e menor), os codificadores de domínio de tempo podem falhar em manter alta qualidade e desempenho satisfatório devido ao número limitado de bits disponíveis. Em baixas taxas de bits, o espaço de livro de códigos limitado estoura a capacidade de compatibilização de onda de forma de codificadores de domínio de tempo, que são implantados em aplicações comerciais de maior taxa. Logo, independente dos aperfeiçoamentos ao longo do tempo, muitos sistemas de codificação CELP que operam em taxas de bits baixas sofrem com distorção perceptualmente significativa distinguida como ruído.
[0015] Uma alternativa aos codificadores de CELP em baixas taxas de bits é o codificador de "Predição Linear com Excitação Por Ruído" (NELP) que opera sob princípios semelhantes como um codificador de CELP. Os codificadores de NELP usam um sinal de ruído pseudoaleatório filtrado para modelar a fala, em vez de um livro de códigos. Uma vez que a NELP usa um modelo mais simples para fala codificada, a NELP alcança uma taxa de bits inferior à CELP. A NELP pode ser usada para comprimir ou representar fala não vozeada ou silêncio.
[0016] Os sistemas de codificação que operam em taxas na ordem de 2,4 kbps são geralmente paramétricos em natureza. Ou seja, tais sistemas de codificação operam transmitindo-se parâmetros que descrevem o período de tom e o envelope espectral (ou formantes) do sinal de fala em intervalos regulares. O sistema vocoder de LP é ilustrativo desses codificadores chamados paramétricos.
[0017] Os vocoders de LP modelam um sinal de fala vozeado com um único pulso por período de tom. A técnica básica pode ser aumentada para incluir informações de transmissão sobre o envelope espectral, dentre outros aspectos. Embora os vocoders de LP forneçam um desempenho razoável de modo geral, os mesmos podem apresentar uma distorção perceptivelmente significativa, distinguida como zumbido.
[0018] Nos recentes anos, surgiram codificadores que são híbridos de codificadores de forma de onda e codificadores paramétricos. O sistema de codificação de interpolação de forma de onda e protótipo (PWI) é ilustrativo desses codificadores chamados híbridos. O sistema de codificação de PWI também pode ser conhecido como um codificador de fala de período de tom de protótipo (PPP). Um sistema de codificação de PWI fornece um método eficiente para codificar fala vocalizada. O conceito básico de PWI é extrair um ciclo de tom representativo (uma forma de onda de protótipo) em intervalos fixos, para transmitir a descrição dos mesmos, e reconstruir o sinal de fala interpolando-se entre as formas de onda de protótipo. O método de PWI pode operar tanto no sinal residual de LP como no sinal de fala.
[0019] Os dispositivos eletrônicos, tais como telefones sem fio, podem enviar e receber dados por meio de redes. Por exemplo, dados de áudio podem ser enviados e recebidos por meio de uma rede comutada por circuito (por exemplo, a rede de telefone comutada pública (PSTN), uma um sistema global para rede de comunicações (GSM), etc.) ou uma rede comutada por pacote (por exemplo, uma rede de voz sobre protocolo de internet (VoIP), uma rede de voz sobre evolução a longo prazo (VoLTE), etc.). Em uma rede comutada por pacote, os pacotes de áudio podem ser individualmente roteados a partir de um dispositivo de origem para um dispositivo de destino. Devido a condições de rede, os pacotes de áudio podem chegar danificados. O dispositivo de destino pode armazenar pacotes recebidos em um armazenamento temporário de remoção de flutuação de fase e pode redispor os pacotes recebidos se os pacotes recebidos estiverem danificados.
[0020] O dispositivo de destino pode reconstruir dados com base nos pacotes recebidos. Um pacote em particular enviado pelo dispositivo de origem pode não ser recebido ou pode ser recebido com erros por um dispositivo de destino. O dispositivo de destino pode não ter capacidade para recuperar todos ou uma porção dos dados associados ao pacote em particular. O dispositivo de destino pode reconstruir os dados com base em pacotes incompletos. Os dados reconstruídos com base em pacotes incompletos podem ter qualidade degradada que impacta adversamente uma experiência de usuário. Alternativamente, o dispositivo de destino pode solicitar que o dispositivo de origem retransmita o pacote em particular e pode atrasar a reconstrução dos dados enquanto espera para receber um pacote retransmitido. O atraso associado à solicitação de retransmissão e à reconstrução dos dados com base em um pacote retransmitido pode ser perceptível para um usuário e pode resultar em uma experiência de usuário negativa.
IV. SUMÁRIO
[0021] Em um aspecto em particular, um dispositivo inclui um receptor, um armazenamento temporário e um analisador. O receptor é configurado para receber uma pluralidade de pacotes. A pluralidade de pacotes corresponde a pelo menos um subconjunto de uma sequência de pacotes. A pluralidade de pacotes inclui dados de correção de erro. Os dados de correção de erro de um primeiro pacote da pluralidade de pacotes incluem uma cópia parcial de um segundo pacote da pluralidade de pacotes. O armazenamento temporário é configurado para armazenar a pluralidade de pacotes. O analisador é configurado para determinar se um primeiro pacote em particular da sequência de pacotes não está no armazenamento temporário, para determinar se uma cópia parcial do primeiro pacote em particular está armazenada no armazenamento temporário como dados de correção de erro em um segundo pacote em particular, para determinar um valor com base, pelo menos em parte, na possibilidade de o primeiro pacote em particular não estar no armazenamento temporário e a cópia parcial do primeiro pacote em particular estar armazenada no armazenamento temporário e para ajustar um parâmetro de recuperação de erro com base, pelo menos em parte, no valor.
[0022] Em outro aspecto em particular, um método inclui receber, em um primeiro dispositivo, uma pluralidade de pacotes. A pluralidade de pacotes corresponde a pelo menos um subconjunto de uma sequência de pacotes. A pluralidade de pacotes inclui dados de correção de erro. Os dados de correção de erro de um primeiro pacote da pluralidade de pacotes incluem uma cópia parcial de um segundo pacote. O método também inclui determinar se um pacote em particular da sequência de pacotes não está em um armazenamento temporário e determinar se uma cópia parcial do pacote em particular está armazenada no armazenamento temporário como dados de correção de erro em outro pacote. O método inclui adicionalmente determinar um valor com base, pelo menos em parte, na possibilidade de o pacote em particular não estar no armazenamento temporário e a cópia parcial do pacote em particular estar armazenada no armazenamento temporário e ajustar um parâmetro de recuperação de erro com base, pelo menos em parte, no valor.
[0023] Em outro aspecto em particular, um dispositivo de armazenamento legível por computador armazena instruções que, quando executadas por um processador, fazem com que o processador realize operações que incluem receber uma pluralidade de pacotes, em que pluralidade de pacotes corresponde pelo menos a um subconjunto de uma sequência de pacotes. A pluralidade de pacotes inclui dados de correção de erro. Os dados de correção de erro de um primeiro pacote da pluralidade de pacotes incluem uma cópia parcial de um segundo pacote. As operações também incluem determinar se um pacote em particular da sequência de pacotes não está em um armazenamento temporário e determinar se uma cópia parcial do pacote em particular está armazenada no armazenamento temporário como dados de correção de erro em outro pacote. As operações incluem adicionalmente determinar um valor com base, pelo menos em parte, na possibilidade de o pacote em particular não estar no armazenamento temporário e a cópia parcial do pacote em particular estar armazenada no armazenamento temporário e ajustar um parâmetro de recuperação de erro com base, pelo menos em parte, no valor.
[0024] Outros aspectos, vantagens e recursos da presente revelação ficarão evidentes após a análise do pedido, incluindo das seguintes seções: Breve Descrição dos Desenhos, Descrição Detalhada e as Reivindicações.
V. BREVE DESCRIÇÃO DOS DESENHOS
[0025] A Figura 1 é um diagrama em blocos de um aspecto ilustrativo em particular de um sistema que é operável para realizar recuperação de erro de transmissão de pacote com base em redundância;
[0026] A Figura 2 é um diagrama de um aspecto em particular do método de recuperação de erro de transmissão de pacote com base em redundância;
[0027] A Figura 3 é um diagrama de outro aspecto em particular do método de recuperação de erro de transmissão de pacote com base em redundância;
[0028] A Figura 4 é um diagrama de outro aspecto em particular do método de recuperação de erro de transmissão de pacote com base em redundância e pode corresponder a 302 da Figura 3;
[0029] A Figura 5 é um diagrama de outro aspecto em particular de um sistema que é operável para realizar recuperação de erro de transmissão de pacote com base em redundância;
[0030] A Figura 6 é um fluxograma que ilustra um método de recuperação de erro de transmissão de pacote com base em redundância em particular;
[0031] A Figura 7 é um fluxograma que ilustra outro método de recuperação de erro de transmissão de pacote com base em redundância em particular;
[0032] A Figura 8 é um fluxograma que ilustra outro método de recuperação de erro de transmissão de pacote com base em redundância em particular; e
[0033] A Figura 9 é um diagrama em blocos de um aspecto ilustrativo em particular de um dispositivo que é operável para realizar recuperação de erro de transmissão de pacote com base em redundância;
VI. DESCRIÇÃO DETALHADA
[0034] Os princípios descritos no presente documento podem ser aplicados, por exemplo, a um fone de ouvido, um aparelho de telefone, outro dispositivo de áudio ou um componente de um dispositivo que é configurado para realizar recuperação de erro de transmissão de pacote com base em redundância. A menos expressamente limitado pelo contexto, o termo "sinal" é usado no presente documento para indicar quaisquer significados comuns do mesmo do mesmo, incluindo um estado de uma localização de memória (ou conjunto de localizações de memória) conforme expresso em um fio, barramento ou outra mídia de transmissão. A menos que expressamente limitado pelo contexto, o termo "gerar" é usado no presente documento para indicar quaisquer significados comuns do mesmo, tal como computar ou, de outro modo, produzir. A menos que expressamente limitado pelo contexto, o termo "calcular" é usado no presente documento para indicar quaisquer significados comuns do mesmo, tal como computar, avaliar, aproximar exponencialmente e/ou selecionar a partir de uma pluralidade de valores. A menos que expressamente limitado pelo contexto, o termo "obter" é usado para indicar quaisquer significados comuns do mesmo, tal como calcular, derivar, receber (por exemplo, de outro componente, bloco ou dispositivo) e/ou recuperar (por exemplo, a partir de um registro de memória ou uma matriz de elementos de memória).
[0035] A menos que expressamente limitado pelo contexto, o termo "produzir" é usado para indicar quaisquer significados comuns do mesmo, tais como calcular, gerar e/ou fornecer. A menos que expressamente limitado pelo contexto, o termo "fornecer" é usado para indicar quaisquer significados comuns do mesmo, tais como calcular, gerar e/ou produzir. A menos que expressamente limitado pelo contexto, o termo "acoplado(a)" é usado para indicar a conexão elétrica ou física direta ou indireta. Caso a conexão seja indireta, é bem entendido por uma pessoa de habilidade comum na técnica que pode haver outros blocos ou componentes entre as estruturas que são "acopladas".
[0036] O termo “configuração” pode ser usado em referência a um método, aparelho/dispositivo e/ou sistema, conforme indicado pelo contexto particular do mesmo. Quando o termo "compreender" for usado nas presentes descrição e reivindicações, outros elementos ou operações não são excluídos. O termo "com base em" (conforme em "A se baseia em B") é usado para indicar quaisquer significados comuns dos mesmos, incluindo os casos (i) "com base em pelo menos" (por exemplo, "A se baseia em pelo menos B") e, caso apropriado no contexto particular, (ii) "igual a" (por exemplo, "A é igual a B"). No caso (i) em que A se baseia em B inclui com base em pelo menos, isso pode incluir a configuração em que A é acoplado(a) a B. De modo semelhante, o termo "em resposta a" é usado para indicar quaisquer significados comuns dos mesmos, incluindo "em resposta a pelo menos". O termo "pelo menos um" é usado para indicar quaisquer significados comuns dos mesmos, incluindo "um ou mais". O termo "pelo menos dois" é usado para indicar quaisquer significados comuns dos mesmos, incluindo “dois ou mais”.
[0037] Os termos "aparelho" e "dispositivo" são usados de maneira genérica e intercambiável, a menos que indicado de outro modo pelo contexto particular. A menos que indicado de outro modo, qualquer revelação de uma operação de um aparelho que tem um recurso particular está também expressamente destinada a revelar um método que tem recursos análogo (e vice-versa), e qualquer revelação de uma operação de um aparelho, de acordo com uma configuração particular, também está expressamente destinada a revelar um método de acordo com uma configuração análoga (e vice- versa). Os termos "método," "processo," "procedimento" e "técnica" são usados de maneira genérica e intercambiável a menos que indicado de outro modo pelo contexto particular. Os termos "elemento" e "módulo" podem ser usados para indicar uma porção de uma configuração maior. O termo “pacote” pode corresponder a um ou mais quadros. Qualquer incorporação a título de referência de uma porção de um documento deve ser entendida para incorporar definições de termos ou variáveis que são referenciados dentro da porção, em que tais definições aparecem em outro parágrafo no documento, assim como quaisquer Figuras referenciadas na porção incorporada.
[0038] Conforme usado no presente documento, o termo "dispositivo de comunicação" se refere a um dispositivo eletrônico que pode ser usado para comunicação de voz e/ou de dados através de uma rede de comunicação sem fio. Os exemplos de dispositivos de comunicação incluem telefones celulares, assistentes pessoais digitais (PDAs), dispositivos de mão, monofones, sem modens sem fio, computadores do tipo laptop, computadores pessoais etc.
[0039] Com referência à Figura 1, um aspecto ilustrativo em particular de um sistema operável para realizar recuperação de erro com base em redundância é realizado e designado, em geral, 100. O sistema 100 pode incluir um dispositivo de destino 102 em comunicação com um ou mais outros dispositivos (por exemplo, um dispositivo de origem 104) por meio de uma rede 190. O dispositivo de origem 104 pode incluir ou pode ser acoplado a um microfone 146. O dispositivo de destino 102 pode incluir ou pode ser acoplado a um alto-falante 142. O dispositivo de destino 102 pode incluir um analisador 122 acoplado a uma memória 176 ou em comunicação com a mesma. O dispositivo de destino 102 pode incluir um receptor 124, um transmissor 192, um armazenamento temporário 126, um decodificador de fala 156 ou uma combinação dos mesmos. A memória 176 pode ser configurada para armazenar dados de análise 120. Os dados de análise 120 podem incluir uma contagem de cópias parciais recuperadas 106, uma contagem de pacotes perdidos 114, uma contagem de retransmissão 154, uma métrica de qualidade 128, um limiar de acréscimo 136, um limiar de decréscimo 138, uma quantidade de acréscimo 140, uma quantidade de decréscimo 150, um valor de resultado 118, um parâmetro de recuperação de erro 108 ou uma combinação dos mesmos. O parâmetro de recuperação de erro 108 pode incluir uma profundidade de armazenamento temporário 110, um limiar de retransmissão 112 ou ambos.
[0040] O dispositivo de destino 102 pode incluir menos ou mais componentes do que os ilustrados na Figura 1. Por exemplo, o dispositivo de destino 102 pode incluir um ou mais processadores, uma ou mais unidades de memória ou ambos. O dispositivo de destino 102 pode incluir um sistema de computação em rede ou distribuído. Por exemplo, a memória 176 pode ser uma memória em rede ou distribuída. Em um aspecto ilustrativo em particular, o dispositivo de destino 102 pode incluir um dispositivo de comunicação, um decodificador, um telefone inteligente, um telefone celular, um dispositivo de comunicação móvel, um computador do tipo laptop, um computador, um computador do tipo tablet, um assistente digital pessoal (PDA), um decodificador de sinais, um reprodutor de vídeo, uma unidade de entretenimento, um dispositivo de exibição, uma televisão, um console de jogos, um reprodutor de música, um rádio, um reprodutor de vídeo digital, um reprodutor de disco de vídeo digital (DVD), um sintonizador, uma câmera, um dispositivo de navegação ou uma combinação dos mesmos. Tais dispositivos podem incluir uma interface de usuário (por exemplo, uma tela sensível ao toque, capacidade de reconhecimento de voz ou outras capacidades de interface de usuário).
[0041] Durante a operação, um primeiro usuário 152 pode estar envolvido em uma chamada de voz com um segundo usuário 194. O primeiro usuário 152 pode usar o dispositivo de destino 102 e o segundo usuário 194 pode usar o dispositivo de origem 104 para a chamada de voz. Durante a chamada de voz, o segundo usuário 194 pode falar no microfone 146 associado ao dispositivo de origem 104. Um sinal de fala de entrada 130 pode corresponder a uma porção de uma palavra, uma palavra ou múltiplas palavras faladas pelo segundo usuário 194. Por exemplo, o sinal de fala de entrada 130 pode incluir primeiros dados 164 e segundos dados 166. O dispositivo de origem 104 pode receber o sinal de fala de entrada 130, por meio do microfone 146, a partir do segundo usuário 194. Em um aspecto em particular, o microfone 146 pode capturar um sinal de áudio e um conversor de analógico para digital (ADC) pode converter o sinal de áudio capturado a partir de uma forma de onda analógica em uma forma de onda digital compreendida de amostras de áudio digital. As amostras de áudio digital podem ser processadas por um processador de sinal digital. Um ajustador de ganho pode ajustar um ganho (por exemplo, da forma de onda analógica ou a forma de onda digital) aumentando-se uma ou diminuindo-se um nível de amplitude de um sinal de áudio (por exemplo, a forma de onda analógica ou a forma de onda digital). Os ajustadores de ganho podem operar tanto no domínio analógico quanto no domínio digital. Por exemplo, um ajustador de ganho pode operar no domínio digital e podem ajustar as amostras de áudio digital produzidas pelo conversor de analógico em digital. Após o ajuste de ganho, um cancelador de eco pode reduzir um eco que pode ter sido criado por uma saída de um alto- falante que entra no microfone 146. As amostras de áudio digital podem ser "comprimidas" por um vocoder (um criptador-decodificador de voz). A saída do cancelador de eco pode ser acoplada a blocos de pré-processamento de vocoder, por exemplo, filtros, processadores de ruído, conversores de taxa, etc. Um encriptador do vocoder pode compactar as amostras de áudio digital e formar uma sequência de pacotes (por exemplo, um primeiro pacote 132 e um segundo pacote 134). Cada um dentre a sequência de pacotes pode incluir uma representação dos bits compactados das amostras de áudio digital. Por exemplo, o primeiro pacote 132 pode ser mais anterior na sequência de pacotes do que o segundo pacote 134. Para ilustrar isso, o primeiro pacote 132 pode incluir os primeiros dados 164 que correspondem a um quadro de áudio em particular (por exemplo, um quadro de áudio N) e o segundo pacote 134 pode incluir os segundos dados 166 que correspondem a um quadro de áudio subsequente (por exemplo, um quadro de áudio N+2).
[0042] Em um aspecto em particular, um pacote subsequente (por exemplo, o segundo pacote 134) também pode incluir dados redundantes (por exemplo, uma cópia parcial do primeiro pacote 132) que podem ser usados para reconstruir um quadro de áudio anterior (por exemplo, o quadro de áudio N). Por exemplo, o segundo pacote 134 pode incluir uma primeira cópia parcial 174 que corresponde pelo menos a uma porção dos primeiros dados 164. Em um aspecto em particular, os dados redundantes (por exemplo, a primeira cópia parcial 174) podem corresponder a um quadro de fala “crítico”. Por exemplo, uma perda do quadro de fala crítico pode causar uma degradação perceptível por usuário na qualidade de áudio de um sinal de fala processado gerado no dispositivo de destino 102.
[0043] Em um aspecto em particular, o dispositivo de origem 104 e o dispositivo de destino 102 podem operar em um canal de taxa de bits constante (por exemplo, 13,2 kilobits por segundo (kbps)). Nesse aspecto, uma taxa de bits de quadro primário que corresponde a dados primários (por exemplo, os segundos dados 166) pode ser reduzida (por exemplo, para 9,6 kbps) para acomodar os dados redundantes (por exemplo, a primeira cópia parcial 174). Por exemplo, uma taxa de bits restante (por exemplo, 3,6 kbps) da taxa de bits constante pode corresponder aos dados redundantes. Em um aspecto em particular, a redução da taxa de bits de quadro primário pode ser realizada no dispositivo de origem 104 dependendo das características do sinal de fala de entrada 130 para ter um impacto reduzido sobre a qualidade de fala geral.
[0044] A sequência de pacotes (por exemplo, os pacotes 132 e 134) pode ser armazenada em uma memória que pode ser compartilhada com um processador do dispositivo de origem 104. O processador pode ser um processador de controle que está em comunicação com um processador de sinal digital.
[0045] O dispositivo de origem 104 pode transmitir a sequência de pacotes (por exemplo, o primeiro pacote 132, o segundo pacote 134 ou ambos) para o dispositivo de destino 102 por meio da rede 190. Por exemplo, o dispositivo de origem 104 pode incluir um transceptor. O transceptor pode modular alguma forma da sequência de pacotes (por exemplo, outras informações podem ser anexas aos pacotes 132 e 134). O transceptor pode enviar as informações moduladas pelo ar por meio de uma antena.
[0046] O analisador 122 do dispositivo de destino 102 pode receber um ou mais pacotes (por exemplo, o primeiro pacote 132, o segundo pacote 134 ou ambos) da sequência de pacotes. Por exemplo, uma antena do dispositivo de destino 102 pode receber alguma forma de pacotes recebidos que incluem o primeiro pacote 132, o segundo pacote 134 ou ambos. O primeiro pacote 132, o segundo pacote 134 ou ambos podem ser “descompactados” por um decodificador de um vocoder no dispositivo de destino 102. A forma de onda descomprimida pode ser denominada de amostras de áudio reconstruídas. As amostras de áudio reconstruídas podem ser pós-processadas por blocos de pós- processamento de vocoder e um cancelador de eco pode remover eco com base nas amostras de áudio reconstruídas. A título de objetividade, o decodificador do vocoder e os blocos de pós-processamento de vocoder podem ser denominados de módulo de decodificador de vocoder. Em algumas configurações, uma saída do cancelador de eco pode ser processada pelo analisador 122. Alternativamente, em outras configurações, a saída do módulo de decodificador de vocoder pode ser processada pelo analisador 122.
[0047] O analisador 122 pode armazenar os pacotes (por exemplo, o primeiro pacote 132, o segundo pacote 134 ou ambos) recebidos pelo dispositivo de destino 102 no armazenamento temporário 126 (por exemplo, um armazenamento temporário de remoção de flutuação de fase). Em um aspecto em particular, os pacotes podem ser recebidos fora de ordem no dispositivo de destino 102. O analisador 122 pode reordenar um ou mais pacotes no armazenamento temporário 126 se os pacotes estiverem fora de ordem. Um ou mais pacotes da sequência de pacotes enviados pelo dispositivo de origem 104 podem não ser recebidos ou podem ser recebidos com erros pelo dispositivo de destino 102. Por exemplo, um pacote (por exemplo, o primeiro pacote 132) pode não ser recebido devido à perda de pacote ou pode ser parcialmente recebido, devido a condições de rede, pelo receptor 124.
[0048] O analisador 122 pode determinar se um pacote em particular da sequência de pacotes não está no armazenamento temporário 126. Por exemplo, cada pacote no armazenamento temporário 126 pode incluir um número de sequência. O analisador 122 pode manter um contador (por exemplo, um próximo número de sequência) nos dados de análise 120. Por exemplo, o próximo número de sequência pode ter um valor de início (por exemplo, 0). O analisador 122 pode atualizar (por exemplo, acrescentar por 1) o próximo número de sequência após processar cada pacote que corresponde a um sinal de entrada em particular (por exemplo, o sinal de fala de entrada 130). O analisador 122 pode redefinir o próximo número de sequência para o valor de início após processar um último pacote que corresponde ao sinal de entrada em particular (por exemplo, o sinal de fala de entrada 130).
[0049] O analisador 122 pode determinar que o armazenamento temporário 126 inclui um próximo pacote (por exemplo, o primeiro pacote 132) que tem o próximo número de sequência. O analisador 122 pode gerar um sinal de fala processado com base pelo menos no próximo pacote (por exemplo, o primeiro pacote 132). Em um aspecto em particular, o analisador 122 pode fornecer o primeiro pacote 132 para o decodificador de fala 156 e o decodificador de fala 156 pode gerar o sinal de fala processado. O analisador 122 (ou o decodificador de fala 156) pode gerar o sinal de fala processado com base no primeiro pacote 132 e no segundo pacote 134. O sinal de fala processado pode corresponder aos primeiros dados 164 do primeiro pacote 132 e aos segundos dados 166 do segundo pacote 134. O analisador 122 (ou o decodificador de fala 156) pode emitir o sinal de fala processado por meio do alto-falante 142 para o primeiro usuário 152. O analisador 122 pode atualizar (por exemplo, acrescentar ou redefinir) o próximo número de sequência.
[0050] O analisador 122 pode determinar se um pacote em particular (por exemplo, o primeiro pacote 132) da sequência de pacotes enviada pelo dispositivo de origem 104 não está no armazenamento temporário 126. Por exemplo, o analisador 122 pode determinar que o primeiro pacote 132 está faltando com base na determinação de que o armazenamento temporário 126 não armazena um próximo pacote (por exemplo, o primeiro pacote 132) que tem o próximo número de sequência. Para ilustrar isso, o analisador 122 pode determinar que o primeiro pacote 132 está faltando em resposta à determinação de que um pacote (por exemplo, o primeiro pacote 132) que corresponde ao próximo número de sequência não é encontrado no armazenamento temporário 126. O analisador 122 pode determinar se uma cópia parcial do primeiro pacote 132 está armazenada no armazenamento temporário 126 como dados de correção de erro em outro pacote (por exemplo, o segundo pacote 134) armazenado no armazenamento temporário 126. Por exemplo, um ou mais campos em um cabeçalho de cada pacote pode indicar se o pacote inclui dados de correção de erro e pode indicar um pacote correspondente. O analisador 122 pode examinar o campo em particular de um ou mais pacotes (por exemplo, o segundo pacote 134) armazenados no armazenamento temporário 126. Por exemplo, o armazenamento temporário 126 pode armazenar o segundo pacote 134. Um campo em particular no cabeçalho do segundo pacote 134 pode indicar que o segundo pacote 134 inclui dados de correção de erro que correspondem ao primeiro pacote 132. Por exemplo, o campo em particular pode indicar um número de sequência do primeiro pacote 132. O analisador 122 pode determinar que a cópia parcial do primeiro pacote 132 está armazenada no armazenamento temporário 126 com base na determinação de que o campo em particular do segundo pacote 134 indica o número de sequência do primeiro pacote 132. O analisador 122 pode atualizar a contagem de cópias parciais recuperadas 106 em resposta à determinação de que o primeiro pacote 132 não está no armazenamento temporário 126 e de que o armazenamento temporário 126 armazena a cópia parcial do primeiro pacote 132.
[0051] O analisador 122 pode gerar um sinal de fala processado 116 com base pelo menos no próximo pacote (por exemplo, o segundo pacote 134). Por exemplo, o analisador 122 pode gerar o sinal de fala processado 116 com base na primeira cópia parcial 174 e nos segundos dados 166. A primeira cópia parcial 174 pode incluir pelo menos uma porção dos primeiros dados 164 do primeiro pacote 132. Em um aspecto em particular, os primeiros dados 164 podem corresponder aos primeiros parâmetros de fala de um primeiro quadro de fala. A primeira cópia parcial 174 pode incluir os primeiros parâmetros de fala. Em um aspecto em particular, os segundos dados 166 podem corresponder a segundos parâmetros de fala de um segundo quadro de fala e a primeira cópia parcial 174 pode corresponder a uma diferença entre os primeiros parâmetros de fala e os segundos parâmetros de fala. Nesse aspecto, o analisador 122 pode gerar os primeiros parâmetros de fala com base em uma soma dos segundos parâmetros de fala e da primeira cópia parcial 174.
[0052] O analisador 122 pode gerar o sinal de fala processado 116 com base nos primeiros parâmetros de fala. Será observado que ter a primeira cópia parcial 174 como dados de correção de erro no segundo pacote 134 pode permitir a geração do sinal de fala processado 116 com base nos primeiros parâmetros de fala do quadro de fala em particular mesmo quando o primeiro pacote 132 que corresponde ao quadro de fala em particular não está no armazenamento temporário 126.
[0053] Em um aspecto em particular, o analisador 122 pode fornecer a primeira cópia parcial 174, o segundo pacote 134 ou os primeiros parâmetros de fala para o decodificador de fala 156 e o decodificador de fala 156 podem gerar o sinal de fala processado 116. O analisador 122 (ou o decodificador de fala 156) pode emitir o sinal de fala processado 116 por meio do alto-falante 142 para o primeiro usuário 152. O analisador 122 pode atualizar (por exemplo, acrescentar ou redefinir) o próximo número de sequência. O sinal de fala processado 116 pode ter uma qualidade de áudio melhor do que um sinal de fala processado gerado com base apenas nos segundos dados 166. Por exemplo, o sinal de fala processado 116 gerado com base na primeira cópia parcial 174 e os segundos dados 166 podem ter menos artefatos perceptíveis de usuário do que o sinal de fala processado gerado com base nos segundos dados 166 e sem base nos primeiros dados 164 (ou na primeira cópia parcial 174).
[0054] Em um aspecto em particular, o analisador 122 pode determinar que o primeiro pacote 132 e o segundo pacote 134 não estão no armazenamento temporário 126. Por exemplo, o analisador 122 pode determinar que o primeiro pacote 132 não está no armazenamento temporário 126 e que o armazenamento temporário 126 não armazena a cópia parcial do primeiro pacote 132 como dados de correção de erro em outro pacote. Para ilustrar isso, o analisador 122 pode determinar que o número de sequência do primeiro pacote 132 não é indicado pelo campo em particular de qualquer um dentre os pacotes que correspondem ao sinal de fala de entrada 130 que são armazenados no armazenamento temporário 126. O analisador 122 pode atualizar a contagem de pacotes perdidos 114 com base na determinação de que o primeiro pacote 132 e o segundo pacote 134 não estão no armazenamento temporário 126. Em um aspecto em particular, o analisador 122 pode atualizar (por exemplo, acrescentar por 1) a contagem de pacotes perdidos 114 para refletir que o primeiro pacote 132 não está no armazenamento temporário 126 e que o armazenamento temporário 126 não armazena um pacote (por exemplo, o segundo pacote 134) que inclui uma cópia parcial do primeiro pacote 132. O analisador 122 pode atualizar (por exemplo, acrescentar ou redefinir) o próximo número de sequência.
[0055] O analisador 122 pode ajustar o parâmetro de recuperação de erro 108 com base na contagem de pacotes perdidos 114, na contagem de cópias parciais recuperadas 106 ou em ambos, conforme descrito com referência às Figuras 2 a 3. Por exemplo, o analisador 122 pode determinar o valor de resultado 118 com base na contagem de pacotes perdidos 114, na contagem de cópias parciais recuperadas 106 ou em ambos. Em um aspecto em particular, o valor de resultado 118 pode ser uma soma ponderada da contagem de pacotes perdidos 114 e da contagem de cópias parciais recuperadas 106. Em um aspecto em particular, o analisador 122 pode determinar o valor de resultado 118 com base em uma soma da contagem de pacotes perdidos 114 (por exemplo, que têm um peso de 1) e um valor ponderado. O analisador 122 pode determinar o valor ponderado multiplicando-se a contagem de cópias parciais recuperadas 106 pela métrica de qualidade 128. A métrica de qualidade 128 pode ser um valor padrão, a um valor fornecido por usuário ou ambos. A métrica de qualidade 128 pode corresponder ao peso (por exemplo, maior ou igual a 0 e menor ou igual a 1) atribuído à contagem de cópias parciais recuperadas 106.
[0056] Em um aspecto em particular, a métrica de qualidade 128 pode ser uma medida de qualidade de cópias parciais recuperadas. Para ilustrar isso, quando a medição de qualidade das cópias parciais recuperadas é maior, a métrica de qualidade 128 pode corresponder a um peso menor. O analisador 122 pode determinar a medida de qualidade com base em uma diferença entre dados (por exemplo, parâmetros de fala) que corresponde a uma cópia parcial recuperada (por exemplo, a primeira cópia parcial 174) e dados anteriores (por exemplo, parâmetros de fala anteriores) recuperados a partir de um pacote anterior que corresponde a um quadro de áudio anterior. Por exemplo, o analisador 122 pode determinar a medida de qualidade com base em uma diferença entre os parâmetros de fala e os parâmetros de fala anteriores que satisfazem um limiar em particular. Se a cópia parcial recuperada (por exemplo, a primeira cópia parcial 174) corresponder a parâmetros suficientemente diferentes, então, gerar o sinal de fala processado 116 com base na cópia parcial recuperada (por exemplo, a primeira cópia parcial 174) pode aperfeiçoar significativamente a qualidade de áudio do sinal de fala processado 116 quando um pacote primário correspondente (por exemplo, o primeiro pacote 132) não é armazenado no armazenamento temporário 126. O analisador 122 pode determinar uma medida mais alta de qualidade quando a cópia parcial recuperada (por exemplo, a primeira cópia parcial 174) corresponde a parâmetros suficientemente diferentes do que o pacote anterior.
[0057] Em um aspecto em particular, a contagem de cópias parciais recuperadas 106 pode ser atribuída a um peso menor do que a contagem de pacotes perdidos 114. A atribuição de um peso menor à contagem de cópias parciais recuperadas pode permitir redundância parcial para reduzir um impacto de pacotes faltando correspondentes no ajuste do parâmetro de recuperação de erro. Será observado que ter redundância parcial pode permitir o uso de um armazenamento temporário menor, menos solicitações de retransmissão, ou ambos, do que não ter redundância.
[0058] O analisador 122 pode ajustar o parâmetro de recuperação de erro 108 (por exemplo, a profundidade de armazenamento temporário 110, o limiar de retransmissão 112, ou ambos) com base no valor de resultado 118. Por exemplo, o analisador 122 pode acrescentar o parâmetro de recuperação de erro 108 com base na quantidade de acréscimo 140 em resposta à determinação de que o valor de resultado 118 satisfaz o limiar de acréscimo 136, conforme descrito com referência às Figuras 2 a 3. Em um aspecto em particular, o valor de resultado 118 pode satisfazer o limiar de acréscimo 136 durante condições de alta perda de pacote que podem resultar em uma degradação perceptível em qualidade de áudio de sinais de fala processados. O analisador 122 pode acrescentar a profundidade de armazenamento temporário 110 para aumentar uma probabilidade de uma cópia parcial de um pacote perdido estar no armazenamento temporário como dados de correção de erro em outro pacote. O analisador 122 pode acrescentar o limiar de retransmissão 112 para permitir que o dispositivo de destino 102 envie mais mensagens de retransmissão (por exemplo, a mensagem de retransmissão 144) para o dispositivo de origem 104 para solicitar a retransmissão de pacotes perdidos. O dispositivo de destino 102 pode gerar sinal de fala processado com base em pacotes retransmitidos e uma qualidade de áudio dos sinais de fala processados pode ser aperfeiçoada.
[0059] Como outro exemplo, o analisador 122 pode decrescer o parâmetro de recuperação de erro 108 com base na quantidade de decréscimo 150 em resposta à determinação de que o valor de resultado 118 satisfaz o limiar de decréscimo 138, conforme descrito com referência às Figuras 2 a 3. Em um aspecto em particular, o valor de resultado 118 pode satisfazer o limiar de decréscimo 138 durante condições de baixa perda de pacote. O analisador 122 pode decrescer a profundidade de armazenamento temporário 110 para diminuir o uso de memória pelo armazenamento temporário 126. O analisador 122 pode decrescer o limiar de retransmissão 112 para reduzir um número de mensagens de retransmissão (por exemplo, a mensagem de retransmissão 144) enviadas pelo dispositivo de destino 102 para solicitar retransmissão de pacotes perdidos. Menos mensagens de retransmissão podem resultar em uso de largura de banda reduzido associado ao envio das mensagens de retransmissão e dos pacotes de retransmissão.
[0060] Em um aspecto em particular, o parâmetro de recuperação de erro 108 pode ter um valor máximo, um valor mínimo ou ambos. Nesse aspecto, o analisador 122 pode ajustar o parâmetro de recuperação de erro 108 dentro de uma faixa ligada pelo valor mínimo e pelo valor máximo.
[0061] Um ou mais dentre o limiar de acréscimo 136, o limiar de decréscimo 138, a quantidade de acréscimo 140 e a quantidade de decréscimo 150 podem ter valores distintos ou os mesmos valores para cada parâmetro de recuperação de erro. Por exemplo, um ou mais dentre o limiar de acréscimo 136, o limiar de decréscimo 138, a quantidade de acréscimo 140 e a quantidade de decréscimo 150 que correspondem à profundidade de armazenamento temporário 110 podem ser distintos de um ou mais dentre o limiar de acréscimo 136, o limiar de decréscimo 138, a quantidade de acréscimo 140 e a quantidade de decréscimo 150 que correspondem ao limiar de retransmissão 112.
[0062] O limiar de acréscimo 136, o limiar de decréscimo 138, a quantidade de acréscimo 140, a quantidade de decréscimo 150, ou uma combinação dos mesmos, podem ser valores padrões. Em um aspecto em particular, o analisador 122 pode determinar dinamicamente a quantidade de acréscimo 140, a quantidade de decréscimo 150 ou ambas. Por exemplo, o analisador 122 pode determinar a quantidade de acréscimo 140 com base em uma diferença entre o valor de resultado 118 e o limiar de acréscimo 136. Como outro exemplo, o analisador 122 pode determinar a quantidade de decréscimo 150 com base em uma diferença entre o valor de resultado 118 e o limiar de decréscimo 138.
[0063] Em um aspecto em particular, o analisador 122 pode determinar uma quantidade de ajuste do parâmetro de recuperação de erro 108 com base no valor de resultado 118 e pode atrasar o ajuste do parâmetro de recuperação de erro 108 com base na quantidade de ajuste para um momento posterior. Por exemplo, o analisador 122 pode determinar iterativamente a quantidade de ajuste com base em um primeiro número (por exemplo, 10) de pacotes e pode ajustar o parâmetro de recuperação de erro 108 subsequente para processar o primeiro número de pacotes. Como outro exemplo, o dispositivo de destino 102 pode receber pacotes em impulsos a partir do dispositivo de origem 104. Por exemplo, o segundo usuário 194 pode pausar entre falar e cada impulso de pacotes pode corresponder à fala do segundo usuário 194 entre pausas. O analisador 122 pode ajustar o parâmetro de recuperação de erro 108 com base na quantidade de ajuste durante uma pausa, de forma que um próximo impulso de pacotes possa ser processado com base no parâmetro de recuperação de erro ajustado 108 e de forma que o ajuste do parâmetro de recuperação de erro 108 possa não ser perceptível para um usuário.
[0064] Em um aspecto em particular, o analisador 122 pode solicitar a retransmissão de um pacote em particular (por exemplo, o primeiro pacote 132) com base na contagem de retransmissão 154, no limiar de retransmissão 112 ou em ambos. Por exemplo, o analisador 122 pode enviar uma mensagem de retransmissão 144, por meio do transmissor 192, para o dispositivo de origem 104 com base na determinação de que a contagem de retransmissão 154 satisfaz o limiar de retransmissão 112 e de que o primeiro pacote 132 não está no armazenamento temporário 126. A mensagem de retransmissão 144 pode solicitar a retransmissão do primeiro pacote 132.
[0065] A contagem de retransmissão 154 pode ter um valor inicial padrão. O analisador 122 pode atualizar a contagem de retransmissão 154 (por exemplo, acréscimo) com base no envio da mensagem de retransmissão 144. Em um aspecto em particular, a contagem de retransmissão 154 pode ser associada a um período de tempo em particular. Por exemplo, a contagem de retransmissão 154 pode indicar um número de mensagens de transmissão enviadas pelo analisador 122 durante o período de tempo em particular (por exemplo, 5 minutos anteriores).
[0066] O dispositivo de origem 104 pode retransmitir o primeiro pacote 132 em resposta ao recebimento da mensagem de retransmissão 144. Nesse aspecto, o analisador 122 pode receber o primeiro pacote retransmitido 132 e pode gerar um sinal de fala processado com base pelo menos nos primeiros dados 164 a partir do primeiro pacote retransmitido 132. Por exemplo, o analisador 122 pode gerar o sinal de fala processado com base nos primeiros dados 164 a partir do primeiro pacote retransmitido 132 e nos segundos dados 166 a partir do segundo pacote 134 em resposta à determinação de que o armazenamento temporário 126 armazena o segundo pacote 134. Em um aspecto em particular, pode haver um atraso de ida e volta (por exemplo, 8 milissegundos (ms) a 16 ms) associado ao envio da mensagem de retransmissão 144 e ao recebimento do primeiro pacote retransmitido 132. Por exemplo, pode haver um número máximo (por exemplo, 8) de instâncias de solicitação de repetição automática híbrida (HARQ) entre o dispositivo de origem 104 e o dispositivo de destino 102. O dispositivo de origem 104 pode enviar o primeiro pacote 132 durante uma primeira instância de HARQ. O dispositivo de destino 102 pode enviar a mensagem de retransmissão 144 durante uma segunda instância de HARQ. O dispositivo de origem 104 pode enviar o primeiro pacote retransmitido 132 durante uma terceira instância de HARQ. O atraso de ida e volta (por exemplo, 8 ms a 16 ms) pode corresponder a uma diferença temporal entre a primeira instância de HARQ e a terceira instância de HARQ.
[0067] Em uma implantação em particular, uma linha do tempo de transmissão pode ser particionada em unidades de subquadros. Cada subquadro pode cobrir uma duração de tempo predeterminada, por exemplo, 1 milissegundo (ms). O dispositivo de origem 104 pode ter dados para enviar para o dispositivo de destino 102 e pode processar o primeiro pacote 132 de acordo com um formato de transporte selecionado para obter símbolos de dados. Um formato de transporte pode corresponder a uma taxa, um formato de pacote, um esquema de modulação e codificação (MCS), etc. O dispositivo de origem 104 pode enviar uma primeira transmissão do primeiro pacote 132 assim como informações de controle para o dispositivo de destino 102 no subquadro t. As informações de controle podem indicar o formato de transporte selecionado, os recursos de rádio usados para transmissão de dados, etc. O dispositivo de destino 102 pode receber e processar a primeira transmissão de acordo com o formato de transporte selecionado. Se o dispositivo de destino 102 não tiver capacidade para decodificar de modo bem-sucedido o primeiro pacote 132 (por exemplo, um erro é encontrado ou o primeiro pacote 132 não é recebido quando se espera, o dispositivo de destino 102 pode enviar um reconhecimento negativo (NAK) no subquadro t+Δ.
[0068] O NAK atua como uma solicitação de retransmissão. Consequentemente, o dispositivo de origem 104 pode receber o NAK e enviar uma segunda transmissão do primeiro pacote 132 no subquadro t+M. O dispositivo de destino 102 pode tentar novamente decodificar o primeiro pacote 132. Se um erro ocorrer, o dispositivo de destino 102 pode enviar outro NAK (por exemplo, no subquadro t+M+Δ). Cada transmissão do primeiro pacote 132 após a transmissão inicial no subquadro t pode ser denominada como uma transmissão de HARQ e pode incluir informações de redundância diferentes (por exemplo, um conjunto diferente de símbolos de dados) para o primeiro pacote 132.
[0069] O sistema 100 pode suportar HARQ síncrono e/ou HARQ assíncrono. Para HARQ síncrono, as transmissões de um pacote (por exemplo, o primeiro pacote 132) podem ser enviadas em subquadros que são conhecidos a priori por um transmissor (por exemplo, o dispositivo de origem 104) e um receptor (por exemplo, o dispositivo de destino 102). Para HARQ assíncrono, as transmissões de um pacote (por exemplo, o primeiro pacote 132) podem ser agendadas e enviadas em um ou mais subquadros. Em uma implantação em particular, o sistema 100 pode suportar HARQ, solicitação de repetição automática (ARQ), outro protocolo de retransmissão ou uma combinação dos mesmos.
[0070] Em um aspecto em particular, o analisador 122 pode evitar a solicitação de retransmissão de um pacote em particular (por exemplo, o primeiro pacote 132) com base na determinação de que a contagem de retransmissão 154 falha ao satisfazer o limiar de retransmissão 112, de que o pacote em particular (por exemplo, o primeiro pacote 132) é armazenado no armazenamento temporário 126, de que uma cópia parcial (por exemplo, a primeira cópia parcial 174) do pacote em particular (por exemplo, o primeiro pacote 132) é armazenada no armazenamento temporário 126 ou uma combinação dos mesmos. Será observado que a geração do sinal de fala processado 116 com base no primeiro pacote retransmitido 132 pode resultar no sinal de fala processado 116 ter uma qualidade de áudio melhor, enquanto a geração do sinal de fala processado 116 com base na primeira cópia parcial 174 pode resultar no sinal de fala processado 116 que é gerado sem o atraso de ida e volta (por exemplo, 8 ms a 16 ms) associado à solicitação e ao recebimento do primeiro pacote retransmitido 132.
[0071] Em um aspecto em particular, o analisador 122 pode baixar um pacote com base na profundidade de armazenamento temporário 110. Por exemplo, o analisador 122 pode determinar que um número (ou tamanho total) de pacotes armazenados no armazenamento temporário 126 satisfaz a profundidade de armazenamento temporário 110. O analisador 122 pode, em resposta ao recebimento de um pacote subsequente, evitar o armazenamento do pacote subsequente no armazenamento temporário 126 ou pode remover um ou mais outros pacotes do armazenamento temporário 126. Por exemplo, o analisador 122 pode remover um pacote que esteve no armazenamento temporário 126 por uma maior duração, pode remover um pacote que não inclui dados de correção de erro que correspondem a outro pacote ou ambos.
[0072] Dessa forma, o sistema 100 pode permitir recuperação parcial de dados de um pacote perdido sem retransmissão do pacote perdido. Por exemplo, o analisador 122 pode recuperar a primeira cópia parcial 174 a partir do segundo pacote 134 em resposta à determinação de que o primeiro pacote 132 não é armazenado no armazenamento temporário 126. Outra vantagem em particular é ajustar dinamicamente um parâmetro de recuperação de erro com base em uma contagem de cópias parciais recuperadas, uma contagem de pacotes perdidos ou ambas. Por exemplo, o analisador 122 pode ajustar dinamicamente o parâmetro de recuperação de erro 108 com base na contagem de cópias parciais recuperadas 106, na contagem de pacotes perdidos 114 ou em ambas. Dessa forma, o parâmetro de recuperação de erro 108 pode ser responsivo a condições de rede, a um grau de redundância nos pacotes recebidos ou a ambos.
[0073] Referindo-se à Figura 2, um aspecto ilustrativo em particular de um método de recuperação de erro de transmissão de pacote com base em redundância é revelado e designado em geral 200. Em um aspecto em particular, o método 200 pode ser realizado pelo analisador 122 da Figura 1. A Figura 2 ilustra o ajuste da profundidade de armazenamento temporário 110 da Figura 1 com base na contagem de pacotes perdidos 114, na contagem de cópias parciais recuperadas 106 ou em ambas. Por exemplo, o ajuste da profundidade de armazenamento temporário 110 pode ser uma função da contagem de pacotes perdidos 114 (p), uma função da contagem de cópias parciais recuperadas 106 (q) ou uma função da contagem de pacotes perdidos 114 (p) e da contagem de cópias parciais recuperadas 106 (q).
[0074] O método 200 inclui receber, por um receptor, um quadro de fala criptado R(N) no tempo N, em 202. Por exemplo, o receptor 124 da Figura 1 pode receber um pacote em particular que corresponde a um quadro de áudio em particular do sinal de fala de entrada 130, conforme descrito com referência à Figura 1.
[0075] O método 200 também inclui determinar se um próximo quadro de fala R(N-D) está disponível em um armazenamento temporário de remoção de flutuação de fase, em 204. Por exemplo, o analisador 122 pode determinar se um próximo pacote está armazenado no armazenamento temporário 126, conforme descrito com referência à Figura 1. O próximo pacote pode ter um próximo número de sequência. Em um aspecto em particular, o analisador 122 pode determinar o próximo número de sequência acrescentando-se um número de sequência de um pacote anteriormente processado. Em um aspecto alternativo, o analisador 122 pode determinar o próximo número de sequência com base em uma diferença entre um número de sequência de um pacote recebido mais recentemente (por exemplo, N) e a profundidade de armazenamento temporário 110 (por exemplo, D). Nesse aspecto, a profundidade de armazenamento temporário 110 pode indicar um número máximo de pacotes que devem ser armazenados no armazenamento temporário 126. O analisador 122 pode determinar se o próximo pacote (por exemplo, o primeiro pacote 132) que corresponde ao próximo número de sequência está armazenado no armazenamento temporário 126.
[0076] O método 200 inclui adicionalmente, em resposta à determinação de que o próximo quadro de fala R(N-D) está disponível no armazenamento temporário de remoção de flutuação de fase, em 204, fornecer o próximo quadro de fala R(N-D) a um decodificador de fala, em 206. Por exemplo, o analisador 122 pode, em resposta à determinação de que o próximo pacote (por exemplo, o primeiro pacote 132) está armazenado no armazenamento temporário 126, fornecer o primeiro pacote 132 ao decodificador de fala 156, conforme descrito com referência à Figura 1.
[0077] O método 200 também inclui, em resposta à determinação de que o próximo quadro de fala R(N-D) está indisponível no armazenamento temporário de remoção de flutuação de fase, em 204, determinar se uma cópia parcial do próximo quadro de fala R(N-D) está disponível no armazenamento temporário de remoção de flutuação de fase, em 208. Por exemplo, o analisador 122 da Figura 1 pode, em resposta à determinação de que o primeiro pacote 132 não está armazenado no armazenamento temporário 126, determinar se uma cópia parcial do primeiro pacote 132 está armazenada no armazenamento temporário 126, conforme descrito com referência à Figura 1. Para ilustrar isso, o analisador 122 pode determinar se o segundo pacote 134 que tem a primeira cópia parcial 174 está armazenado no armazenamento temporário 126.
[0078] O método 200 inclui adicionalmente, em resposta à determinação de que a cópia parcial do próximo quadro de fala R(N-D) está disponível no armazenamento temporário de remoção de flutuação de fase, em 208, fornecer a cópia parcial do próximo quadro de fala R(N-D) ao decodificador de fala, em 206, e determinar um número (q) de cópias parciais que foram recuperadas durante M quadros anteriores, em 210. Por exemplo, o analisador 122 da Figura 1 pode, em resposta à determinação de que o segundo pacote 134 está incluído no armazenamento temporário 126 e de que o segundo pacote 134 inclui a primeira cópia parcial 174 do primeiro pacote 132, fornecer o segundo pacote 134 ao decodificador de fala 156. Em um aspecto em particular, o analisador 122 pode fornecer a primeira cópia parcial 174 ao decodificador de fala 156. O analisador 122 também pode atualizar a contagem de cópias parciais recuperadas 106, conforme descrito com referência à Figura 1. Por exemplo, a contagem de cópias parciais recuperadas 106 pode corresponder a um número em particular de quadros, um período de tempo em particular ou ambos. O número em particular (M) de quadros pode corresponder a um valor padrão. Em um aspecto em particular, o número em particular (M) de quadros pode ser selecionado pelo analisador 122 ou por um usuário (por exemplo, o primeiro usuário 152). Em um aspecto em particular, o número em particular (M) de quadros pode ser adaptativo. Por exemplo, o analisador 122 pode atualizar o número em particular (M) de quadros ao longo do tempo. Em um aspecto em particular, o analisador 122 pode atualizar o número em particular (M) de quadros com base em um número de vezes que a profundidade de armazenamento temporário 110 foi ajustada durante um período de tempo em particular (por exemplo, 5 minutos). Por exemplo, o analisador 122 pode atualizar (por exemplo, aumentar ou diminuir) o número em particular (M) de quadros em resposta à determinação de que o número de vezes que a profundidade de armazenamento temporário 110 foi ajustada durante o período de tempo em particular satisfaz um limiar de ajuste.
[0079] Em um aspecto em particular, a contagem de cópias parciais recuperadas 106 pode indicar um número de cópias parciais recuperadas fora de um número em particular (M) de pacotes processados mais recentemente. Por exemplo, fora do número em particular (por exemplo, dez) de pacotes processados mais recentemente pelo analisador 122, o analisador 122 pode ter recebido de modo bem-sucedido um primeiro número (por exemplo, 7) de pacotes, o analisador 122 pode ter cópias parciais recuperadas para um segundo número (por exemplo, 2) de pacotes que não foram recebidos de modo bem-sucedido pelo analisador 122 e cópias parciais podem ter estado indisponíveis para o número restante (por exemplo, 1) dos pacotes que não foram recebidos de modo bem-sucedido pelo analisador 122. Nesse exemplo, a contagem de cópias parciais recuperadas 106 pode indicar que cópias parciais foram recuperadas para o segundo número (por exemplo, 2) de pacotes fora do número em particular (por exemplo, 10) dos pacotes processados mais recentemente.
[0080] Em um aspecto alternativo, a contagem de cópias parciais recuperadas 106 pode indicar um número de cópias parciais recuperadas durante um período de tempo em particular (por exemplo, 5 minutos anteriores). Por exemplo, o analisador 122 pode receber um número em particular (por exemplo, 20) de pacotes durante o período de tempo em particular (por exemplo, os 5 minutos anteriores). Fora do número em particular (por exemplo, 20) de pacotes, o analisador 122 pode ter recebido de modo bem- sucedido um primeiro número (por exemplo, 12) de pacotes, o analisador 122 pode ter cópias parciais recuperadas para um segundo número (por exemplo, 6) de pacotes que não foram recebidos de modo bem-sucedido pelo analisador 122 e cópias parciais podem ter estado indisponíveis para o número restante (por exemplo, 2) dos pacotes que não foram recebidos de modo bem-sucedido pelo analisador 122. Nesse exemplo, a contagem de cópias parciais recuperadas 106 pode indicar que cópias parciais foram recuperadas para o segundo número (por exemplo, 6) de pacotes recebidos pelo analisador 122 durante o período de tempo em particular (por exemplo, os 5 minutos anteriores). O método 200 pode proceder para 214.
[0081] O método 200 também inclui, em resposta à determinação de que a cópia parcial do próximo quadro de fala R(N-D) está indisponível no armazenamento temporário de remoção de flutuação de fase, em 208, determinar um número (p) de pacotes perdidos durante os M quadros anteriores, em 212. Por exemplo, o analisador 122 da Figura 1 pode, em resposta à determinação de que o segundo pacote 134 não está armazenado no armazenamento temporário 126, atualizar a contagem de pacotes perdidos 114, conforme descrito com referência à Figura 1. Para ilustrar isso, o analisador 122 pode determinar que o armazenamento temporário 126 não armazena um pacote (por exemplo, o segundo pacote 134) que indica que uma cópia parcial (por exemplo, a primeira cópia parcial 174) do primeiro pacote 132 está incluída no pacote.
[0082] O método 200 inclui adicionalmente determinar um valor de resultado (r) com base no número (p) de pacotes perdidos durante os M quadros anteriores e o número (q) de cópias parciais que foram recuperadas durante M quadros anteriores, em 214. Por exemplo, o analisador 122 da Figura 1 pode determinar o valor de resultado 118 (r) com base na contagem de pacotes perdidos 114 (p), na contagem de cópias parciais recuperadas 106 (q) ou em ambas, conforme descrito com referência à Figura 1. No exemplo ilustrado na Figura 2, r = f (p, q). O valor de resultado 118 (r) pode ser uma função da contagem de pacotes perdidos 114 (p), uma função da contagem de cópias parciais recuperadas 106 (q) ou uma função da contagem de pacotes perdidos 114 (p) e da contagem de cópias parciais recuperadas 106 (q). Por exemplo, o valor de resultado 118 pode ser uma soma ponderada da contagem de pacotes perdidos 114 e da contagem de cópias parciais recuperadas 106.
[0083] O método 200 também inclui determinar se o valor de resultado (r) é maior que um limiar de acréscimo (T1), em 216. Por exemplo, o analisador 122 da Figura 1 pode determinar se o valor de resultado 118 satisfaz (por exemplo, é maior que) o limiar de acréscimo 136, conforme descrito com referência à Figura 1.
[0084] O método 200 inclui adicionalmente, em resposta à determinação de que o valor de resultado (r) é maior que o limiar de acréscimo (T1), em 216, determinar um valor de profundidade (Dnew) com base em uma soma de uma quantidade de acréscimo (Δn1) e uma profundidade (Dold) de um armazenamento temporário de remoção de flutuação de fase para próximo impulso de fala, em 222. Por exemplo, o analisador 122 da Figura 1, pode, em resposta à determinação de que o valor de resultado 118 satisfaz (por exemplo, é maior que) o limiar de acréscimo 136, determinar uma quantidade de ajuste (por exemplo, Dnew) com base em uma soma da quantidade de acréscimo 140 e da profundidade de armazenamento temporário 110 (por exemplo, Dold), conforme descrito com referência à Figura 1. O método 200 pode proceder para 224.
[0085] O método 200 também inclui, em resposta à determinação de que o valor de resultado (r) é menor ou igual ao limiar de acréscimo (T1), em 216, determinar se o valor de resultado (r) é menor que o limiar de decréscimo (T2), em 220. Por exemplo, o analisador 122 da Figura 1 pode, em resposta à determinação de que o valor de resultado 118 falha ao satisfazer (por exemplo, é menor ou igual a) o limiar de acréscimo 136, determinar se o valor de resultado 118 satisfaz (por exemplo, é menor que) o limiar de decréscimo 138, conforme descrito com referência à Figura 1.
[0086] O método 200 inclui adicionalmente, em resposta à determinação de que o valor de resultado (r) é menor que o limiar de decréscimo (T2), em 220, diminuir o valor de profundidade (Dnew) com base em uma diferença entre uma quantidade de decréscimo (Δn2) e a profundidade (Dold) do armazenamento temporário de remoção de flutuação de fase para o próximo impulso de fala, em 222. Por exemplo, o analisador 122 da Figura 1 pode, em resposta à determinação de que o valor de resultado 118 satisfaz (por exemplo, é menor que) o limiar de decréscimo 138, determinar a quantidade de ajuste (por exemplo, Dnew) com base em uma diferença entre a quantidade de decréscimo 150 e a profundidade de armazenamento temporário 110 (por exemplo, Dold), conforme descrito com referência à Figura 1.
[0087] O método 200 também inclui ajustar a profundidade do armazenamento temporário de remoção de flutuação de fase para o valor de profundidade (Dnew), em 224. Por exemplo, o analisador 122 da Figura 1 pode ajustar a profundidade de armazenamento temporário 110 com base na quantidade de ajuste (por exemplo, Dnew), conforme descrito com referência à Figura 1. O método 200 pode proceder para 202.
[0088] O método 200 também inclui, em resposta à determinação de que o valor de resultado (r) é maior ou igual ao limiar de decréscimo (T2), em 220, receber um pacote subsequente, em 202. Por exemplo, o analisador 122 da Figura 1 pode evitar o ajuste da profundidade de armazenamento temporário 110 em resposta à determinação de que o valor de resultado 118 falha ao satisfazer o limiar de acréscimo 136 e o limiar de decréscimo 138.
[0089] A profundidade de armazenamento temporário 110 (por exemplo, D) pode ter um primeiro valor de profundidade (por exemplo, Dold). Por exemplo, D = Dold. O analisador 122 pode determinar um segundo valor de profundidade (por exemplo, Dnew) com base, pelo menos em parte, no primeiro valor de profundidade (por exemplo, Dold). O analisador 122 pode ajustar a profundidade de armazenamento temporário 110 (por exemplo, D) com base no segundo valor de profundidade (por exemplo, Dnew). Por exemplo, D = Dnew subsequente ao ajuste da profundidade de armazenamento temporário 110.
[0090] O método 200 pode permitir o ajuste dinâmico da profundidade do armazenamento temporário de remoção de flutuação de fase com base em uma contagem de pacotes perdidos, uma contagem de cópias parciais recuperadas ou em ambas. A profundidade de armazenamento temporário pode ser responsiva às condições de rede. Durante condições de alta perda de pacote, a falta de redundância de dados ou ambas, a profundidade de armazenamento temporário pode ser aumentada para reduzir pacotes deixados em um dispositivo de destino, para aumentar uma probabilidade de encontrar cópias parciais de pacotes perdidos em um armazenamento temporário de remoção de flutuação de fase ou ambas. Alternativamente, durante condições de baixa perda de pacote, o alto grau de redundância de dados ou ambos, a profundidade de armazenamento temporário pode ser diminuída para reduzir o uso de memória pelo armazenamento temporário de remoção de flutuação de fase.
[0091] Com referência à Figura 3, um aspecto ilustrativo em particular de um método de recuperação de erro de transmissão de pacote com base em redundância é revelado e designado em geral 300. Em um aspecto em particular, o método 300 pode ser realizado pelo analisador 122 da Figura 1.
[0092] A Figura 3 ilustra o ajuste do limiar de retransmissão 112 da Figura 1 com base na contagem de pacotes perdidos 114, na contagem de cópias parciais recuperadas 106 ou em ambas. O método 300 inclui 202, 204, 206, 208, 210, 212, 214, 216 e 220 do método 200 da Figura 2.
[0093] O método 300 também inclui, em resposta à determinação de que uma cópia parcial de um próximo quadro de fala R(N-D) está indisponível em um armazenamento temporário de remoção de flutuação de fase, em 208, realizar análise de retransmissão, em 302. Por exemplo, o analisador 122 da Figura 1 pode realizar análise de retransmissão em resposta à determinação de que o armazenamento temporário 126 não armazena nem o primeiro pacote 132 nem outro pacote que indica que uma cópia parcial do primeiro pacote 132 está incluída no outro pacote, conforme descrito com referência à Figura 4.
[0094] O método 300 inclui adicionalmente, em resposta à determinação de que o valor de resultado (r) é maior que o limiar de acréscimo (T1), em 216, determinar um valor de retransmissão (RTnew) com base em uma soma de uma quantidade de acréscimo (Δn1) e um limiar de retransmissão (RTold), em 304. Por exemplo, o analisador 122 da Figura 1 pode, em resposta à determinação de que o valor de resultado 118 satisfaz (por exemplo, é maior que) o limiar de acréscimo 136, determinar uma quantidade de ajuste (por exemplo, RTnew) com base em uma soma da quantidade de acréscimo 140 e do limiar de retransmissão 112 (por exemplo, RTold), conforme descrito com referência à Figura 1. O método 300 pode proceder para 308.
[0095] O método 300 também inclui, em resposta à determinação de que o valor de resultado (r) é menor que o limiar de decréscimo (T2), em 220, diminuir o valor de retransmissão (RTnew) com base em uma diferença entre uma quantidade de decréscimo (Δn2) e o limiar de retransmissão (RTold), em 306. Por exemplo, o analisador 122 da Figura 1 pode, em resposta à determinação de que o valor de resultado 118 satisfaz (por exemplo, é menor que) o limiar de decréscimo 138, determinar a quantidade de ajuste (por exemplo, RTnew) com base em uma diferença entre a quantidade de decréscimo 150 e o limiar de retransmissão 112 (por exemplo, RTold), conforme descrito com referência à Figura 1.
[0096] O método 300 também inclui ajustar o valor de retransmissão para o valor de retransmissão (RTnew), em 308. Por exemplo, o analisador 122 da Figura 1 pode ajustar o limiar de retransmissão 112 com base na quantidade de ajuste (por exemplo, RTnew), conforme descrito com referência à Figura 1. O método 300 pode proceder para 202.
[0097] O limiar de retransmissão 112 (por exemplo, RT) pode ter um primeiro valor de limiar de retransmissão (por exemplo, RTold). Por exemplo, RT = RTold. O analisador 122 pode determinar um segundo valor de limiar de retransmissão (por exemplo, RTnew) com base, pelo menos em parte, no primeiro valor de retransmissão (por exemplo, RTold). O analisador 122 pode ajustar o limiar de retransmissão 112 (por exemplo, RT) com base no segundo valor de limiar de retransmissão (por exemplo, RTnew). Por exemplo, RT = RTnew subsequente ao ajuste do limiar de retransmissão 112. Em um aspecto em particular, o limiar de acréscimo (T1) da Figura 3 pode ser diferente do limiar de acréscimo (T1) da Figura 2. Em um aspecto alternativo, o limiar de acréscimo (T1) da Figura 3 pode ser o mesmo que o limiar de acréscimo (T1) da Figura 2. Em um aspecto em particular, o limiar de decréscimo (T2) da Figura 3 pode ser diferente do limiar de decréscimo (T2) da Figura 2. Em um aspecto alternativo, o limiar de decréscimo (T2) da Figura 3 pode ser o mesmo que o limiar de decréscimo (T2) da Figura 2.
[0098] O método 300 pode permitir o ajuste dinâmico de um limiar de retransmissão com base em uma contagem de pacotes perdidos, uma contagem de cópias parciais recuperadas ou em ambas. O limiar de retransmissão pode ser responsivo a condições de rede. Durante condições de alta perda de pacote, de falta de redundância de dados ou ambas, o limiar de retransmissão pode ser aumentado para permitir que o dispositivo de destino envie mais solicitações de retransmissão. Alternativamente, durante condições de baixa perda de pacote, de alto grau de redundância de dados ou ambos, o limiar de retransmissão pode ser diminuído para reduzir tráfego de rede de retransmissão, para reduzir o atraso ao gerar um sinal de fala processado ou ambos.
[0099] Com referência à Figura 4, um aspecto ilustrativo em particular de um método de recuperação de erro de transmissão de pacote com base em redundância é revelado e designado em geral 400. Em um aspecto em particular, o método 400 pode ser realizado pelo analisador 122 da Figura 1. Em um aspecto em particular, o método 400 pode corresponder a 302 da Figura 3.
[0100] O método 400 inclui determinar se uma contagem de retransmissão é menor que um limiar de retransmissão (RT), em 402. Por exemplo, o analisador 122 da Figura 1 pode determinar se a contagem de retransmissão 154 satisfaz (por exemplo, é menor que) o limiar de retransmissão 112, conforme descrito com referência à Figura 1.
[0101] O método 400 também inclui, em resposta à determinação de que a contagem de retransmissão é menor que o limiar de retransmissão (RT), em 402, enviar a mensagem de retransmissão, em 404, e acrescentar a contagem de retransmissão, em 406. Por exemplo, o analisador 122 da Figura 1 pode enviar a mensagem de retransmissão 144, em resposta à determinação de que a contagem de retransmissão 154 satisfaz (por exemplo, é menor que) o limiar de retransmissão 112, e pode atualizar (por exemplo, acrescentar) a contagem de retransmissão 154, conforme descrito com referência à Figura 1.
[0102] O método 400 inclui adicionalmente, em resposta à determinação de que a contagem de retransmissão é maior ou igual ao limiar de retransmissão (RT), em 402, evitar o envio de uma mensagem de retransmissão, em 408. Por exemplo, o analisador 122 pode evitar o envio de uma mensagem de retransmissão (por exemplo, a mensagem de retransmissão 144) em resposta à determinação de que a contagem de retransmissão 154 falha ao satisfazer (por exemplo, é maior ou igual a) o limiar de retransmissão 112, conforme descrito com referência à Figura 1.
[0103] O método 400 pode permitir, dessa forma, que um dispositivo de destino envie solicitações de retransmissão com base em um limiar de retransmissão dinamicamente ajustado. Um número de solicitações de retransmissão enviadas pelo dispositivo de destino e um número de pacotes retransmitidos por um dispositivo de origem pode ser responsivo às condições de rede. Durante condições de alta perda de pacote, de falta de redundância de dados ou ambas, o limiar de retransmissão pode ser aumentado para permitir que o dispositivo de destino envie mais solicitações de retransmissão para aumentar um número de pacotes retransmitidos para reduzir erros no sinal de fala processado. Alternativamente, durante condições de baixa perda de pacote, de alto grau de redundância de dados ou ambos, o limiar de retransmissão pode ser diminuído para reduzir o número de pacotes retransmitidos que resulta em uma redução no tráfego de rede de retransmissão, uma redução no atraso associado à geração do sinal de fala processado ou em ambas.
[0104] Com referência à Figura 5, um aspecto ilustrativo em particular de um sistema operável para realizar recuperação de erro com base em redundância é realizado e designado, em geral, 500. O sistema 500 pode ser diferente do sistema 100 da Figura 1 pelo fato de que o parâmetro de recuperação de erro 108 pode incluir um atraso de armazenamento temporário 512, conforme descrito no presente documento.
[0105] Uma sequência de pacotes pode corresponder ao sinal de fala de entrada 130. Cada pacote da sequência de pacotes pode incluir um número de sequência, conforme descrito com referência à Figura 1. Por exemplo, o primeiro pacote 132 pode incluir um primeiro número de sequência (por exemplo, um primeiro carimbo de data/hora de geração) e o segundo pacote 134 pode incluir um segundo número de sequência (por exemplo, um segundo carimbo de data/hora de geração). O primeiro carimbo de data/hora de geração pode indicar um primeiro tempo em que o primeiro pacote 132 é gerado pelo dispositivo de origem 104 e o segundo carimbo de data/hora de geração pode indicar um segundo tempo em que o segundo pacote 134 é gerado pelo dispositivo de origem 104. A primeira cópia parcial 174 pode incluir o primeiro número de sequência (por exemplo, o primeiro carimbo de data/hora de geração).
[0106] Cada pacote que é recebido pelo dispositivo de destino 102 pode ser atribuído a um carimbo de data/hora de recebimento pelo receptor 124, pelo analisador 122 ou por outro componente do dispositivo de destino 102. Por exemplo, o segundo pacote 134 pode ser atribuído a um segundo carimbo de data/hora de recebimento. O analisador 122 pode determinar um primeiro carimbo de data/hora de recebimento com base no segundo carimbo de data/hora de recebimento e pode atribuir o primeiro carimbo de data/hora de recebimento à primeira cópia parcial 174. O primeiro carimbo de data/hora de recebimento pode ser o mesmo ou diferente do segundo carimbo de data/hora de recebimento. Por exemplo, o primeiro carimbo de data/hora de recebimento pode indicar um primeiro tempo de recebimento que é anterior a um segundo tempo de recebimento indicado pelo segundo carimbo de data/hora de recebimento. Nesse exemplo, o primeiro tempo de recebimento pode corresponder a um tempo estimado em que o primeiro pacote 132 teria sido recebido de uma forma pontual. Para ilustrar isso, o primeiro tempo de recebimento pode corresponder a um tempo de recebimento estimado do primeiro pacote 132 se o primeiro pacote 132 não tiver sido atrasado ou perdido.
[0107] O analisador 122 pode processar um pacote com base em um carimbo de data/hora de recebimento associado ao pacote, o atraso de armazenamento temporário 512, uma linha do tempo de armazenamento temporário 504 e um último pacote reproduzido 506, conforme descrito no presente documento. O atraso de armazenamento temporário 512 pode corresponder a um tempo limítrofe que um pacote deve ser armazenado no armazenamento temporário 126. Por exemplo, o atraso de armazenamento temporário 512 pode indicar um primeiro tempo limítrofe (por exemplo, 5 milissegundos). Um pacote pode ser recebido em um primeiro tempo de recebimento (por exemplo, 1:00:00,000 PM). Um carimbo de data/hora de recebimento que indica o primeiro tempo de recebimento pode ser associado ao pacote. Um segundo tempo (por exemplo, 1:00:00,005 PM) pode corresponder a uma soma do primeiro tempo de recebimento indicado pelo carimbo de data/hora de recebimento e o atraso de armazenamento temporário 512. O pacote pode ser processado no segundo tempo ou subsequente ao mesmo.
[0108] A linha do tempo de armazenamento temporário 504 pode indicar um próximo pacote a ser processado. Por exemplo, a linha do tempo de armazenamento temporário 504 pode indicar um número de sequência de um pacote em particular que foi processado mais recentemente do armazenamento temporário 126 ou para o qual um apagamento foi reproduzido mais recentemente. Para ilustrar isso, o analisador 122 pode atualizar a linha do tempo de armazenamento temporário 504 para indicar um primeiro número de sequência de um pacote em resposta ao processamento do pacote a partir do armazenamento temporário 126, processar uma cópia parcial do pacote a partir do armazenamento temporário 126 ou reproduzir um apagamento que corresponde ao pacote. Nesse exemplo, o analisador 122 pode determinar um próximo número de sequência do próximo pacote a ser processado com base no número de sequência (por exemplo, o primeiro número de sequência) indicado pela linha do tempo de armazenamento temporário 504.
[0109] O último pacote reproduzido 506 pode indicar o pacote em particular que foi processado mais recentemente a partir do armazenamento temporário 126. O processamento do pacote em particular a partir do armazenamento temporário 126 pode incluir processar o pacote em particular a partir do armazenamento temporário 126 ou processar uma cópia parcial do pacote em particular a partir do armazenamento temporário 126. O analisador 122 pode atualizar o último pacote reproduzido 506 para indicar um primeiro número de sequência de um pacote em resposta ao processamento do pacote a partir do armazenamento temporário 126 ou ao processamento de uma cópia parcial do pacote a partir do armazenamento temporário 126.
[0110] O analisador 122 pode determinar que o último pacote reproduzido 506 indica um pacote anterior que foi processado mais recentemente a partir do armazenamento temporário 126 pelo analisador 122. O analisador 122 pode determinar que um pacote em particular (por exemplo, o primeiro pacote 132) é subsequente ao pacote anterior na sequência de pacotes. O analisador 122 pode determinar se um próximo pacote a ser processado indicado pela linha do tempo de armazenamento temporário 504 é o mesmo que o primeiro pacote 132 na sequência de pacotes ou subsequente ao mesmo. O analisador 122 pode, em aproximadamente um primeiro tempo de reprodução 502, reproduzir um apagamento em resposta à determinação de que o próximo pacote a ser processado, conforme indicado pela linha do tempo de armazenamento temporário 504, é anterior ao primeiro pacote 132 na sequência de pacotes.
[0111] O analisador 122 pode atualizar a linha do tempo de armazenamento temporário 504 subsequente à reprodução do apagamento. Por exemplo, a linha do tempo de armazenamento temporário 504 pode, antes do apagamento ser reproduzido, indicar que um primeiro pacote em particular é o próximo pacote a ser processado. O analisador 122 pode, subsequente à reprodução do apagamento, atualizar a linha do tempo de armazenamento temporário 504 para indicar que um segundo pacote em particular é o próximo pacote a ser processado. O segundo pacote em particular pode ser o próximo após o primeiro pacote em particular na sequência de pacotes.
[0112] Alternativamente, o analisador 122 pode, em resposta à determinação de que o próximo pacote a ser processado indicado pela linha do tempo de armazenamento temporário 504 é o mesmo que o primeiro pacote 132, ou subsequente ao mesmo, na sequência de pacotes, determinar se o armazenamento temporário 126 armazena o primeiro pacote 132 (ou a primeira cópia parcial 174). O analisador 122 pode, em resposta à determinação de que o armazenamento temporário 126 armazena a primeira cópia parcial 174, determinar que a primeira cópia parcial 174 é associada ao primeiro carimbo de data/hora de recebimento que indica o primeiro tempo de recebimento. O analisador 122 pode, em aproximadamente o primeiro tempo de reprodução 502, processar a primeira cópia parcial 174 a partir do armazenamento temporário 126 em resposta à determinação de que o primeiro tempo é maior ou igual a uma soma do primeiro tempo de recebimento e do atraso de armazenamento temporário 512. O atraso de armazenamento temporário 512 pode corresponder a um tempo limítrofe que um pacote deve ser armazenado no armazenamento temporário 126. Em uma implantação em particular, o analisador 122 pode processar a primeira cópia parcial 174 independentemente da possibilidade de a primeira cópia parcial 174 ter sido armazenada no armazenamento temporário 126 pelo tempo limítrofe. Nessa implantação, o primeiro tempo de recebimento pode ser anterior ao segundo tempo de recebimento. Por exemplo, o primeiro tempo de recebimento pode corresponder a um tempo de recebimento esperado do primeiro pacote 132 se o primeiro pacote 132 tiver sido recebido de uma forma pontual. O analisador 122 pode processar a primeira cópia parcial 174 em aproximadamente o primeiro tempo de reprodução em resposta à determinação de que o primeiro pacote 132 foi armazenado no armazenamento temporário 126 por pelo menos o tempo limítrofe se o primeiro pacote 132 tiver sido recebido na forma pontual. O atraso de armazenamento temporário 512 pode incluir um valor padrão, pode ser baseado em entrada de usuário a partir do primeiro usuário 152 ou ambos. O analisador 122 pode ajustar o atraso de armazenamento temporário 512, conforme descrito no presente documento. O analisador 122 pode, subsequente ao processamento da primeira cópia parcial 174 a partir do armazenamento temporário 126, atualizar o último pacote reproduzido 508 para indicar o primeiro pacote 132 e pode atualizar a linha do tempo de armazenamento temporário 504 para indicar um segundo pacote em particular (por exemplo, o segundo pacote 134) como o próximo pacote a ser processado. O segundo pacote em particular (por exemplo, o segundo pacote 134) pode ser o próximo após o primeiro pacote 132 na sequência de pacotes.
[0113] Em uma implantação em particular, o analisador 122 pode, em resposta à determinação de que o primeiro pacote 132 e a primeira cópia parcial 174 não estão no armazenamento temporário 126, realizar uma análise semelhante no segundo pacote em particular (por exemplo, o segundo pacote 134) conforme realizado no primeiro pacote 132. Por exemplo, o analisador 122 pode reproduzir um apagamento em resposta à determinação de que o próximo pacote a ser processado indicado pela linha do tempo de armazenamento temporário 504 é anterior ao segundo pacote em particular na sequência de pacotes e pode atualizar a linha do tempo de armazenamento temporário 504 subsequente à reprodução do apagamento. Alternativamente, o analisador 122 pode, em aproximadamente o primeiro tempo de reprodução 502, processar o segundo pacote em particular a partir do armazenamento temporário 126 em resposta à determinação de que o próximo pacote a ser processado indicado pela linha do tempo de armazenamento temporário 504 é o mesmo que o segundo pacote em particular ou subsequente ao mesmo, de que o segundo pacote em particular ou uma cópia parcial do segundo pacote em particular está armazenado no armazenamento temporário 126 e de que o primeiro tempo de reprodução 502 é maior ou igual a uma soma do atraso de armazenamento temporário 512 e de um tempo de recebimento em particular associado ao segundo pacote em particular.
[0114] O dispositivo de destino 102 pode receber a sequência de pacotes (por exemplo, o primeiro pacote 132, o segundo pacote 134 ou ambos) durante uma chamada telefônica. O primeiro pacote 132, o segundo pacote 134 ou ambos podem incluir dados de fala. O analisador 122 pode determinar ou atualizar o atraso de armazenamento temporário 512, conforme descrito no presente documento, em um início de um impulso de fala ou em um fim do impulso de fala durante a chamada telefônica. Um impulso de fala pode corresponder a um segmento contínuo de fala entre intervalos silenciosos durante os quais o ruído de fundo pode ser ouvido. Por exemplo, um primeiro impulso de fala pode corresponder à fala do primeiro usuário 152 e um segundo impulso de fala pode corresponder à fala do segundo usuário 154. O primeiro impulso de fala e o segundo impulso de fala podem ser separados por um período de silêncio ou de ruído de fundo.
[0115] O analisador 122 pode determinar uma taxa de perda de atraso anterior 552. A taxa de perda de atraso anterior 552 pode corresponder a uma taxa de perda de atraso determinada durante um ajuste anterior do atraso de armazenamento temporário 512 em um primeiro tempo de atualização. O analisador 122 pode manter uma contagem de pacotes de perda de atraso 510. A contagem de pacotes de perda de atraso 510 pode indicar um número de pacotes que são recebidos subsequente ao processamento de cópias parciais dos pacotes a partir do armazenamento temporário 126 em tempos de reprodução correspondentes. Os tempos de reprodução correspondentes podem ser subsequentes ao primeiro tempo de atualização. Por exemplo, o analisador 122 pode, subsequente ao primeiro tempo de atualização, processar a primeira cópia parcial 174 a partir do armazenamento temporário 126 em um primeiro tempo de reprodução associado ao primeiro pacote 132. O analisador 122 pode determinar que um primeiro tempo corresponde ao primeiro tempo de reprodução com base na determinação de que uma ou mais condições são satisfeitas. Por exemplo, o primeiro tempo pode corresponder ao primeiro tempo de reprodução se, no primeiro tempo, o último pacote reproduzido 506 for anterior ao primeiro pacote 132 e o primeiro pacote 132 for anterior ao o próximo pacote, ou igual ao mesmo, a ser processado conforme indicado pela linha do tempo de armazenamento temporário 504. O primeiro tempo pode corresponder ao primeiro tempo de reprodução se o primeiro tempo for maior ou igual a uma soma de um tempo de recebimento associado ao primeiro pacote 132 (por exemplo, o primeiro tempo de recebimento da primeira cópia parcial 174) e ao atraso de armazenamento temporário 512. O primeiro tempo pode corresponder ao primeiro tempo de reprodução se o primeiro pacote 132 for o pacote mais anterior na sequência de pacotes que satisfaz as condições precedentes no primeiro tempo. O analisador 122 pode atualizar (por exemplo, acrescentar) a contagem de pacotes de perda de atraso 510 em resposta ao recebimento o primeiro pacote 132 subsequente ao processamento da primeira cópia parcial 174.
[0116] O analisador 122 pode manter uma contagem de pacotes recebidos 514. Por exemplo, o analisador 122 pode redefinir a contagem de pacotes recebidos 514 subsequente ao primeiro tempo de atualização. O analisador 122 pode atualizar (por exemplo, acrescentar por 1) a contagem de pacotes recebidos 514 em resposta ao recebimento um pacote (por exemplo, o segundo pacote 134). O analisador 122 pode determinar uma segunda taxa de perda de atraso 554 com base na contagem de pacotes de perda de atraso 510 e na contagem de pacotes recebidos 514. Por exemplo, a segunda taxa de perda de atraso 554 pode corresponder a uma medida (por exemplo, uma razão) da contagem de pacotes de perda de atraso 510 e da contagem de pacotes recebidos 514. Para ilustrar isso, a segunda taxa de perda de atraso 554 pode indicar um número médio de pacotes de perda de atraso (por exemplo, pacotes que são recebidos subsequente ao processamento de cópias parciais dos pacotes) durante um intervalo de tempo em particular. A segunda taxa de perda de atraso 554 pode indicar flutuação de fase de rede durante o intervalo de tempo em particular. Uma diferença entre a taxa de perda de atraso anterior 552 e a segunda taxa de perda de atraso 554 pode indicar uma variação no atraso de pacotes recebidos. A diferença entre a taxa de perda de atraso anterior 552 e a segunda taxa de perda de atraso 554 pode indicar se o número médio de pacotes de perda de atraso está aumentando ou diminuindo.
[0117] O analisador 122 pode determinar uma taxa de perda de atraso 556 com base na taxa de perda de atraso anterior 552 e na segunda taxa de perda de atraso 554. Por exemplo, a taxa de perda de atraso 556 pode corresponder a uma soma ponderada da taxa de perda de atraso anterior 552 e da segunda taxa de perda de atraso 554. O analisador 122 pode atribuir um primeiro peso (por exemplo, 0,75) à taxa de perda de atraso anterior 552 e um segundo peso (por exemplo, 0,25) à segunda taxa de perda de atraso 554. O primeiro peso pode ser o mesmo ou diferente do segundo peso. Em uma implantação em particular, o primeiro peso pode ser maior que o segundo peso. A determinação da taxa de perda de atraso 556 com base na soma ponderada da taxa de perda de atraso anterior 552 e da segunda taxa de perda de atraso 554 pode reduzir oscilação na taxa de perda de atraso 556 com base em condições de rede temporárias. Por exemplo, o agrupamento de pacotes pode fazer com que um grande número de pacotes (por exemplo, 3) chegue ao mesmo tempo seguido por nenhuma chegada de pacote durante um intervalo subsequente. A segunda taxa de perda de atraso 554 pode flutuar de um primeiro tempo para um segundo tempo devido ao fato de que a segunda taxa de perda de atraso 554 determinada no primeiro tempo pode corresponder a um intervalo durante o qual um grande número de pacotes é recebido e a segunda taxa de perda de atraso 554 determinada no segundo tempo pode corresponder a um intervalo sem chagas de pacote. A determinação da taxa de perda de atraso 556 com base na soma ponderada da taxa de perda de atraso anterior 552 e da segunda taxa de perda de atraso 554 pode reduzir um efeito de agrupamento de pacote na taxa de perda de atraso 556.
[0118] O analisador 122 pode diminuir o atraso de armazenamento temporário 512 por uma quantidade de decréscimo 516 (por exemplo, 20 milissegundos) em resposta à determinação de que a taxa de perda de atraso 556 falha ao satisfazer (por exemplo, é menor que) uma taxa-alvo de perda de atraso 528 (por exemplo, 0,01). Por exemplo, a taxa-alvo de perda de atraso 528 pode corresponder a uma primeira porcentagem (por exemplo, 1 por cento) de pacotes de perda de atraso em relação a pacotes recebidos. O analisador 122 pode aumentar o atraso de armazenamento temporário 512 por uma quantidade de acréscimo 518 (por exemplo, 20 milissegundos) em resposta à determinação de que a taxa de perda de atraso 556 satisfaz (por exemplo, é maior que) a taxa-alvo de perda de atraso 528, de que a taxa de perda de atraso 556 é maior ou igual à taxa de perda de atraso anterior 552 ou ambas. A quantidade de decréscimo 516, a quantidade de acréscimo 518, a taxa-alvo de perda de atraso 528 ou uma combinação dos mesmos pode incluir valores padrões, pode ser baseada na entrada de usuário a partir do primeiro usuário 152 ou ambos. A quantidade de decréscimo 516 pode ser a mesma ou diferente da quantidade de acréscimo 518.
[0119] O analisador 122 pode definir o atraso de armazenamento temporário 512 para um máximo do atraso de armazenamento temporário 512 e um limite inferior de atraso 538 (por exemplo, 20 milissegundos). Por exemplo, o analisador 122 pode definir o atraso de armazenamento temporário 512 para o limite inferior de atraso 538 em resposta à determinação de que o atraso de armazenamento temporário 512 é menor que o limite inferior de atraso 538. O analisador 122 pode definir o atraso de armazenamento temporário 512 para um mínimo do atraso de armazenamento temporário 512 e um limite superior de atraso 536 (por exemplo, 80 milissegundos). Por exemplo, o analisador 122 pode definir o atraso de armazenamento temporário 512 para o limite superior de atraso 536 em resposta à determinação de que o atraso de armazenamento temporário 512 excede o limite superior de atraso 536. O limite inferior de atraso 538, o limite superior de atraso 536 ou ambos podem ser valores padrões, podem ser baseados na entrada de usuário a partir do primeiro usuário 152 ou ambos.
[0120] O sistema 500 pode fornecer, desse modo, um equilíbrio entre ter um longo atraso de armazenamento temporário, de forma que seja provável que pacotes atrasados sejam recebidos antes dos tempos de reprodução correspondentes, e um curto atraso de armazenamento temporário que reduz um atraso de ponta a ponta associado a uma sequência de pacotes.
[0121] Com referência à Figura 6, um fluxograma de um aspecto ilustrativo em particular de um método de recuperação de erro de transmissão de pacote com base em redundância é mostrado e é designado, em geral, 600. Em um aspecto em particular, o método 600 pode ser executado pelo analisador 122 da Figura 1.
[0122] O método 600 inclui determinar se um pacote em particular de uma sequência de pacotes não está em um armazenamento temporário, em 602. Por exemplo, o analisador 122 da Figura 1 pode determinar se um pacote em particular (por exemplo, o primeiro pacote 132) de uma sequência de pacotes não está no armazenamento temporário 126, conforme descrito com referência à Figura 1.
[0123] O método 600 também inclui, em resposta à determinação de que o pacote em particular não está no armazenamento temporário, em 602, enviar o pacote em particular para um decodificador de fala, em 604. Por exemplo, o analisador 122 da Figura 1 pode enviar o primeiro pacote 132 para o decodificador de fala 156 em resposta à determinação de que o primeiro pacote 132 não está faltando no armazenamento temporário 126, conforme descrito com referência à Figura 1.
[0124] O método 600 inclui adicionalmente, em resposta à determinação de que o pacote em particular não está no armazenamento temporário, em 602, determinar se uma cópia parcial do pacote em particular está armazenada no armazenamento temporário como dados de correção de erro em outro pacote, em 606. Por exemplo, o analisador 122 da Figura 1 pode, em resposta à determinação de que o primeiro pacote 132 não está no armazenamento temporário 126, determinar se uma cópia parcial (por exemplo, a primeira cópia parcial 174) do primeiro pacote 132 está armazenada no armazenamento temporário como dados de correção de erro em outro pacote (por exemplo, o segundo pacote 134), conforme descrito com referência à Figura 1.
[0125] O método 600 também inclui, em resposta à determinação de que a cópia parcial está armazenada no armazenamento temporário, em 606, atualizar uma contagem de cópias parciais recuperadas, em 608. O método 600 pode proceder para 610. Por exemplo, o analisador 122 da Figura 1 pode atualizar a contagem de contagem de cópias parciais recuperadas 106 em resposta à determinação de que o segundo pacote 134 que inclui a primeira cópia parcial 174 está armazenado no armazenamento temporário 126, conforme descrito com referência à Figura 1.
[0126] O método 600 inclui adicionalmente, em resposta à determinação de que a cópia parcial não está armazenada no armazenamento temporário, em 606, atualizar uma contagem de pacotes perdidos, em 612. Por exemplo, o analisador 122 da Figura 1 pode atualizar a contagem de pacotes perdidos 114 em resposta à determinação de que o segundo pacote 134 que inclui a primeira cópia parcial 174 não está armazenado no armazenamento temporário 126, conforme descrito com referência à Figura 1.
[0127] O método 600 também inclui ajustar um parâmetro de recuperação de erro com base na contagem de cópias parciais recuperadas, na contagem de pacotes perdidos ou ambos, em 610. Por exemplo, o analisador 122 da Figura 1 pode ajustar o parâmetro de recuperação de erro 108 com base na contagem de cópias parciais recuperadas 106, na contagem de pacotes perdidos 114 ou em ambas.
[0128] O método 600 inclui adicionalmente determinar se uma contagem de retransmissão é menor que um limiar de retransmissão, em 614. Por exemplo, o analisador 122 da Figura 1 pode determinar se a contagem de retransmissão 154 satisfaz (por exemplo, é menor que) o limiar de retransmissão 112, conforme descrito com referência às Figuras 1 e 4.
[0129] O método 600 também inclui, em resposta à determinação de que a contagem de retransmissão é menor que o limiar de retransmissão, em 614, enviar uma mensagem de retransmissão para um dispositivo de origem, em 616, e atualizar a contagem de retransmissão, em 618. Por exemplo, o analisador 122 da Figura 1 pode, em resposta à determinação de que a contagem de retransmissão 154 satisfaz (por exemplo, é menor que) o limiar de retransmissão 112, enviar a mensagem de retransmissão 144 para o dispositivo de origem 104 e atualizar a contagem de retransmissão 154, conforme descrito com referência à Figura 1. A solicitação de retransmissão pode solicitar retransmissão do pacote em particular.
[0130] O método 600 inclui adicionalmente, em resposta à determinação de que a contagem de retransmissão é maior ou igual ao limiar de retransmissão, em 614, evitar o envio da mensagem de retransmissão para o dispositivo de origem, em 620. Por exemplo, o analisador 122 da Figura 1 pode evitar o envio da mensagem de retransmissão 144 para o dispositivo de origem 104, em resposta à determinação de que a contagem de retransmissão 154 falha ao satisfazer (por exemplo, é maior ou igual a) o limiar de retransmissão 112, conforme descrito com referência à Figura 1.
[0131] O método 600 pode permitir, dessa forma, um ajuste dinâmico de um parâmetro de recuperação de erro com base em uma contagem de pacotes perdidos, em uma contagem de cópias parciais recuperadas ou em ambas.
[0132] O método 600 da Figura 6 pode ser implantado por um dispositivo de matriz de porta programável em campo (FPGA), um circuito integrado de aplicação específica (ASIC), uma unidade de processamento, tal como uma unidade de processamento central (CPU), um processador de sinal digital (DSP), um controlador, outro dispositivo de hardware, dispositivo de firmware ou qualquer combinação dos mesmos. Como um exemplo, o método 600 da Figura 6 pode ser realizado por um processador que executa instruções, conforme descrito em relação à Figura 9.
[0133] Com referência à Figura 7, um fluxograma de um aspecto ilustrativo em particular de um método de recuperação de erro de transmissão de pacote com base em redundância é mostrado e é designado, em geral, 700. Em um aspecto em particular, o método 700 pode ser executado pelo analisador 122 da Figura 1. Em um aspecto em particular, o método 700 pode corresponder a 610 da Figura 6.
[0134] O método 700 inclui gerar um valor ponderado multiplicando-se uma contagem de cópias parciais recuperadas por uma métrica de qualidade, em 702. Por exemplo, o analisador 122 da Figura 1 pode gerar um valor ponderado multiplicando-se a contagem de cópias parciais recuperadas 106 pela métrica de qualidade 128, conforme descrito com referência à Figura 1.
[0135] O método 700 também inclui gerar um valor de resultado somando-se uma contagem de pacotes perdidos e o valor ponderado, em 704. Por exemplo, o analisador 122 da Figura 1 pode gerar o valor de resultado 118 somando-se a contagem de pacotes perdidos 114 e o valor ponderado, conforme descrito com referência à Figura 1.
[0136] O método 700 inclui adicionalmente determinar se o valor de resultado é maior que um limiar de acréscimo, em 706. Por exemplo, o analisador 122 da Figura 1 pode determinar se o valor de resultado 118 satisfaz (por exemplo, é maior que) o limiar de acréscimo 136.
[0137] O método 700 também inclui, em resposta à determinação de que o valor de resultado é maior que o limiar de acréscimo, em 706, determinar uma quantidade de acréscimo com base em uma diferença entre o valor de resultado e o limiar de acréscimo, em 708. Por exemplo, o analisador 122 da Figura 1 pode, em resposta à determinação de que o valor de resultado 118 satisfaz (por exemplo, é maior que) o limiar de acréscimo 136, determinar a quantidade de acréscimo 140 com base em uma diferença entre o valor de resultado 118 e o limiar de acréscimo 136.
[0138] O método 700 inclui adicionalmente ajustar um parâmetro de recuperação de erro com base na quantidade de acréscimo, em 710. Por exemplo, o analisador 122 da Figura 1 pode ajustar o parâmetro de recuperação de erro 108 com base na quantidade de acréscimo 140, conforme descrito com referência à Figura 1.
[0139] O método 700 também inclui, em resposta à determinação de que o valor de resultado é menor ou igual ao limiar de acréscimo, em 706, determinar se o valor de resultado é menor que um limiar de decréscimo, em 712. Por exemplo, o analisador 122 da Figura 1 pode, em resposta à determinação de que o valor de resultado 118 falha ao satisfazer (por exemplo, é menor ou igual a) o limiar de acréscimo 136, determinar se o valor de resultado 118 satisfaz (por exemplo, é menor que) o limiar de decréscimo 138, conforme descrito com referência à Figura 1.
[0140] O método 700 inclui adicionalmente, em resposta à determinação de que o valor de resultado é maior ou igual ao limiar de decréscimo, em 712, evitar o ajuste do parâmetro de recuperação de erro, em 714. Por exemplo, o analisador 122 da Figura 1 pode, em resposta à determinação de que o valor de resultado 118 falhar ao satisfazer (por exemplo, é maior ou igual a) o limiar de decréscimo 138, evitar o ajuste do parâmetro de recuperação de erro 108, conforme descrito com referência à Figura 1.
[0141] O método 700 também inclui, em resposta à determinação de que o valor de resultado é menor que o limiar de decréscimo, em 712, determinar uma quantidade de decréscimo com base em uma diferença entre o valor de resultado e o limiar de decréscimo, em 716. Por exemplo, o analisador 122 da Figura 1 pode, em resposta à determinação de que o valor de resultado 118 satisfaz (por exemplo, é menor que) o limiar de decréscimo 138, determinar a quantidade de decréscimo 150 com base em uma diferença entre o valor de resultado 118 e o limiar de decréscimo 138.
[0142] O método 700 inclui adicionalmente ajustar o parâmetro de recuperação de erro com base na quantidade de decréscimo, em 718. Por exemplo, o analisador 122 da Figura 1 pode ajustar o parâmetro de recuperação de erro 108 com base na quantidade de decréscimo 150, conforme descrito com referência à Figura 1.
[0143] O método 700 pode permitir, dessa forma, um ajuste dinâmico de um parâmetro de recuperação de erro com base em uma contagem de pacotes perdidos, em uma contagem de cópias parciais recuperadas ou em ambas.
[0144] O método 700 da Figura 7 pode ser implantado por um dispositivo de matriz de porta programável em campo (FPGA), um circuito integrado de aplicação específica (ASIC), uma unidade de processamento, tal como uma unidade de processamento central (CPU), um processador de sinal digital (DSP), um controlador, outro dispositivo de hardware, dispositivo de firmware ou qualquer combinação dos mesmos. Como um exemplo, o método 700 da Figura 7 pode ser realizado por um processador que executa instruções, conforme descrito em relação à Figura 9.
[0145] Com referência à Figura 8, um fluxograma de um aspecto ilustrativo em particular de um método de recuperação de erro de transmissão de pacote com base em redundância é mostrado e é designado, em geral, 800. Em um aspecto em particular, o método 800 pode ser executado pelo analisador 122 das Figuras 1 e 5.
[0146] O método 800 inclui determinar uma primeira taxa de perda de atraso que corresponde a um ajuste anterior de um parâmetro de recuperação de erro em um primeiro tempo de atualização, em 802. Por exemplo, o analisador 122 pode determinar a taxa de perda de atraso anterior 552, conforme descrito com referência à Figura 5. A taxa de perda de atraso anterior 552 pode corresponder a um ajuste anterior do parâmetro de recuperação de erro 108 (por exemplo, o atraso de armazenamento temporário 512) em um primeiro tempo de atualização.
[0147] O método 800 também inclui determinar uma segunda taxa de perda de atraso que corresponde a pacotes particulares de uma pluralidade de pacotes, em 804. Por exemplo, o analisador 122 pode determinar a segunda taxa de perda de atraso 554, conforme descrito com referência à Figura 5. A segunda taxa de perda de atraso 554 pode corresponder a pacotes particulares de uma pluralidade de pacotes associada ao sinal de fala de entrada 130. Os pacotes particulares podem ter tempos de reprodução subsequentes ao primeiro tempo de atualização.
[0148] O método 800 inclui adicionalmente determinar uma taxa de perda de atraso com base em uma soma ponderada da primeira taxa de perda de atraso e da segunda taxa de perda de atraso, em 806. Por exemplo, o analisador 122 pode determinar a taxa de perda de atraso 556 com base em uma soma ponderada da taxa de perda de atraso anterior 552 e da segunda taxa de perda de atraso 554, conforme descrito com referência à Figura 5.
[0149] O método 800 também inclui determinar se a taxa de perda de atraso é menor que uma taxa-alvo de perda de atraso, em 810. Por exemplo, o analisador 122 pode determinar se a taxa de perda de atraso 556 é menor que a taxa-alvo de perda de atraso 528, conforme descrito com referência à Figura 5.
[0150] O método 800 inclui adicionalmente, em resposta à determinação de que a taxa de perda de atraso é menor que a taxa-alvo de perda de atraso, em 810, decrescer um atraso de armazenamento temporário por uma quantidade de decréscimo, em 812. Por exemplo, o analisador 122 pode, em resposta à determinação de que a taxa de perda de atraso 556 é menor que a taxa-alvo de perda de atraso 528, diminuir o atraso de armazenamento temporário 512 pela quantidade de decréscimo 516, conforme descrito com referência à Figura 5. O método 800 pode proceder para 818.
[0151] O método 800 também inclui, em resposta à determinação de que a taxa de perda de atraso é maior ou igual à taxa-alvo de perda de atraso, em 810, determinar se a taxa de perda de atraso é maior que a taxa-alvo de perda de atraso e se a taxa de perda de atraso é maior que a primeira taxa de perda de atraso, em 814. Por exemplo, o analisador 122 pode, em resposta à determinação de que a taxa de perda de atraso 556 é maior ou igual à taxa-alvo de perda de atraso 528, determinar se a taxa de perda de atraso 556 é maior que a taxa-alvo de perda de atraso 528 e se a taxa de perda de atraso 556 é maior que a taxa de perda de atraso anterior 552, conforme descrito com referência à Figura 5. O método 800 pode, em resposta à determinação de que a taxa de perda de atraso é igual à taxa-alvo de perda de atraso ou de que a taxa de perda de atraso é menor ou igual à primeira taxa de perda de atraso, em 814, proceder para 818.
[0152] O método 800 inclui adicionalmente, em resposta à determinação de que a taxa de perda de atraso é maior que a taxa-alvo de perda de atraso e de que a taxa de perda de atraso é maior que a primeira taxa de perda de atraso, em 814, acrescentar o atraso de armazenamento temporário por uma quantidade de acréscimo, em 816. Por exemplo, o analisador 122 pode, em resposta à determinação de que a taxa de perda de atraso 556 é maior que a taxa- alvo de perda de atraso 528 e de que a taxa de perda de atraso 556 é maior que a taxa de perda de atraso anterior 552, aumentar o atraso de armazenamento temporário 512 pela quantidade de acréscimo 518, conforme descrito com referência à Figura 5. Em uma implantação em particular, o analisador 122 pode, em resposta à determinação de que a taxa de perda de atraso 556 é maior que a taxa-alvo de perda de atraso 528, aumentar o atraso de armazenamento temporário 512 pela quantidade de acréscimo 518.
[0153] O método 800 também inclui definir o atraso de armazenamento temporário para um máximo de um limite inferior de atraso e do atraso de armazenamento temporário, em 818. Por exemplo, o analisador 122 pode definir o atraso de armazenamento temporário 512 para um máximo do limite inferior de atraso 538 e do atraso de armazenamento temporário 512, conforme descrito com referência à Figura 5.
[0154] O método 800 inclui adicionalmente definir o atraso de armazenamento temporário para um mínimo de um limite superior de atraso e do atraso de armazenamento temporário, em 820. Por exemplo, o analisador 122 pode definir o atraso de armazenamento temporário 512 para um mínimo do limite superior de atraso 536 e do atraso de armazenamento temporário 512, conforme descrito com referência à Figura 5.
[0155] O método 800 pode permitir, dessa forma, o ajuste dinâmico de um parâmetro de recuperação de erro (por exemplo, um atraso de armazenamento temporário) com base em uma taxa de perda de atraso e em uma taxa-alvo de perda de atraso. A taxa de perda de atraso pode corresponder a um número de pacotes de perda de atraso em relação a um número de pacotes recebidos. Os pacotes de perda de atraso podem incluir pacotes que são recebidos subsequente ao processamento de cópias parciais dos pacotes em tempos de reprodução correspondentes. O ajuste dinâmico do atraso de armazenamento temporário com base na taxa de perda de atraso e na taxa-alvo de perda de atraso pode fornecer um equilíbrio entre ter um longo atraso de armazenamento temporário, de forma que seja provável que pacotes atrasados sejam recebidos antes dos tempos de reprodução correspondentes, e um curto atraso de armazenamento temporário que reduz um atraso de ponta a ponta associado a uma sequência de pacotes.
[0156] O método 800 da Figura 8 pode ser implantado por um dispositivo de matriz de porta programável em campo (FPGA), um circuito integrado de aplicação específica (ASIC), uma unidade de processamento, tal como uma unidade de processamento central (CPU), um processador de sinal digital (DSP), um controlador, outro dispositivo de hardware, dispositivo de firmware ou qualquer combinação dos mesmos. Como um exemplo, o método 800 da Figura 8 pode ser realizado por um processador que executa instruções, conforme descrito em relação à Figura 9.
[0157] Com referência à Figura 9, um diagrama de blocos de um aspecto ilustrativo em particular de um dispositivo (por exemplo, um dispositivo de comunicação sem fio) é retratado e designado, em geral, 900. Em diversos aspectos, o dispositivo 900 pode ter mais ou menos componentes do que ilustrado na Figura 9. Em um aspecto ilustrativo, o dispositivo 900 pode corresponder ao dispositivo de destino 102, ao dispositivo de origem 104 da Figura 1 ou ambos. Em um aspecto ilustrativo, o dispositivo 900 pode realizar uma ou mais operações descritas com referência às Figuras 1 a 8.
[0158] Em um aspecto em particular, o dispositivo 900 inclui um processador 906 (por exemplo, uma unidade de processamento central (CPU)). O dispositivo 900 pode incluir um ou mais processadores adicionais 910 (por exemplo, um ou mais processadores de sinal digital (DSPs)). Os processadores 910 podem incluir um codificador- decodificador de fala e de música (CODEC) 908 e um cancelador de eco 912. O CODEC de fala e de música 908 pode incluir um encriptador de vocoder 936, um decodificador de vocoder 938 ou ambos.
[0159] O dispositivo 900 pode incluir uma memória 176 e um CODEC 934. A memória 176 pode incluir os dados de análise 120. O dispositivo 900 pode incluir um controlador sem fio 940 acoplado, por meio de um transceptor 950, a uma antena 942. Em um aspecto em particular, o transceptor 950 pode incluir o receptor 124, o transmissor 192 ou ambos da Figura 1.
[0160] O dispositivo 900 pode incluir um visor 928 acoplado a um controlador de visor 926. O alto-falante 142 da Figura 1, o microfone 946 ou ambos podem ser acoplados ao CODEC 934. O CODEC 934 pode incluir um conversor de digital para analógico 902 e um conversor de analógico para digital 904. Em um aspecto ilustrativo, o microfone 946 pode corresponder ao microfone 146 da Figura 1. Em um aspecto em particular, o CODEC 934 pode receber sinais analógicos a partir do microfone 946, converter os sinais analógicos para sinais digitais com o uso do conversor de analógico para digital 904 e fornecer os sinais digitais para o codec de fala e de música 908. O CODEC de fala e de música 908 pode processar os sinais digitais. Em um aspecto em particular, o codec de fala e de música 908 pode fornecer sinais digitais ao CODEC 934. O CODEC 934 pode converter os sinais digitais em sinais analógicos com o uso do conversor de digital em analógico 902 e pode fornecer os sinais analógicos aos alto-falante 142.
[0161] O dispositivo 900 pode incluir o analisador 122, o armazenamento temporário 126, o decodificador de fala 156 ou uma combinação dos mesmos. Em um aspecto em particular, o analisador 122, o decodificador de fala 156 ou ambos podem ser incluídos no processador 906, nos processadores 910, no CODEC 934, no codec de fala e de música 908 ou em uma combinação dos mesmos. Em um aspecto em particular, o analisador 122, o decodificador de fala 156 ou ambos podem ser incluídos no encriptador de vocoder 936, no decodificador de vocoder 938 ou em ambos. Em uma implantação em particular, o decodificador de fala 156 pode ser funcionalmente idêntico ao decodificador de vocoder 938. O decodificador de fala 156 pode corresponder a um conjunto de circuitos de hardware dedicado fora dos processadores 910 (por exemplo, os DSPs).
[0162] O analisador 122, o armazenamento temporário 126, o decodificador de fala 156 ou uma combinação dos mesmos pode ser usado para implantar um aspecto de hardware da recuperação de erro com base na técnica de redundância descrita no presente documento. Alternativa ou adicionalmente, um aspecto de software (ou um aspecto de software/hardware combinado) pode ser implantado. Por exemplo, a memória 176 pode incluir instruções 956 executáveis pelos processadores 910 ou por outra unidade de processamento do dispositivo 900 (por exemplo, o processador 906, o CODEC 934 ou ambos). As instruções 956 podem corresponder ao analisador 122, ao decodificador de fala 156 ou a ambos.
[0163] Em um aspecto em particular, o dispositivo 900 pode estar incluído em um dispositivo de sistema em pacote ou de sistema em chip 922. Em um aspecto em particular, o analisador 122, o armazenamento temporário 126, o decodificador de fala 156, a memória 176, o processador 906, os processadores 910, o controlador de exibição 926, o CODEC 934 e o controlador sem fio 940 estão incluídos em um dispositivo de sistema em pacote ou de sistema em chip 922. Em um aspecto em particular, um dispositivo de entrada 930 e uma fonte de alimentação 944 são acoplados ao dispositivo de sistema em chip 922. Além disso, em um aspecto em particular, conforme ilustrado na Figura 9, o visor 928, o dispositivo de entrada 930, o alto-falante 142, o microfone 946, a antena 942 e a fonte de alimentação 944 são externos ao dispositivo de sistema em chip 922. Em um aspecto em particular, cada um dentre o visor 928, o dispositivo de entrada 930, o alto-falante 142, o microfone 946, a antena 942 e a fonte de alimentação 944 pode ser acoplado a um componente do dispositivo de sistema em chip 922, tal como uma interface ou um controlador.
[0164] O dispositivo 900 pode incluir um dispositivo de comunicação móvel, um telefone inteligente, um telefone celular, um computador do tipo laptop, um computador, um computador do tipo tablet, um assistente pessoal digital, um dispositivo de exibição, uma televisão, um console para jogos, um reprodutor de música, um rádio, um reprodutor de vídeo digital, um reprodutor de disco de vídeo digital (DVD), um sintonizador, uma câmera, um dispositivo de navegação, um dispositivo de navegação ou qualquer combinação dos mesmos.
[0165] Em um aspecto ilustrativo, os processadores 910 podem ser operáveis para realizar todos ou uma porção dos métodos ou das operações descritos com referência às Figuras 1 a 8. Por exemplo, o microfone 946 pode capturar um sinal de áudio que corresponde a um sinal de fala de usuário. O ADC 904 pode converter o sinal de áudio capturado de uma forma de onda analógica em uma forma de onda digital compreendida de amostras de áudio digital. Os processadores 910 pode processar as amostras de áudio digital. Um ajustador de ganho pode ajustar as amostras de áudio digital. O cancelador de eco 912 pode reduzir qualquer eco que pode ter sido criado por uma saída do alto-falante 142 que entra no microfone 946.
[0166] O encriptador de vocoder 936 pode compactar as amostras de áudio digital que correspondem ao sinal de fala processado e pode formar uma sequência de pacotes (por exemplo, uma representação dos bits compactados das amostras de áudio digital). A sequência de pacotes pode ser armazenada na memória 176. Um ou mais pacotes da sequência pode incluir dados de correção de erro que correspondem a cópias parciais de outros pacotes da sequência. O transceptor 950 pode modular alguma forma de cada pacote (por exemplo, outras informações podem ser anexas ao pacote) da sequência e pode transmitir os dados modulados por meio da antena 942.
[0167] Como um exemplo adicional, a antena 942 pode receber pacotes recebidos que correspondem a uma sequência de pacotes enviada por outro dispositivo por meio de uma rede. Os pacotes recebidos podem corresponder a um sinal de fala de usuário. O analisador 122 pode armazenar os pacotes recebidos no armazenamento temporário 126 (por exemplo, um armazenamento temporário de remoção de flutuação de fase). O analisador 122 pode determinar se um próximo pacote a ser processado está armazenado no armazenamento temporário 126.
[0168] Em resposta à determinação de que o próximo pacote está armazenado no armazenamento temporário 126, o analisador 122 pode fornecer o próximo pacote ao decodificador de vocoder 938. Por exemplo, o decodificador de vocoder 938 pode descompactar o próximo pacote. Em resposta à determinação de que o próximo pacote não está armazenado no armazenamento temporário 126, o analisador 122 pode determinar se uma cópia parcial do próximo pacote está armazenada no armazenamento temporário 126 como dados de correção de erro em outro pacote. Em resposta à determinação de que a cópia parcial está armazenada no armazenamento temporário 126 no outro pacote, o analisador 122 pode fornecer a cópia parcial ou o outro pacote ao decodificador de vocoder 938 e pode atualizar a contagem de cópias parciais recuperadas 106 da Figura 1. O decodificador de vocoder 938 pode descompactar a cópia parcial.
[0169] A forma de onda descomprimida pode ser denominada de amostras de áudio reconstruídas. O cancelador de eco 912 pode remover eco das amostras de áudio reconstruídas. O decodificador de fala 156 pode gerar um sinal de fala processado com base nas amostras de áudio reconstruídas. Um ajustador de ganho pode amplificar ou suprimir o sinal de fala processado. O DAC 902 pode converter o sinal de fala processado a partir de uma forma de onda digital para uma forma de onda analógica e pode fornecer o sinal convertido ao alto-falante 142.
[0170] Em resposta à determinação de que nem o próximo pacote nem a cópia parcial do próximo pacote está armazenado no armazenamento temporário 126, o analisador 122 pode atualizar a contagem de pacotes perdidos 114 da Figura 1. O analisador 122 pode ajustar um parâmetro de recuperação de erro com base na contagem de cópias parciais recuperadas 106, na contagem de pacotes perdidos 114 ou em ambas.
[0171] Em conjunto com os aspectos descritos, um aparelho pode incluir meios para receber uma pluralidade de pacotes. A pluralidade de pacotes pode corresponder a pelo menos um subconjunto de uma sequência de pacotes. A pluralidade de pacotes pode incluir dados de correção de erro. Os dados de correção de erro de um primeiro pacote da pluralidade de pacotes podem incluir uma cópia parcial de um segundo pacote. Por exemplo, os meios para receber a pluralidade de pacotes podem incluir o receptor 124 da Figura 1, o transceptor 950 ou ambos.
[0172] O aparelho também pode incluir meios para recuperação de erro. Os meios para recuperação de erro podem ser configurados para determinar se um pacote em particular da sequência de pacotes não está em um armazenamento temporário, para determinar se uma cópia parcial do pacote em particular está armazenada no armazenamento temporário como dados de correção de erro em outro pacote, para determinar um valor com base, pelo menos em parte, na possibilidade de o pacote em particular não estar no armazenamento temporário e a cópia parcial do pacote em particular estar armazenada no armazenamento temporário e para ajustar um parâmetro de recuperação de erro com base, pelo menos em parte, no valor. Por exemplo, os meios para recuperação de erro podem incluir o analisador 122, o processador 906, os processadores 910, o CODEC 934 ou uma combinação dos mesmos.
[0173] As pessoas versadas na técnica irão observar adicionalmente que os diversos blocos lógicos, as configurações, os módulos, os circuitos e as etapas de algoritmo ilustrativos descritos em conexão com os aspectos revelados no presente documento podem ser implantados como hardware elétrico, software de computador executado por um processador ou combinações de ambos. Diversos componentes, blocos, configurações, módulos, circuitos e etapas ilustrativos foram descritos acima, em geral, em termos de sua funcionalidade. O fato de tal funcionalidade ser implantada como hardware ou como instruções executáveis por processador depende das restrições de aplicação e projeto particulares impostas no sistema geral. As pessoas versadas na técnica podem implantar a funcionalidade descrita de formas variadas para cada aplicação em particular, em que tais decisões de implantação não devem ser interpretadas como causadores de um afastamento do escopo da presente revelação.
[0174] As etapas de um método ou algoritmo descritas em conexão com os aspectos revelados no presente documento podem ser abrangidas diretamente em hardware, em um módulo de software executado por um processador ou em uma combinação dos dois. Um módulo de software pode residir em uma memória de acesso aleatório (RAM), uma memória flash, uma memória apenas leitura (ROM), uma memória apenas leitura programável (PROM), uma memória apenas leitura programável apagável (EPROM), uma memória apenas leitura programável eletricamente apagável (EEPROM), registros, um disco rígido, um disco removível, uma memória apenas leitura de disco compacto (CD-ROM) ou qualquer outra forma de meio de armazenamento não transitório conhecido na técnica. Um meio de armazenamento exemplificativo é acoplado ao processador de forma que o processador possa ler e gravar informações no meio de armazenamento. Alternativamente, o meio de armazenamento pode ser integral ao processador. O processador e o meio de armazenamento podem residir em um circuito integrado de aplicação específica (ASIC). O ASIC pode residir em um dispositivo de computação ou em um terminal de usuário. Alternativamente, o processador e um meio de armazenamento podem residir como componentes distintos em um dispositivo de computação ou em um terminal de usuário.
[0175] A descrição anterior dos aspectos revelados é fornecida para permitir que uma pessoa versada na técnica faça ou use os aspectos revelados. Diversas modificações nesses aspectos serão prontamente evidentes para as pessoas versadas na técnica e os princípios definidos no presente documento podem ser aplicados a outros aspectos sem que se afaste do escopo da revelação. Dessa forma, a presente revelação não é direcionada a ser limitada aos aspectos mostrados no presente documento e deve ser compatível com o escopo mais amplo possível consistente com os princípios e com os recursos inovadores conforme definidos pelas reivindicações a seguir.

Claims (15)

1. Dispositivo, caracterizado pelo fato de que compreende: um receptor (124) configurado para receber uma pluralidade de pacotes, a pluralidade de pacotes correspondendo a pelo menos um subconjunto de uma sequência de pacotes, em que a pluralidade de pacotes inclui dados de correção de erro, e em que os dados de correção de erro de um primeiro pacote (132) da pluralidade de pacotes incluem uma cópia parcial de um segundo pacote (134) da pluralidade de pacotes; um armazenamento temporário (126) configurado para armazenar a pluralidade de pacotes; e um analisador (122) configurado para: determinar se um primeiro pacote particular da sequência de pacotes não está no armazenamento temporário (126); determinar se uma cópia parcial do primeiro pacote particular está armazenada no armazenamento temporário (126) como dados de correção de erro em um segundo pacote particular; determinar um valor com base, pelo menos em parte, em se o primeiro pacote particular não está no armazenamento temporário (126) e a cópia parcial do primeiro pacote particular está armazenada no armazenamento temporário (126); ajustar um parâmetro de recuperação de erro com base, pelo menos em parte, no valor; em que o parâmetro de recuperação de erro inclui um atraso de armazenamento temporário (512), em que o valor inclui uma taxa de perda de atraso (556), e em que o analisador (122) é adicionalmente configurado para: reduzir o atraso de armazenamento temporário (512) em resposta à determinação de que a taxa de perda de atraso (556) é menor do que uma taxa de perda de atraso alvo (528), ou aumentar o atraso de armazenamento temporário (512) com base na determinação de que a taxa de perda de atraso (556) é maior do que uma taxa de perda de atraso alvo (528).
2. Dispositivo, de acordo com a reivindicação 1, caracterizado pelo fato de que a taxa de perda de atraso (556) é baseada, pelo menos em parte, em um número de pacotes particulares da pluralidade de pacotes que não estão no armazenamento temporário (126) e têm cópias parciais armazenadas no armazenamento temporário (126) em tempos de reprodução correspondentes, e em que os pacotes particulares são recebidos subsequentemente aos tempos de reprodução correspondentes.
3. Dispositivo, de acordo com a reivindicação 1, caracterizado pelo fato de que o analisador (122) é adicionalmente configurado para: determinar uma primeira taxa de perda de atraso que corresponde a um ajuste anterior do parâmetro de recuperação de erro em um primeiro tempo de atualização; e determinar uma segunda taxa de perda de atraso que corresponde a pacotes particulares da pluralidade de pacotes, os pacotes particulares tendo tempos de reprodução subsequentes ao primeiro tempo de atualização, em que o valor inclui uma taxa de perda de atraso (556) e em que a taxa de perda de atraso (556) é baseada em uma soma ponderada da primeira taxa de perda de atraso e da segunda taxa de perda de atraso.
4. Dispositivo, de acordo com a reivindicação 3, caracterizado pelo fato de que o analisador (122) é adicionalmente configurado para atribuir um primeiro peso à primeira taxa de perda de atraso que é maior que um segundo peso atribuído à segunda taxa de perda de atraso.
5. Dispositivo, de acordo com a reivindicação 1, caracterizado pelo fato de que a pluralidade de pacotes é recebida durante uma chamada telefônica, em que o primeiro pacote particular inclui dados de fala e em que o valor é determinado em um início de um impulso de fala durante a chamada telefônica.
6. Dispositivo, de acordo com a reivindicação 1, caracterizado pelo fato de que o analisador (122) é adicionalmente configurado para, em resposta à determinação, em um primeiro tempo de reprodução, de que o primeiro pacote particular não está no armazenamento temporário (126) e de que a cópia parcial do primeiro pacote particular está armazenada no armazenamento temporário (126), gerar um sinal de fala processado com base na cópia parcial do primeiro pacote particular.
7. Dispositivo, de acordo com a reivindicação 6, caracterizado pelo fato de que o analisador (122) é adicionalmente configurado para, em resposta ao recebimento do primeiro pacote particular subsequente à geração do sinal de fala processado, atualizar uma contagem de pacotes de perda de atraso, em que o valor é determinado com base na contagem de pacotes de perda de atraso; ou determinar o primeiro tempo de reprodução com base, pelo menos em parte, no parâmetro de recuperação de erro.
8. Dispositivo, de acordo com a reivindicação 6, caracterizado pelo fato de que o parâmetro de recuperação de erro inclui um atraso de armazenamento temporário (512), e em que o analisador (122) é adicionalmente configurado para determinar o primeiro tempo de reprodução com base em um carimbo de data/hora de recebimento do segundo pacote particular, o atraso de armazenamento temporário (512) e uma linha do tempo de armazenamento temporário.
9. Dispositivo, de acordo com a reivindicação 6, caracterizado pelo fato de que o parâmetro de recuperação de erro inclui um atraso de armazenamento temporário (512), e em que o analisador (122) é adicionalmente configurado para: determinar um tempo de armazenamento temporário com base em uma soma de um primeiro carimbo de data/hora de recebimento e do atraso de armazenamento temporário (512), em que o primeiro carimbo de data/hora de recebimento é baseado em um carimbo de data/hora de recebimento do segundo pacote particular; e detectar o primeiro tempo de reprodução em resposta à determinação, em um primeiro tempo, de que o tempo de armazenamento temporário é maior ou igual ao primeiro tempo e de que uma linha do tempo de armazenamento temporário indica que o primeiro pacote particular é um próximo pacote a ser processado.
10. Dispositivo, de acordo com a reivindicação 9, caracterizado pelo fato de que o valor corresponde a uma contagem de cópias parciais recuperadas e em que o analisador (122) é adicionalmente configurado para determinar um valor de resultado com base na contagem de cópias parciais recuperadas e em uma contagem de pacotes perdidos.
11. Dispositivo, de acordo com a reivindicação 10, caracterizado pelo fato de que o analisador (122) é adicionalmente configurado para gerar um valor ponderado multiplicando-se a contagem de cópias parciais recuperadas por uma métrica de qualidade e em que o valor de resultado é uma soma da contagem de pacotes perdidos e do valor ponderado.
12. Dispositivo, de acordo com a reivindicação 10, caracterizado pelo fato de que o parâmetro de recuperação de erro é ajustado: i) com base em uma quantidade de acréscimo (140) em resposta à determinação de que o valor de resultado satisfaz um limiar de acréscimo (136) e, opcionalmente em que o analisador (122) é adicionalmente configurado para determinar a quantidade de acréscimo (140) com base em uma diferença entre o valor de resultado (118) e o limiar de acréscimo (136); ou ii) com base em uma quantidade de decréscimo (150) em resposta à determinação de que o valor de resultado (118) satisfaz um limiar de decréscimo (138) e opcionalmente em que o analisador (122) é adicionalmente configurado para determinar a quantidade de decréscimo (150) com base em uma diferença entre o valor de resultado (118) e o limiar de decréscimo (138).
13. Dispositivo, de acordo com a reivindicação 1, caracterizado pelo fato de que compreende adicionalmente: um transmissor, em que o analisador (122) é adicionalmente configurado para, em resposta à determinação de que o armazenamento temporário (126) não armazena o primeiro pacote particular e de que uma contagem de retransmissão (154) satisfaz um limiar de retransmissão (112): enviar, por meio do transmissor (192), uma mensagem de retransmissão para um segundo dispositivo e atualizar a contagem de retransmissão (154), em que o parâmetro de recuperação de erro inclui o limiar de retransmissão (112), e em que a mensagem de retransmissão solicita a retransmissão do primeiro pacote particular.
14. Método, caracterizado pelo fato de que compreende: receber, em um primeiro dispositivo, uma pluralidade de pacotes, a pluralidade de pacotes correspondendo a pelo menos um subconjunto de uma sequência de pacotes, em que a pluralidade de pacotes inclui dados de correção de erro, e em que os dados de correção de erro de um primeiro pacote (132) da pluralidade de pacotes inclui uma cópia parcial de um segundo pacote (134); determinar se um pacote em particular da sequência de pacotes não está em um armazenamento temporário (126); determinar se uma cópia parcial do pacote particular está armazenada no armazenamento temporário (126) como dados de correção de erro em um outro pacote; determinar um valor com base, pelo menos em parte, em se o pacote em particular não está no armazenamento temporário (1260 e a cópia parcial do pacote em particular estar armazenada no armazenamento temporário (126); ajustar um parâmetro de recuperação de erro com base, pelo menos em parte, no valor; em que o parâmetro de recuperação de erro inclui um atraso de armazenamento temporário (512), em que o valor inclui uma taxa de perda de atraso (556), compreendendo adicionalmente: reduzir o atraso de armazenamento temporário (512) em resposta à determinação de que a taxa de perda de atraso (556) é menor do que uma taxa de perda de atraso alvo (528), ou aumentar o atraso de armazenamento temporário (512) com base na determinação de que a taxa de perda de atraso (556) é maior do que uma taxa de perda de atraso alvo (528).
15. Memória legível por computador, caracterizada pelo fato de que armazena instruções que, quando executadas por um processador, fazem com que o processador realize o método como definido na reivindicação 14.
BR112017000791-6A 2014-07-31 2015-07-27 Sistema e método de recuperação de erro de transmissão de pacote com base em redundância BR112017000791B1 (pt)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201462031675P 2014-07-31 2014-07-31
US62/031,675 2014-07-31
US14/809,085 2015-07-24
US14/809,085 US9712287B2 (en) 2014-07-31 2015-07-24 System and method of redundancy based packet transmission error recovery
PCT/US2015/042316 WO2016018834A1 (en) 2014-07-31 2015-07-27 System and method of redundancy based packet transmission error recovery

Publications (2)

Publication Number Publication Date
BR112017000791A2 BR112017000791A2 (pt) 2017-11-14
BR112017000791B1 true BR112017000791B1 (pt) 2023-08-29

Family

ID=

Similar Documents

Publication Publication Date Title
US9712287B2 (en) System and method of redundancy based packet transmission error recovery
US9047863B2 (en) Systems, methods, apparatus, and computer-readable media for criticality threshold control
JP6779280B2 (ja) ハイバンド目標信号制御
RU2673847C2 (ru) Системы и способы передачи избыточной информации кадра
US20170187635A1 (en) System and method of jitter buffer management
BR112017003887B1 (pt) Codificador, decodificador, sistema e método para reconstruir quadros de áudio com o uso de parâmetros para aprimorar uma ocultação de erro
JP6786592B2 (ja) 帯域幅移行期間中の信号再使用
US9053699B2 (en) Apparatus and method for audio frame loss recovery
JP2018514804A (ja) デジッタバッファの更新
BR112016022764B1 (pt) Aparelho e métodos de comutação de tecnologias de codificação em um dispositivo
BR112017000791B1 (pt) Sistema e método de recuperação de erro de transmissão de pacote com base em redundância
BR112017001088B1 (pt) Dispositivo e método de recuperação de erro de transmissão de pacote com base em redundância