Partilhar via


TtsEngineSsml.GetOutputFormat(SpeakOutputFormat, IntPtr) Método

Definição

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.

Aplica-se a