Последние записи
- TChromium (CEF3), сохранение изображений
- Как в Delphi XE обнулить таймер?
- Изменить цвет шрифта TextBox на форме
- Ресайз PNG без потери прозрачности
- Вывод на печать графического файла
- Взаимодействие через командную строку
- Перенести программу из Delphi в Lazarus
- Определить текущую ОС
- Автоматическая смена языка (раскладки клавиатуры)
- Сравнение языков на массивах. Часть 2
Интенсив по Python: Работа с API и фреймворками 24-26 ИЮНЯ 2022. Знаете Python, но хотите расширить свои навыки?
Slurm подготовили для вас особенный продукт! Оставить заявку по ссылке - https://slurm.club/3MeqNEk
Online-курс Java с оплатой после трудоустройства. Каждый выпускник получает предложение о работе
И зарплату на 30% выше ожидаемой, подробнее на сайте академии, ссылка - ttps://clck.ru/fCrQw
8th
Июл
Озвучка часов
Posted by maloy under Общалка
beegl
Добрый день, помогите найти ссылку на озвучку времени, т.е. 1-2-3-4- .. 12 — хочу руссифицировать программу One Clock
raxp
…воспользуйся синтезатором, «Аленка». Впрочем, у меня есть свои голосовые часы с мэ-жо, чуть попозжа поищу wav-ки или уже в ресурсе скину.
//-----------------------------------------
// Voice
// Модуль озвучки времени М/Ж
//
// Author: Бадло Сергей Григорьевич
// H-page: http://raxp.radioliga.com
// Cистемные требования: Win OS + audiocard
//-----------------------------------------
unit voice;
interface
uses windows, sysutils, mmsystem;
procedure speek;
var nsp: integer=0;
speek_,tspeek: boolean;
res_:array of string;
tmr2:integer;
implementation
{$R audio\all.res}
procedure play(p:string);
var WaveHandle:THandle;
WavePointer:pointer;
begin
if tspeek then p:='z'+p
else p:='g'+p;
WaveHandle:= FindResource(hInstance,pchar(p),RT_RCDATA);
if WaveHandle<>0 then begin
WaveHandle:= LoadResource(hInstance,WaveHandle);
if WaveHandle<>0 then begin
WavePointer:= LockResource(WaveHandle);
try sndPlaySound(WavePointer,snd_Memory OR SND_aSYNC); except end;
UnlockResource(WaveHandle);
FreeResource(WaveHandle);
end
end
end;
procedure speektxt;
var hour,min: integer;
temp: string;
begin
temp:= formatdatetime('hh:mm',time);
hour:= strtoint(temp[1]+temp[2]);
min := strtoint(temp[4]+temp[5]);
setlength(res_,1);
//res_[length(res_)-1]:= 'v'; setlength(res_,length(res_)+1);
//часы-
if (hour=1)or(hour=2) then res_[length(res_)-1]:= inttostr(hour)+'h'; //один,два
if (hour<21)and(hour<>1)and(hour<>2) then res_[length(res_)-1]:= inttostr(hour);
if hour>20 then begin
res_[length(res_)-1]:= '20';
setlength(res_,length(res_)+1);
if (hour=21)or(hour=22) then res_[length(res_)-1]:= inttostr(hour-20)+'h';
if (hour>22) then res_[length(res_)-1]:= inttostr(hour-20)
end;
//слова-
setlength(res_,length(res_)+1);
if ((hour=1)or(hour=21)) then res_[length(res_)-1]:= 'hr1'; //час
if ((hour=2)or(hour=3)or(hour=4)or(hour=22)or(hour=23)or(hour=24)) then res_[length(res_)-1]:= 'hr2'; //часа
if ((hour>4)and(hour<21))or(hour=0) then res_[length(res_)-1]:= 'hrs'; //часов
//минуты-
setlength(res_,length(res_)+1);
//1 2
if (min=1)or(min=2) then res_[length(res_)-1]:= inttostr(min)+'m'; //одна,две
//3-20
if (min<21)and(min<>1)and(min<>2) then res_[length(res_)-1]:= inttostr(min);
//21-59
if min>20 then begin
//30 40 50
res_[length(res_)-1]:= inttostr(trunc(min/10)*10); //десятки
//20+1 - 20+9 ...
setlength(res_,length(res_)+1);
if (min-trunc(min/10)*10=1)or(min-trunc(min/10)*10=2) then res_[length(res_)-1]:= inttostr(min-trunc(min/10)*10)+'m'; //1-2
if (min-trunc(min/10)*10<>0)and(min-trunc(min/10)*10<>1)and(min-trunc(min/10)*10<>2) then res_[length(res_)-1]:= inttostr(min-trunc(min/10)*10)
end;
//слова-
setlength(res_,length(res_)+1);
//1 21 31 41 51
if (min=1)or((min-trunc(min/10)*10=1))and(min<>11) then res_[length(res_)-1]:= 'min1'; //минута
//2 3 4 22 23 24 32 33 34 42 43 44 52 53 54
if (min=2)or(min=3)or(min=4)or
(((min-trunc(min/10)*10=2)or(min-trunc(min/10)*10=3)or(min-trunc(min/10)*10=4))and(min>14)) then res_[length(res_)-1]:= 'min2'; //минуты
//5-20 25-30 35-40 45-50 55-59
if ((min>4)and(min<21))or
((min>24)and(min<31))or
((min>34)and(min<41))or
((min>44)and(min<51))or
((min>54)and(min<60))or(min=0)then res_[length(res_)-1]:= 'mins' //минут
end;
procedure Ontmr2(uTimerID, uMessage: uint;dwUser, dw1, dw2: dword) stdcall;
begin
if speek_ then begin
if nsp<length(res_) then begin
//play-
Play(res_[nsp]);
inc(nsp);
end else speek_:= false
end
end;
procedure speek;
begin
timeKillEvent(tmr2);
nsp:= 0;
speektxt;
speek_:= true;
tmr2:= timesetevent(1000, 0, @Ontmr2, 0, TIME_PERIODIC)
end;
end.
оно вам не надо, но пусть будет, может кому пригодится.
=============
Касательно вашей проблемы — полный архив со звуками (WAV) мэ-жо лежит тут — http://raxp.radioliga.com/cnt/s.php?p=cl_res.zip
Похожие статьи
Купить рекламу на сайте за 1000 руб
пишите сюда - alarforum@yandex.ru
Да и по любым другим вопросам пишите на почту
пеллетные котлы
Пеллетный котел Emtas
Наши форумы по программированию:
- Форум Web программирование (веб)
- Delphi форумы
- Форумы C (Си)
- Форум .NET Frameworks (точка нет фреймворки)
- Форум Java (джава)
- Форум низкоуровневое программирование
- Форум VBA (вба)
- Форум OpenGL
- Форум DirectX
- Форум CAD проектирование
- Форум по операционным системам
- Форум Software (Софт)
- Форум Hardware (Компьютерное железо)