Sdílet prostřednictvím


TtsEngineSsml.GetOutputFormat(SpeakOutputFormat, IntPtr) Metoda

Definice

Vrátí nejlepší vyhovující zvukový výstup podporovaný danou reakcí modulu syntetizů na požadavek na modul syntetizátoru pro podporu konkrétního formátu výstupu.

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

Parametry

speakOutputFormat
SpeakOutputFormat

Platný člen výčtu, který SpeakOutputFormat označuje typ požadovaného formátu výstupu zvuku.

targetWaveFormat
IntPtr

nativeint

Ukazatel na struct obsahující nastavení podrobností pro typ zvukového formátu požadovaný speakOutputFormat argumentem.

Návraty

IntPtr

nativeint

Vrátí platnou IntPtr instanci, která odkazuje na struct obsahující podrobné informace o výstupním formátu.

Příklady

Níže uvedená ukázková implementace ověřuje vybrané vstupy a používá je, pokud jsou v tolerancích, jinak používá výchozí hodnoty.

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;  
}  

Poznámky

Struktura použitá jako targetWaveFormat a vrácená metodou by měla být kompatibilní s WAVEFORMATEX dostupností v rozhraní SAPI a vrácená hodnota by měla být přidělena pomocí CoTaskMemAlloc .

structMusí poskytovat funkce, které jsou ekvivalentní:

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

Poznámky pro implementátory

Objekt, ze kterého TtsEngineSsml se dědí, by měl prostudovat požadovaný výstupní formát, který určuje, targetWaveFormat a vrátí nejbližší formát, který podporuje.

Platí pro