TtsEngineSsml.GetOutputFormat(SpeakOutputFormat, IntPtr) Метод

Определение

Возвращает максимально точного соответствующие звуковые выходные данные, поддерживаемые данным ответом механизма синтеза на запрос к механизму синтеза на поддержку определенного формата вывода.

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

Параметры

speakOutputFormat
SpeakOutputFormat

Допустимый член перечисления SpeakOutputFormat, указывающий тип запрошенного формата аудиовывода.

targetWaveFormat
IntPtr

nativeint

Указатель на параметр struct, содержащий сведения для звукового типа формата, запрошенного аргументом speakOutputFormat.

Возвращаемое значение

IntPtr

nativeint

Возвращает допустимый экземпляр IntPtr при ссылке на struct, содержащий подробные сведения о формате вывода.

Примеры

Пример реализации ниже проверяет выбранные входные данные, используя их, если они находятся в пределах допустимых значений, в противном случае используются значения по умолчанию.

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;  
}  

Комментарии

Структура, используемая как targetWaveFormat и возвращаемая методом , должна быть совместима с доступной WAVEFORMATEX в SAPI, а возвращаемое значение должно быть выделено с помощью CoTaskMemAlloc.

Должен предоставлять функциональные struct возможности, эквивалентные следующим:

internal struct WaveFormat  
{  
    public Int16 FormatTag;  
    public Int16 Channels;  
    public int SamplesPerSec;  
    public int AvgBytesPerSec;  
    public Int16 BlockAlign;  
    public Int16 BitsPerSample;  
    public Int16 Size;  
}  

Примечания для тех, кто реализует этот метод

Объект, наследующий от TtsEngineSsml , должен изучить запрошенный формат выходных данных, как указано в , targetWaveFormat и возвратить ближайший формат, который он поддерживает.

Применяется к