TtsEngineSsml.GetOutputFormat(SpeakOutputFormat, IntPtr) Método
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Retorna a melhor correspondência de saída de áudio compatível com uma determinada resposta de mecanismo sintetização a uma solicitação ao mecanismo 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 enumeração SpeakOutputFormat que indica o tipo de formato de saída de áudio solicitado.
- targetWaveFormat
-
IntPtr
nativeint
Um ponteiro para um struct
que contém a configuração de detalhes para o tipo de formato de áudio solicitado pelo argumento speakOutputFormat
.
Retornos
-
IntPtr
nativeint
Retorna uma instância IntPtr válida referindo-se a um struct
que contém informações detalhadas sobre o formato de saída.
Exemplos
A implementação de exemplo abaixo valida as entradas selecionadas, usando-as se elas estão dentro de 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;
}
Comentários
A estrutura usada como e retornada pelo método deve ser compatível com o disponível em SAPI e o valor retornado deve targetWaveFormat
WAVEFORMATEX
ser alocado usando CoTaskMemAlloc
.
O struct
deve fornecer funcionalidade 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 aos Implementadores
O objeto herdado de deve examinar o formato de saída solicitado conforme especificado TtsEngineSsml por e retornar o formato mais próximo que ele dá targetWaveFormat
suporte.