DSP di acquisizione vocale

Oggetto che incapsula diversi DSP correlati all'acquisizione vocale.

CLSID

CLSID_CWMAudioAEC

Interfacce

Proprietà

Proprietà Descrizione
MFPKEY_WMAAECMA_DEVICE_INDEXES Specifica i dispositivi audio usati dalla DMO per l'acquisizione e il rendering dell'audio.
MFPKEY_WMAAECMA_DEVICEPAIR_GUID Identifica la combinazione di dispositivi audio attualmente usati dall'applicazione.
MFPKEY_WMAAECMA_DMO_SOURCE_MODE Specifica se DMO usa la modalità di origine o la modalità filtro.
MFPKEY_WMAAECMA_FEATR_AES Specifica il numero di volte in cui il DMO esegue l'eliminazione dell'eco acustica (AES) sul segnale rimanente.
MFPKEY_WMAAECMA_FEATR_AGC Specifica se DMO esegue il controllo di guadagno automatico.
MFPKEY_WMAAECMA_FEATR_CENTER_CLIP Specifica se il DMO esegue il ritaglio centrale.
MFPKEY_WMAAECMA_FEATR_ECHO_LENGTH Specifica la durata dell'eco che l'algoritmo di annullamento dell'eco acustico (AEC) può gestire.
MFPKEY_WMAAECMA_FEATR_FRAME_SIZE Specifica le dimensioni del frame audio.
MFPKEY_WMAAECMA_FEATR_MICARR_BEAM Specifica quale raggio usa DMO per l'elaborazione della matrice del microfono.
MFPKEY_WMAAECMA_FEATR_MICARR_MODE Specifica il modo in cui DMO esegue l'elaborazione della matrice del microfono.
MFPKEY_WMAAECMA_FEATR_MICARR_PREPROC Specifica se il DMO esegue la pre-elaborazione della matrice del microfono.
MFPKEY_WMAAECMA_FEATR_NOISE_FILL Specifica se il DMO esegue il riempimento del rumore.
MFPKEY_WMAAECMA_FEATR_NS Specifica se il DMO esegue l'eliminazione del rumore.
MFPKEY_WMAAECMA_FEATR_VAD Specifica il tipo di rilevamento delle attività vocali eseguite da DMO.
MFPKEY_WMAAECMA_FEATURE_MODE Consente all'applicazione di eseguire l'override delle impostazioni predefinite in varie proprietà.
MFPKEY_WMAAECMA_MIC_GAIN_BOUNDER Specifica se il DMO applica il limite del microfono.
MFPKEY_WMAAECMA_MICARRAY_DESCPTR Specifica la geometria della matrice del microfono.
MFPKEY_WMAAECMA_QUALITY_METRICS Recupera le metriche di qualità per AEC.
MFPKEY_WMAAECMA_RETRIEVE_TS_STATS Specifica se DMO archivia le statistiche del timestamp nel Registro di sistema.
MFPKEY_WMAAECMA_SYSTEM_MODE Imposta la modalità di elaborazione.

 

Commenti

A differenza degli altri DSP, l'oggetto di acquisizione vocale incapsula più DSP in un singolo oggetto e l'oggetto è un oggetto DMO solo (non implementa FMTransform). L'acquisizione vocale DMO include i componenti DSP seguenti:

  • Annullamento dell'eco acustico (AEC)
  • Elaborazione della matrice del microfono
  • Eliminazione del rumore
  • Controllo automatico del guadagno
  • Rilevamento attività vocali

Le applicazioni possono attivare e disattivare singolarmente ogni componente.

L'acquisizione vocale DMO supporta due modalità di operazione, modalità filtro e modalità di origine . In modalità filtro, l'applicazione invia campioni audio dal microfono e dalla riga dell'altoparlante alla DMO e il DMO produce l'output.

In modalità di origine l'applicazione non deve distribuire esempi all'oggetto DMO. Il DMO gestisce invece tutte le operazioni sui dispositivi audio, tra cui l'inizializzazione dei dispositivi, l'acquisizione e la sincronizzazione dei flussi audio, il calcolo dei timestamp e il recupero della geometria della matrice del microfono. Usando la modalità di origine, l'applicazione configura semplicemente DMO e l'output da DMO è un segnale microfono pulito e elaborato. La modalità di origine è notevolmente più semplice da usare rispetto alla modalità di filtro e è consigliata per la maggior parte delle applicazioni.

Attualmente l'acquisizione vocale DMO supporta solo l'annullamento dell'eco acustico a canale singolo (AEC), quindi l'output dalla linea dell'altoparlante deve essere a canale singolo. Se l'elaborazione della matrice del microfono è disabilitata, l'input multicanale viene ridotto a un canale per l'elaborazione AEC. Se l'elaborazione della matrice del microfono e l'elaborazione AEC sono abilitate, AEC viene eseguito su ogni elemento del microfono prima dell'elaborazione della matrice del microfono.

Elaborazione matrice microfono

Una matrice di microfoni è un set di microfoni posizionati da vicino. Le matrici di microfoni ottengono una migliore direzione rispetto a un singolo microfono, perché le onde acustiche arrivano a ogni microfono in un momento leggermente diverso. Per altre informazioni sulle matrici di microfoni, vedere gli articoli Web Supporto matrice microfono in Windows Vistae Come compilare e usare array di microfoni per Windows Vista.

Uso del provider di servizi di acquisizione vocale

Per usare voice capture DSP, seguire questa procedura.

1. Inizializzare il DMO

Creare l'acquisizione vocale DMO chiamando CoCreateInstance con il CLSID_CWMAudioAEC CLSID. L'acquisizione vocale DSDP espone solo le interfacce IMediaObject e IPropertyStore , quindi può essere usata solo come DMO.

L'impostazione predefinita DMO è la modalità di origine. Per selezionare la modalità filtro, impostare la proprietà MFPKEY_WMAAECMA_DMO_SOURCE_MODEsu VARIANT_FALSE.

Configurare quindi le proprietà interne della DMO usando l'interfaccia IPropertyStore . L'unica proprietà che un'applicazione deve impostare è la proprietà MFPKEY_WMAAECMA_SYSTEM_MODE . Questa proprietà configura la pipeline di elaborazione all'interno dell'oggetto DMO. Le altre proprietà sono facoltative.

2. Impostare i formati di input e output

Se si usa DMO in modalità filtro, impostare il formato di input chiamando IMediaObject::SetInputType. Il formato di input può essere quasi qualsiasi tipo audio PCM non compresso o IEEE a virgola mobile. Se il formato di input non corrisponde al formato di output, DMO esegue automaticamente la conversione a frequenza di esempio.

Se si usa DMO in modalità origine, non impostare il formato di input. DMO configura automaticamente il formato di input in base ai dispositivi audio.

In entrambe le modalità impostare il formato di output chiamando IMediaObject::SetOutputType. DMO può accettare i formati di output seguenti:

  • Sottotipo: MEDIASUBTYPE_PCM o MEDIASUBTYPE_IEEE_FLOAT
  • Blocco di formato: WAVEFORMAT o WAVEFORMATEX
  • Campioni al secondo: 8.000; 11,025; 16,000; o 22.050
  • Canali: 1 per la modalità solo AEC, 2 o 4 per l'elaborazione della matrice del microfono
  • Bit per esempio: 16

Il codice seguente imposta il tipo di output su audio PCM a 16 bit a 16 bit:

DMO_MEDIA_TYPE mt;  // Media type.
mt.majortype = MEDIATYPE_Audio;
mt.subtype = MEDIASUBTYPE_PCM;
mt.lSampleSize = 0;
mt.bFixedSizeSamples = TRUE;
mt.bTemporalCompression = FALSE;
mt.formattype = FORMAT_WaveFormatEx;

// Allocate the format block to hold the WAVEFORMATEX structure.
hr = MoInitMediaType(&mt, sizeof(WAVEFORMATEX));
if (SUCCEEDED(hr))
{
    WAVEFORMATEX *pwav = (WAVEFORMATEX*)mt.pbFormat;
    pwav->wFormatTag = WAVE_FORMAT_PCM;
    pwav->nChannels = 1;
    pwav->nSamplesPerSec = 16000;
    pwav->nAvgBytesPerSec = 32000;
    pwav->nBlockAlign = 2;
    pwav->wBitsPerSample = 16;
    pwav->cbSize = 0;

    // Set the output type.
    if (SUCCEEDED(hr))
    {
        hr = pDMO->SetOutputType(0, &mt, 0); 
    }
    // Free the format block.
    MoFreeMediaType(&mt);
}

3. Elaborare i dati

Prima di elaborare i dati, è consigliabile chiamare IMediaObject::AllocateStreamingResources. Questo metodo alloca le risorse usate internamente dall'oggetto DMO. Chiamare AllocateStreamingResources dopo i passaggi elencati in precedenza, non prima. Se non si chiama questo metodo, DMO alloca automaticamente le risorse all'avvio dell'elaborazione dati.

Se si usa DMO in modalità filtro, è necessario passare i dati di input all'oggetto DMO chiamando IMediaObject::P rocessInput. I dati audio dal microfono passano allo streaming 0 e i dati audio dalla linea dell'altoparlante passano al flusso 1. Se si usa DMO in modalità di origine, non è necessario chiamare ProcessInput.

Per ottenere i dati di output dal DSP, seguire questa procedura:

  1. Creare un oggetto buffer per contenere i dati di output. L'oggetto buffer deve implementare l'interfaccia IMediaBuffer . Le dimensioni del buffer dipendono dai requisiti dell'applicazione. L'allocazione di un buffer più grande può ridurre le probabilità di errori che si verificano.
  2. Dichiarare una struttura DMO_OUTPUT_DATA_BUFFER e impostare il membro pBuffer in modo che punti all'oggetto buffer.
  3. Passare la struttura DMO_OUTPUT_DATA_BUFFER al metodo IMediaObject::P rocessOutput .
  4. Continuare a chiamare questo metodo per tutto il tempo in cui DMO contiene dati di output. Il DSP segnala che ha più output impostando il flag DMO_OUTPUT_DATA_BUFFERF_INCOMPLETE nel membro dwStatus della struttura DMO_OUTPUT_DATA_BUFFER .

Requisiti

Requisito Valore
Client minimo supportato
Windows Vista [solo app desktop]
Server minimo supportato
Windows Server 2008 [solo app desktop]
Intestazione
Wmcodecdsp.h
DLL
Mfwmaaec.dll

Vedi anche

Processori di segnali digitali