Библиотека SAPI_DLL

Источник:wtwsoft.narod.ru
Дата публикации:2007
Поделиться в Twitter Поделиться в F******k Поделиться в VKontakte Поделиться в Telegram Поделиться в Mastodon

Библиотека SAPI_DLL создана для облегчения доступа к интерфейсам MS Speech API для синтеза речи по тексту.

SAPI DLL Open Source for easy Speech API access[GNU GPL]
(copyleft) Denis Kirin http://sourceforge.net/projects/sapidll.

Для того что бы научить Ваше приложение "разговаривать", достаточно вызвать простые процедуры из SAPI_DLL. Автор отдает исходный код, поэтому, научившись писать простые "говорящие" программы при помощи SAPI_DLL, Вы сможете изучить библиотеку изнутри и разобраться, как устроено MS SpeechAPI.

Дистрибутив библиотеки

  1. скачать SAPI_DLL v1.2 + исходный код + примеры вызова
  2. скачать SAPIDLL v2.0 (beta) + исходный код
  3. скачать SAPIDLL v2.1 (beta) + исходный код
  4. C# call demo

23.10.2006 v2.0 beta release - SAPI 4 and SAPI 5 + SAPI Events

Использование SAPI DLL

Содержание

  1. Введение
  2. Условия распространения и гарантии
  3. Описание некоторых распространяемых файлов
  4. Перечень процедур и функций, предоставляемых SAPI_DLL.DLL
  5. Процедуры и функции, добавленные в версии 1.2
  6. Связаться с автором

Введение

Для упрощения написания синтезаторов речи и использующих их программ корпорация Microsoft предлагает воспользоваться TTS ( Text-To-Speech )"технологией" и Speech API. Это очень удобно и решает множество проблем, однако есть задачи, при решение которых возникают трудности взаимодействия с COM интерфейсами, не говоря уже о сложности самих COM.

SAPI_DLL написана для тех, кто не желает вникать в подробности SAPI, а также для тех, кто совсем недавно освоил программирование и еще не овладел "технологией" COM программирования.

Условия распространения

Свободно и бесплатно (FREEWARE) распространяются и сама SAPI_DLL.DLL, и ее исходный код. Вы можете вносить изменения в код DLL и с этими изменениями использовать ее для любых целей, с тем условием, что сотрете ВСЕ (c) автора.

SAPI_DLL.DLL не реализует каких либо прямых обращений к файловой системе и работает непосредственно с интерфейсом Speech API , что гарантирует безопасность ее использование. Разумеется, это имеет силу только для оригинальной, авторской версии SAPI_DLL.DLL представленной на сайте http://wtwsoft.narod.ru

Описание поставляемых файлов

SAPI_DLL.DLL – непосредственно сама библиотека, она может распространятся отдельно, независимо от других поставляемых файлов или вместес вашими программными продуктами. Возможно переименование, и перекомпиляция библиотеки, при этом ссылки на автора следует убрать.

SAPI_Dll_Source – папка, которая содержит исходные коды модулей, необходимых для компиляции SAPI_DLL.DLL. Для компиляции рекомендуется использовать Delphi 5 или Delphi 7, однако проблем с компиляцией не должно быть и в других версиях Delphi для платформы Win32.

Не забывайте о удобном консольном компиляторе dcc32.exe он поставляется в комплекте Delphi и позволяет работать из командной строки.

SAPI_Dll_Source\SAPIINTERFACE.PAS - исходный код интерфейсного модуля для работы с SAPI_DLL.DLL. Вы можете использовать его в своих программах на Delphi для обращения к процедурам SAPI_DLL.DLL. Как это сделать показано в примере, находящемся в папке Call_Demo.

Перечень процедур и функций, экспортируемых SAPI_DLL.DLL

function CreateSpeech:HResult;stdcall;external 'SAPI_DLL.DLL';

Реализует проверку работоспособности SAPI и, если это так, инициализирует этот COM интерфейс. Вы должны вызвать эту функцию первой, перед началом работы с остальными процедурами и функциями, экспортируемыми SAPI_DLL.DLL. Вызов этой функции можно было бы сделать автоматическим, при загрузке SAPI_DLL.DLL, однако автор библиотеки сознательно предоставляет вам возможность инициализировать SAPI в любой момент работы вашей программы.

В случае успешной инициализации Speech API функция возвращает ноль.

procedure PSpeak(var PText : longword);

Проговаривает заканчивающуюся нулем ASCII-строку, находящеюся по адресу PText.

procedure Speak( Text : string);stdcall; - Проговаривает строку Text.

Удобно для вызова из Delphi программ, для других компиляторов рекомендуется использовать PSpeak.

procedure SelectEngine(EngineName: String);stdcall;

выбор "движка" синтезатора речи. Указывает, какой синтезатор речи необходимо задействовать для синтеза речи. Параметр EngineName должен содержать одно из имен доступных синтезаторов речи. Имена всех доступных синтезаторов можно получить вызвав функцию GetEngines. Либо, вы должны быть уверены в том, что указываете правильное(существующее) имя синтезатора.

function GetEngineInfo(EngineName: String; var Info: TSpeechEngineInfo):byte;stdcall;

Возвращает сведения о синтезаторе имя которого указано в параметре EngineName.Сведения возвращаются в записе Info, ниже приводится описание ее полей. Назначение этой записи информативное, поэтому содержимое ее полей зависит от производителей синтезатора и часто бесполезны.

Назначение некоторых полей записи Info для вызова GetEngineInfo, тип записи смотрите в файле SAPI_Dll_Source\SAPIINTERFACE.PAS

Name: String; название синтезатора
Language: String; язык
Manufacturer: String; метка производителя
Speaker: String; имя диктора (не путать с названием синтезатора)
MaxPitch: Word; предельное значение тембра
MinPitch: Word; минимальное значение тембра
MaxSpeed: Longword; предельное значение скорости речи
MinSpeed: Longword; минимальное значение скорости речи
MaxVolume: Longword; предельное значение громкости
MinVolume: Longword; минимальное значение громкости

function GetEngines:TStrings; возвращает список доступных синтезаторов. Пример работы со списком на Delphi смотрите в Call_Demo/unit1.pas. Для других компиляторов эта функция может оказаться нерабочей из за отсутствия типа TStrings.

function GetPitch: Word; возвращает тембр речи выбранного ( SelectEngine ) синтезатора.

function GetSpeed: Dword; возвращает скорость речи выбранного синтезатора.

function GetVolume: Dword;stdcall; возвращает громкость речи выбранного синтезатора.

procedure SetPitch(const Value: Word);stdcall;

procedure SetSpeed(const Value: Dword);stdcall;

procedure SetVolume(const Value: Dword);stdcall;

Соответственно устанавливают уровни - тембра, скорости и громкости для выбранного синтезатора.

Внимание - перед вызовом этих процедур, обратитесь к GetEngineInfo для того, что бы узнать предельно допустимые значения(Min..Max) тембра, скорости, громкости. Либо воспользуйтесь приведенными ниже функциями :

function GetMaxPitch: Word;stdcall;
function GetMaxSpeed: Dword;stdcall;
function GetMaxVolume: Dword;stdcall;
function GetMinPitch: Word;stdcall;
function GetMinSpeed: Dword;stdcall;
function GetMinVolume: Dword;stdcall;

эта группа функций возвращает допустимые максимальные и минимальные значения тембра, скорости и громкости речи для выбранного синтезатора.

Procedure Pause;stdcall; реализует паузу синтеза речи. Синтез (чтение) может быть возобновлен вызовом процедуры Resume.

Procedure Pause;stdcall; Возобновляет чтение после вызова Pause.

Procedure Stop;stdcall; прекращает чтение, очищает очередь синтеза.

procedure DestroySpeech; завершает работу с SAPI, должна быть вызвана перед выгрузкой SAPI_DLL.DLL. После ее выполнения все экспортируемые процедуры и функции кроме CreateSpeech более недоступны, до следующего вызова CreateSpeech, SelectEngine. DestroySpeech желательно вызывать перед завершением работы вашей программы, когда синтез речи больше не нужен, либо для освобождения оперативной памяти.

Процедуры и функции, добавленные в версии 1.2

function GetEnginesCount:word;stdcall; Узнать количество дикторов установленных на компьютере.

procedure PSpeak( Text: LPCTSTR );stdcall; Произнести текст. Обратите внимание на тип параметра. Процедура сделана для совместимости модуля с такими языками программирования как C/C++ и ASSEMBLER

procedure PSelectEngine(EngineName: LPCTSTR);stdcall; Выбрать диктора. То же самое что и SelectEngine но с другим типам параметра.

procedure PSelectEngineNumber(EngineNumber: word);stdcall; Новая процедура. Выбрать диктора по его порядковому номеру. Используйте совместно с GetEnginesCount.

function PGetEngines( number : word):LPCTSTR;stdcall; Возвращает имя диктора с порядковым номером number. Диктор может быть не выбран до вызова этой процедуры. Используйте GetEnginesCount, а затем - PGetEngines(0..GetEnginesCount-1), что бы узнать имена всех дикторов, установленных на вашем компьютере.

Связаться с автором

С автором библиотеки можно связаться по e-mail
или по ICQ: 225-410-492.


Распространение материалов сайта означает, что распространитель принял условия лицензионного соглашения.
Идея и реализация: © Владимир Довыденков и Анатолий Камынин,  2004-2024