TtsEngineSsml.GetOutputFormat(SpeakOutputFormat, IntPtr) Methode

Definitie

Retourneert de best overeenkomende audio-uitvoer die wordt ondersteund door een gegeven synthetiseren motorreactie op een aanvraag naar de synthesizer-engine voor de ondersteuning van een bepaalde uitvoerindeling.

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

Parameters

speakOutputFormat
SpeakOutputFormat

Geldig lid van de SpeakOutputFormat opsomming die het type aangevraagde audio-uitvoerindeling aangeeft.

targetWaveFormat
IntPtr

nativeint

Een aanwijzer naar een struct detailinstelling voor het type audio-indeling dat door het speakOutputFormat argument is aangevraagd.

Retouren

IntPtr

nativeint

Retourneert een geldig exemplaar IntPtr dat verwijst naar een struct met gedetailleerde informatie over de uitvoerindeling.

Voorbeelden

Met de onderstaande voorbeeld-implementatie worden geselecteerde invoer gevalideerd, waarbij deze worden gebruikt als deze binnen toleranties vallen, anders met behulp van standaardwaarden.

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

Opmerkingen

De structuur die door de methode wordt gebruikt targetWaveFormat en geretourneerd, moet compatibel zijn met de WAVEFORMATEX beschikbare onder SAPI en de geretourneerde waarde moet worden toegewezen met behulp van CoTaskMemAlloc.

De struct moet functionaliteit bieden die gelijk is aan:

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

Notities voor uitvoerders

Object dat wordt overgenomen van TtsEngineSsml , moet de aangevraagde uitvoerindeling onderzoeken zoals opgegeven door targetWaveFormat en retourneert de dichtstbijzijnde indeling die wordt ondersteund.

Van toepassing op