TtsEngineSsml.GetOutputFormat(SpeakOutputFormat, IntPtr) Método
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Devuelve el mejor resultado de audio coincidente admitido por una respuesta del motor de síntesis dada a una solicitud para el motor de sintetizador de compatibilidad con un formato de salida determinado.
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
Parámetros
- speakOutputFormat
- SpeakOutputFormat
Miembro válido de la enumeración de SpeakOutputFormat que indica el tipo de formato solicitado de la salida de audio.
- targetWaveFormat
-
IntPtr
nativeint
Un puntero a un struct
que contiene el valor de detalle para el tipo de formato de audio solicitado por el argumento speakOutputFormat
.
Devoluciones
-
IntPtr
nativeint
Devuelve una instancia de IntPtr válida que hace referencia a un struct
que contiene información detallada sobre el formato de salida.
Ejemplos
La implementación de ejemplo siguiente valida las entradas seleccionadas, usándolos si están dentro de las tolerancias; de lo contrario, usa valores predeterminados.
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;
}
Comentarios
La estructura usada como y devuelta por el método debe ser compatible con la disponible en SAPI, y el valor devuelto targetWaveFormat
WAVEFORMATEX
debe asignarse mediante CoTaskMemAlloc
.
debe struct
proporcionar una funcionalidad equivalente 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;
}
Notas a los implementadores
El objeto que hereda de debe examinar el formato de salida solicitado según lo especificado por y devolver TtsEngineSsml el formato más cercano que targetWaveFormat
admite.