Перейти к содержанию
Fire Monkey от А до Я
  • 0

Распознавание речи


Martifan

Вопрос

Всем доброго времени сутки

решил в приложение реализовать распознавание речи благодаря к примеру Ярослава все работает так как надо:

unit main;

interface

uses
  System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
  FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs,
  FMX.Controls.Presentation, FMX.StdCtrls, FMX.ScrollBox, FMX.Memo;

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

var
  Form1: TForm1;

implementation

{$R *.fmx}

uses
  Androidapi.JNI.GraphicsContentViewText, Androidapi.JNI.Speech, Androidapi.Helpers, FMX.Helpers.Android;

procedure OpenSpeechRecognizer;
var
  Intent: JIntent;
begin
  Intent := TJIntent.JavaClass.init(TJRecognizerIntent.JavaClass.ACTION_RECOGNIZE_SPEECH);
  Intent.putExtra(TJRecognizerIntent.JavaClass.EXTRA_PROMPT, StringToJString('Говорите'));
  Intent.putExtra(TJRecognizerIntent.JavaClass.EXTRA_LANGUAGE_MODEL, TJRecognizerIntent.JavaClass.LANGUAGE_MODEL_WEB_SEARCH);
  Intent.putExtra(TJRecognizerIntent.JavaClass.EXTRA_MAX_RESULTS, 1);
  Intent.putExtra(TJRecognizerIntent.JavaClass.EXTRA_LANGUAGE, StringToJString('ru-RU'));
  SharedActivity.startActivityForResult(Intent, 1);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  OpenSpeechRecognizer;
end;

end.

Androidapi.JNI.Speech.pas

{*********************************************************************
 *
 * This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
 *
 * Autor: Brovin Y.D.
 * E-mail: y.brovin@gmail.com
 *
 ********************************************************************}
unit Androidapi.JNI.Speech;

interface

uses
  Androidapi.JNIBridge, Androidapi.JNI.JavaTypes;

type
  JRecognizerIntentClass = interface(JObjectClass)
  ['{8AB8D43F-178D-4C79-9FC9-6DDA3D52CEBF}']
    {Property Methods}
    function _GetACTION_RECOGNIZE_SPEECH: JString;
    function _GetEXTRA_PROMPT: JString;
    function _GetEXTRA_LANGUAGE_MODEL: JString;
    function _GetEXTRA_MAX_RESULTS: JString;
    function _GetEXTRA_LANGUAGE: JString;
    function _GetLANGUAGE_MODEL_WEB_SEARCH: JString;
    {Properties}
    property ACTION_RECOGNIZE_SPEECH: JString read _GetACTION_RECOGNIZE_SPEECH;
    property EXTRA_PROMPT: JString read _GetEXTRA_PROMPT;
    property EXTRA_LANGUAGE_MODEL: JString read _GetEXTRA_LANGUAGE_MODEL;
    property EXTRA_MAX_RESULTS: JString read _GetEXTRA_MAX_RESULTS;
    property EXTRA_LANGUAGE: JString read _GetEXTRA_LANGUAGE;
    property LANGUAGE_MODEL_WEB_SEARCH: JString read _GetLANGUAGE_MODEL_WEB_SEARCH;
  end;

  [JavaSignature('android/speech/RecognizerIntent')]
  JRecognizerIntent = interface(JObject)
  ['{5AE872F8-D057-4966-97B9-F8DD239C3656}']
  end;
  TJRecognizerIntent = class(TJavaGenericImport<JRecognizerIntentClass, JRecognizerIntent>) end;

implementation

initialization
  TRegTypes.RegisterType('Androidapi.JNI.GraphicsContentViewText.JDataSetObserver', TypeInfo(Androidapi.JNI.Speech.JRecognizerIntent));
end.

вот при нажатии кнопки появляется окно который слушает ваш речь и распознаёт:

image.thumb.png.27f86085bf7853082d1f83fe9d2202bc.png

вроде все работает но есть маленькая проблема это форма очень быстро перестают слушать то есть приходит пассивном режиме:

image.thumb.png.ce9a18fb51bfe4118f6337210cfcbc14.png

то есть если в время разговора остановишься несколько секунд (2-3) то он пассивным становится

но если использовать распознавание речи клавиатуры:

image.thumb.png.536e446e355b82d8d8c6c35bfd0ef510.png

то появляется форма на клавиатуре и очень долго держит паузу:

image.thumb.png.401ec9d2ad45b27db15e1cda6b1ffa19.png

а теперь вопрос: 
1) как мне заставить так же долго держать паузу на первом варианте 
2) какая отличия между этими 2 формами?
3) если можно первый вариант сделать на iOS?  

всем за ранее спасибо :)

Ссылка на комментарий

Рекомендуемые сообщения

Ответов пока нет

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить на вопрос...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

  • Похожий контент

  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...