Condividi tramite


TtsEngineSsml.GetOutputFormat(SpeakOutputFormat, IntPtr) Metodo

Definizione

Restituisce il migliore output audio corrispondente supportato da una determinata riposta di un motore di sintesi a una richiesta del motore sintetizzatore per il supporto di un particolare formato di output.

public:
 abstract IntPtr GetOutputFormat(System::Speech::Synthesis::TtsEngine::SpeakOutputFormat speakOutputFormat, IntPtr targetWaveFormat);
public abstract IntPtr GetOutputFormat (System.Speech.Synthesis.TtsEngine.SpeakOutputFormat speakOutputFormat, IntPtr targetWaveFormat);
abstract member GetOutputFormat : System.Speech.Synthesis.TtsEngine.SpeakOutputFormat * nativeint -> nativeint
Public MustOverride Function GetOutputFormat (speakOutputFormat As SpeakOutputFormat, targetWaveFormat As IntPtr) As IntPtr

Parametri

speakOutputFormat
SpeakOutputFormat

Membro valido dell'enumerazione di SpeakOutputFormat che indica il tipo del formato di audio di output richiesto.

targetWaveFormat
IntPtr

nativeint

Puntatore a un elemento struct contenente l'impostazione di dettaglio per il tipo di formato audio richiesto dall'argomento speakOutputFormat.

Restituisce

IntPtr

nativeint

Restituisce un'istanza di IntPtr valida che fa riferimento a un oggetto struct contenente informazioni dettagliate sul formato di output.

Esempio

L'implementazione di esempio seguente convalida gli input selezionati, usandoli se sono all'interno delle tolleranze, in caso contrario usando i valori predefiniti.

public IntPtr GetOutputFormat(SpeakOutputFormat format, IntPtr targetWaveFormat) {  
    WaveFormat waveFormat = new WaveFormat();  
    WaveFormat rq=new WaveFormat();  
    Marshal.PtrToStructure(targetWaveFormat,rq);  

    waveFormat.AvgBytesPerSec = AvgBytesPerSec Min < rq.AvgBytesPerSec && rq.AvgBytesPerSec < AvgBytesPerSecMax? rq.AvgBytesPerSec : 3200;  
    waveFormat.BitsPerSample = BitsPerSampleMin < rq.AvgBytesPerSec && rq.BitsPerSample < BitsPerSampleMax ? rq.AvgBytesPerSec : 3200; 16;  
    waveFormat.BlockAlign = 2;  
    waveFormat.Channels = 1;  
    waveFormat.FormatTag = 1;  
    waveFormat.SamplesPerSec = 16000;  
    waveFormat.Size = 0;  

    IntPtr wfx = Marshal.AllocCoTaskMem(Marshal.SizeOf(waveFormat));  
    Marshal.StructureToPtr(waveFormat, wfx, false);  

    //Console.WriteLine ("GetOutputFormat called");  
    return wfx;  
}  
internal struct WaveFormat {  
    public Int16 FormatTag;  
    public Int16 Channels;  
    public int SamplesPerSec;  
    public int AvgBytesPerSec;  
    public Int16 BlockAlign;  
    public Int16 BitsPerSample;  
    public Int16 Size;  
}  

Commenti

La struttura utilizzata come e restituita dal metodo deve essere compatibile con l'oggetto disponibile in SAPI e il valore restituito targetWaveFormat WAVEFORMATEX deve essere allocato tramite CoTaskMemAlloc .

Deve struct fornire funzionalità equivalenti a:

internal struct WaveFormat  
{  
    public Int16 FormatTag;  
    public Int16 Channels;  
    public int SamplesPerSec;  
    public int AvgBytesPerSec;  
    public Int16 BlockAlign;  
    public Int16 BitsPerSample;  
    public Int16 Size;  
}  

Note per gli implementatori

L'oggetto che eredita da deve esaminare il formato di output richiesto come specificato da e restituire TtsEngineSsml il formato più vicino targetWaveFormat supportato.

Si applica a