Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Мультимедиа
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 26.02.2014, 21:51
Kek Kek вне форума
Прохожий
 
Регистрация: 21.11.2010
Адрес: Москва
Сообщения: 17
Репутация: 10
По умолчанию SAPI5 и WAV файл

В рамках темы
http://www.delphisources.ru/forum/sh...ad.php?t=24587
появилась одна задача.
Для обучения системы распознавания речи необходимо формировать звучание слов.
Делать это через микрофон не хочется, поэтому был установлен SAPI5 и в Delphi сделана прога, которая произносит через динамики любые слова, которые написаны текстом. Набор этих слов в текстовом виде в конечном итоге можно сделать из базы по случайной выборке.
Но есть вопрос. Можно ли сделать так, чтобы звучание текстового слова через SAPI5 превратилось в файл WAV?
Ответить с цитированием
  #2  
Старый 26.02.2014, 23:26
Аватар для Alegun
Alegun Alegun вне форума
LMD-DML
 
Регистрация: 12.07.2009
Адрес: Богородское
Сообщения: 3,025
Версия Delphi: D7E
Репутация: 1834
По умолчанию

Вот пример, вместо Алёнки можно записать и другой голосок
Код:
...
var
SpFileStream: TSpFileStream;
SpVoice: TSpVoice;
Voices:ISpeechObjectTokens;
i:integer;
begin
SpFileStream := TSpFilestream.Create(nil);
SpVoice := TSpVoice.Create(nil);
try
SpFileStream.Format.type_ := SAFT11kHz8BitMono;
SpFileStream.Open('test.wav', SSFMCreateForWrite, FALSE);
SpVoice.AudioOutputStream := SPFileStream.DefaultInterface;
Voices:=SpVoice.GetVoices('', '');
for i := 0 to Voices.Count - 1 do
if Pos('Alyona', Voices.Item(i).GetAttribute('Name')) = 1 then
begin
SpVoice.Voice := Voices.Item(i);
Break;
end;
SpVoice.SynchronousSpeakTimeout := 1000;
SpVoice.Speak('Привет!', SVSFlagsAsync);
SpVoice.WaitUntilDone(3000);
finally
SpVoice.Free;;
SpFileStream.Free;
end;
end;
...
извнт, не могу это проверить экспериментально, нет голосовых движков в данный момент на борту вообще, но говорят что работает, и даже что если покопаться в посылаемых на SAPI флажках (в справке они присутствуют), то можно напр. 20-ти минутную "говорильню" без воспроизведения на динамик записать за 5 мин, быстрее значит раза в четыре
Ответить с цитированием
  #3  
Старый 27.02.2014, 02:11
Kek Kek вне форума
Прохожий
 
Регистрация: 21.11.2010
Адрес: Москва
Сообщения: 17
Репутация: 10
По умолчанию

Цитата:
Сообщение от Alegun
Вот пример, вместо Алёнки можно записать и другой голосок[code]...
Вот, спасибо за оперативность. Все получилось.
Вот пример. Там выбираются голосовые движки, если их несколько и запись производится либо в динамики, либо в файл.
Но вот вопрос. Если я назначаю запись в файл, то как вернуться обратно в динамик?
Ответить с цитированием
  #4  
Старый 27.02.2014, 02:42
Аватар для Alegun
Alegun Alegun вне форума
LMD-DML
 
Регистрация: 12.07.2009
Адрес: Богородское
Сообщения: 3,025
Версия Delphi: D7E
Репутация: 1834
По умолчанию

Цитата:
Сообщение от Kek
...Если я назначаю запись в файл, то как вернуться обратно в динамик?
Похоже эта конструкция однопоточная, во время записи переключить с одного входа на другой нельзя, если правильно помню, даже паузы в этой системе не предусмотрено, пробелом она вроде организуется. Надо справку смотреть
Ответить с цитированием
  #5  
Старый 27.02.2014, 11:41
Kek Kek вне форума
Прохожий
 
Регистрация: 21.11.2010
Адрес: Москва
Сообщения: 17
Репутация: 10
По умолчанию

Цитата:
Сообщение от Alegun
если правильно помню, даже паузы в этой системе не предусмотрено, пробелом она вроде организуется. Надо справку смотреть
Речь идет о несколько ином сценарии. Не во время потока переключать, а после завершения. Смотрел модули, черт ногу сломит...
Ответить с цитированием
  #6  
Старый 27.02.2014, 23:25
Аватар для Alegun
Alegun Alegun вне форума
LMD-DML
 
Регистрация: 12.07.2009
Адрес: Богородское
Сообщения: 3,025
Версия Delphi: D7E
Репутация: 1834
По умолчанию

Вот такой вариант нашёл у себя сорцехранке, старинный но рабочий, посмотрите пжлст
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 21:46.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter