TtsEngineSsml.GetOutputFormat(SpeakOutputFormat, IntPtr) Metoda
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
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
.
struct
Musí 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.