Lazarus и русские TTS движки.

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Lazarus и русские TTS движки.

Сообщение Skina12 » 29.12.2011 23:05:32

Собственно простой пример
Код: Выделить всё
var
SpVoice : Variant;
begin
SpVoice := CreateOleObject('SAPI.SpVoice');
SpVoice.speak('Привет',0)
end;

Но после компиляции русские SAPI5 движки начинают произносить либо бред либо коды символов. Пробовал Utf8toAnsi результат тот же.
Skina12
незнакомец
 
Сообщения: 9
Зарегистрирован: 09.12.2011 02:06:15

Re: Lazarus и русские TTS движки.

Сообщение Odyssey » 29.12.2011 23:56:17

А если попробовать Utf8Decode('привет')? Сам проверить не могу, т.к. сижу под Linux.
Odyssey
энтузиаст
 
Сообщения: 580
Зарегистрирован: 29.11.2007 17:32:24

Re: Lazarus и русские TTS движки.

Сообщение Skina12 » 03.01.2012 22:40:18

Odyssey писал(а):А если попробовать Utf8Decode('привет')?

Error: Type is not automatable: "UnicodeString"
Skina12
незнакомец
 
Сообщения: 9
Зарегистрирован: 09.12.2011 02:06:15

Re: Lazarus и русские TTS движки.

Сообщение Sergei I. Gorelkin » 03.01.2012 23:35:50

может быть, Widestring('привет') ?
Аватара пользователя
Sergei I. Gorelkin
энтузиаст
 
Сообщения: 1407
Зарегистрирован: 24.07.2005 14:40:41
Откуда: Зеленоград

Re: Lazarus и русские TTS движки.

Сообщение Skina12 » 03.01.2012 23:54:47

Sergei I. Gorelkin писал(а):Widestring('привет') ?

Увы без изменений.
Skina12
незнакомец
 
Сообщения: 9
Зарегистрирован: 09.12.2011 02:06:15

Re: Lazarus и русские TTS движки.

Сообщение Максим » 05.01.2012 02:08:56

Версия компилятора какая? Не 2.7.1 случаем?
Аватара пользователя
Максим
энтузиаст
 
Сообщения: 599
Зарегистрирован: 27.07.2007 01:51:43
Откуда: Москва

Re: Lazarus и русские TTS движки.

Сообщение Skina12 » 05.01.2012 12:42:21

Нет пробовал на 2.4.4 и 2.5.1
Skina12
незнакомец
 
Сообщения: 9
Зарегистрирован: 09.12.2011 02:06:15

Re: Lazarus и русские TTS движки.

Сообщение Sergei I. Gorelkin » 05.01.2012 14:10:59

Так оно вообще по-русски говорит? В смысле, можно ли добиться нужного поведения, если не использовать FPC и написать вышеприведенный кусок кода, например, на jscript.
А то я попробовал, оказалось, русская винда просто так по-русски не разговаривает, нужно доустанавливать "голоса".
Аватара пользователя
Sergei I. Gorelkin
энтузиаст
 
Сообщения: 1407
Зарегистрирован: 24.07.2005 14:40:41
Откуда: Зеленоград

Re: Lazarus и русские TTS движки.

Сообщение Skina12 » 05.01.2012 20:17:22

"Голоса" установлены. Испытывал на SpeechCube Николае, RHVoice, InfovoxDesktop Алёне, Loquendo Ольге и RealSpeak Катерине. Да и на старике Delphi данный код работает вполне корректно.
Skina12
незнакомец
 
Сообщения: 9
Зарегистрирован: 09.12.2011 02:06:15

Re: Lazarus и русские TTS движки.

Сообщение Максим » 06.01.2012 04:01:36

Тогда нужен полный компилируемый пример, демонстрирующий проблему. Также не мешало бы узнать версию Винды, её разрядность и язык.
Аватара пользователя
Максим
энтузиаст
 
Сообщения: 599
Зарегистрирован: 27.07.2007 01:51:43
Откуда: Москва

Re: Lazarus и русские TTS движки.

Сообщение Skina12 » 06.01.2012 11:46:43

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

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls;

type

  { TForm1 }

  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { private declarations }
  public
    { public declarations }
  end;

var
  Form1: TForm1;

implementation

uses ComObj;

{$R *.lfm}

{ TForm1 }

procedure TForm1.Button1Click(Sender: TObject);
var
SpVoice : Variant;
begin
SpVoice := CreateOleObject('SAPI.SpVoice');
SpVoice.speak('привет',0)
end;

end.


Максим писал(а):Также не мешало бы узнать версию Винды, её разрядность и язык.

Русские, 32 разрядные Win 7 и Win XP.
Skina12
незнакомец
 
Сообщения: 9
Зарегистрирован: 09.12.2011 02:06:15

Re: Lazarus и русские TTS движки.

Сообщение Sergei I. Gorelkin » 06.01.2012 12:12:44

Да вон вверху вполне компилируемый пример.
С 2.7.1 (или 2.6.0) нужно сохранить файл в кодировке utf8 и вначале добавить {$codepage utf8}. При этом вызов метода выглядит так, как нужно. Если и при этом не заговорит, то я даже не знаю, к чему еще придраться.
Аватара пользователя
Sergei I. Gorelkin
энтузиаст
 
Сообщения: 1407
Зарегистрирован: 24.07.2005 14:40:41
Откуда: Зеленоград

Re: Lazarus и русские TTS движки.

Сообщение Skina12 » 06.01.2012 14:38:07

Sergei I. Gorelkin писал(а): вначале добавить {$codepage utf8}

Вот оно, спасибо. :) Правда если написать
Код: Выделить всё
SpVoice.speak(edit1.Text,0)

то возвращаюсь обратно в начало.
Skina12
незнакомец
 
Сообщения: 9
Зарегистрирован: 09.12.2011 02:06:15

Re: Lazarus и русские TTS движки.

Сообщение GrayEddy » 06.01.2012 14:45:29

Код: Выделить всё
SpVoice.speak(AnsiToUtf8(edit1.Text),0)
?
GrayEddy
постоялец
 
Сообщения: 375
Зарегистрирован: 06.05.2005 09:37:56

Re: Lazarus и русские TTS движки.

Сообщение Skina12 » 06.01.2012 14:48:46

Увы нет
Skina12
незнакомец
 
Сообщения: 9
Зарегистрирован: 09.12.2011 02:06:15

След.

Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 240

Рейтинг@Mail.ru