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
.
Возвращаемое значение
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
и возвратить ближайший формат, который он поддерживает.