TtsEngineSsml.GetOutputFormat(SpeakOutputFormat, IntPtr) Metodo
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Restituisce l'output audio più corrispondente supportato da una determinata risposta del motore di sintesi a una richiesta al motore di sintetizzatore per il supporto di un formato di output specifico.
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 SpeakOutputFormat che indica il tipo di formato di output audio richiesto.
- targetWaveFormat
-
IntPtr
nativeint
Puntatore a un'impostazione struct contenente i dettagli per il tipo di formato audio richiesto dall'argomento speakOutputFormat .
Valori restituiti
nativeint
Restituisce un'istanza valida IntPtr che fa riferimento a un struct oggetto contenente informazioni dettagliate sul formato di output.
Esempio
L'implementazione di esempio seguente convalida gli input selezionati, usandoli se sono entro le tolleranze, altrimenti 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 usata come targetWaveFormat e restituita dal metodo deve essere compatibile con l'oggetto WAVEFORMATEX disponibile in SAPI e il valore restituito deve essere allocato usando 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 TtsEngineSsml deve esaminare il formato di output richiesto come specificato da targetWaveFormat e restituire il formato più vicino supportato.