TtsEngineSsml.GetOutputFormat(SpeakOutputFormat, IntPtr) Método
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
Devolve a melhor saída de áudio compatível suportada por um determinado motor de sintetização a um pedido ao motor de sintetizador para suporte a um determinado formato de saída.
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
Membro válido da SpeakOutputFormat enumeração indicando o tipo de formato de saída áudio solicitado.
- targetWaveFormat
-
IntPtr
nativeint
Um apontador para uma struct definição de detalhe contendo para o tipo de formato áudio solicitado pelo speakOutputFormat argumento.
Devoluções
nativeint
Devolve uma instância válida IntPtr referindo-se struct a a contendo informação detalhada sobre o formato de saída.
Exemplos
A implementação de exemplo abaixo valida entradas selecionadas, usando-as se estiverem dentro das tolerâncias, caso contrário usando valores padrão.
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;
}
Observações
A estrutura usada como targetWaveFormat e devolvida pelo método deve ser compatível com a WAVEFORMATEX disponível sob SAPI, e o valor devolvido deve ser alocado usando CoTaskMemAlloc.
Deve struct fornecer funcionalidades equivalentes 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 para Implementadores
O objeto que herda de TtsEngineSsml deve examinar o formato de saída solicitado conforme especificado por targetWaveFormat e devolver o formato mais próximo que suporta.