Последняя версия DataExpress 26.8.17

Изображение Скачать | Изображение Что нового? | Демо

Проигрывание звука и озвучивание текста Windows

Расширение функционала и существующих возможностей программы с помощью модулей расширений и плагинов от сторонних разработчиков.

Модератор: Разработчики расширений

mobmk
Интересующийся
Сообщения: 69
Зарегистрирован: 26 янв 2026, 01:40
Откуда: Землянин
Благодарил (а): 57 раз
Поблагодарили: 19 раз

Проигрывание звука и озвучивание текста Windows

Сообщение mobmk » 07 авг 2026, 18:09

Расширение «Мультимедиа»: Фоновый звук (WAV) и Синтез речи (SAPI)

Предлагаю простенькое готовое расширение для DataExpress, которое добавляет две функции для взаимодействия с пользователем с помощью звуков и голоса. Обе функции работают в фоновом режиме (асинхронно) — программа не подвисает во время воспроизведения, и пользователь может сразу продолжать работу.

Основные фишки модуля:
  • Умные относительные пути — функции не привязаны к конкретному диску или папке (базу можно носить на флешке).
  • Всеядный синтаксис слэшей — модуль сам исправляет прямые веб-слэши / на обратные виндовые \.
  • Синтез речи без файлов — робот говорит любой переданный текст встроенным голосом Windows (SAPI), искать и скачивать аудиофайлы больше не нужно.
  • Защита от сбоев — если в операционной системе вырезан голосовой движок, программа не выдаст ошибку, а просто пропустит шаг.


Как использовать в проекте:

После добавления расширения функции появятся в Дизайнере выражений в группе «Мультимедиа».
Их можно использовать в действиях кнопок без написания кода формы или вызывать по условию.

Примеры вызовов:

Код: Выделить всё

// Проиграть файл ding.wav из папки tools, которая лежит рядом с DataExpress.exe
PLAY_SOUND('/tools/ding.wav')

// Озвучить событие голосом робота (используется стандартный русский голос Windows)
SAY_TEXT('Появилась новая информация')



Код расширения:

Код: Выделить всё

{@module
Author=
Version=1.0
Description=<b>Модуль Мультимедиа</b><p>Добавляет в систему функции фонового воспроизведения звуковых файлов (WAV) с автоматической обработкой относительных путей и голосового оповещения через встроенный синтезатор речи Windows (SAPI).
@}
{@function
OrigName=PLAY_SOUND
Name=PLAY_SOUND
Args=v
Result=
Group=Мультимедиа
Description=Процедура проигрывания звука с поддержкой относительных и абсолютных путей.<p><b>Параметры:</b> путь к имени аудиофайла (можно использовать / или \)<p><b>Пример:</b><p><code>PLAY_SOUND('/tools/ding.wav')</code><p><code>PLAY_SOUND('C:\Windows\Media\tada.wav')</code>
@}
function PlaySound(pszSound: PChar; hmod: WORD; fdwSound: integer): boolean;
external 'PlaySoundA@winmm.dll stdcall';
var GlobalVoice: Variant;
procedure PLAY_SOUND(v: variant);
var
  FullPath: String;
  i: Integer;
begin
  if (v = Null) or (VarToStr(v) = '') then Exit;
  FullPath := VarToStr(v);
  for i := 1 to Length(FullPath) do
    if FullPath[i] = '/' then FullPath[i] := '\';
  if (Length(FullPath) > 0) and (FullPath = '\') then
    Delete(FullPath, 1, 1);
  if Pos(':', FullPath) = 0 then
    FullPath := ExtractFilePath(Application.ExeName) + FullPath;
  PlaySound(PChar(FullPath), 0, 1);
end;
{@function
OrigName=SAY_TEXT
Name=SAY_TEXT
Args=v
Result=
Group=Мультимедиа
Description=Голосовое оповещение (синтез речи Windows). Робот произнесет переданный текст.<p><b>Параметры:</b> Текст для озвучки<p><b>Пример:</b><p><code>SAY_TEXT('Появилась новая информация')</code>
@}
procedure SAY_TEXT(v: variant);
begin
  if (v = Null) or (VarToStr(v) = '') then Exit;
  try
    if VarIsEmpty(GlobalVoice) then
      GlobalVoice := CreateOleObject('SAPI.SpVoice');
    GlobalVoice.Speak(VarToStr(v), 1);
  except
  end;
end;
Вложения
sound_and_speech.epas
(2.37 КБ) 13 скачиваний

Теги:

memo
Интересующийся
Сообщения: 152
Зарегистрирован: 08 окт 2019, 22:54
Благодарил (а): 54 раза
Поблагодарили: 16 раз

Проигрывание звука и озвучивание текста Windows

Сообщение memo » 07 авг 2026, 21:19

Игрушки со звуками — это интересно. Но если бы можно было регулировать громкость сигнала и голоса, это было бы ещё лучше.


Вернуться в «Каталог расширений»