Udostępnij za pośrednictwem


TtsEngineSsml.GetOutputFormat(SpeakOutputFormat, IntPtr) Metoda

Definicja

Zwraca najlepsze zgodne dane wyjściowe audio obsługiwane przez określoną odpowiedź aparatu syntezy na żądanie do aparatu syntezatora w celu obsługi określonego formatu danych wyjściowych.

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

Prawidłowy członek SpeakOutputFormat wyliczenia wskazujący typ żądanego formatu danych wyjściowych audio.

targetWaveFormat
IntPtr

nativeint

Wskaźnik do ustawienia struct zawierającego szczegóły dla typu formatu audio żądanego przez speakOutputFormat argument .

Zwraca

IntPtr

nativeint

Zwraca prawidłowe wystąpienie IntPtr odwołujące się do struct zawierającego szczegółowe informacje o formacie danych wyjściowych.

Przykłady

Przykładowa implementacja poniżej weryfikuje wybrane dane wejściowe, używając ich, jeśli są w tolerancjach, w przeciwnym razie przy użyciu wartości domyślnych.

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

Uwagi

Struktura używana jako i zwracana przez metodę powinna być zgodna z dostępnymi w obszarze SAPI, a zwrócona wartość powinna zostać targetWaveFormat WAVEFORMATEX przydzielona przy użyciu metody CoTaskMemAlloc .

Musi struct zapewniać funkcje równoważne:

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

Uwagi dotyczące implementowania

Obiekt dziedziczący z powinien sprawdzić żądany format danych wyjściowych określony przez i zwrócić TtsEngineSsml targetWaveFormat najbliższy format, który obsługuje.

Dotyczy