IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Composants FMX Delphi Discussion :

Reconnaissance vocale


Sujet :

Composants FMX Delphi

  1. #1
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 789
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 789
    Billets dans le blog
    65
    Par défaut Reconnaissance vocale
    Titillé par la curiosité (comme d'hab) et ayant découvert que le dictionnaire offline était bien chargé j'ai tenté quelques expériences simples
    je vous propose en direct un téléchargement Pièce jointe 665036 (D12.2 mais je pense qu'avec D12.1 ça passe)
    le but est de changer la direction d'un flêche (un SVG dont je change la rotation)

    Pièce jointe 665037
    mauvaise idée, peut-être, avoir mis la zone de saisie en bas

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    procedure TForm2.edtCmdChangeTracking(Sender: TObject);
    begin
      if Sametext(edtCmd.text, 'Arret') OR Sametext(edtCmd.text, 'Arrêt') then
      begin
        // fonctionne pas ?
        SkSvg1.Visible := false;
        edtCmd.text := emptystr;
      end;
     //   SkSvg1.Visible := true; // évidemment ça pouvait pas !!!!
        if Sametext(edtCmd.text, 'Gauche') then
        begin
          SkSvg1.RotationAngle := 0;
          edtCmd.text := emptystr;
        end;
        if Sametext(edtCmd.text, 'Avant') then
        begin
          SkSvg1.RotationAngle := 90;
          edtCmd.text := emptystr;
        end;
        if Sametext(edtCmd.text, 'Arrière') then
        begin
          SkSvg1.RotationAngle := -90;
          edtCmd.text := emptystr;
        end;
        if Sametext(edtCmd.text, 'Droite') then
        begin
          SkSvg1.RotationAngle := 180;
          edtCmd.text := emptystr;
        end;
    end;
    Problématiques :
    Arrêt ne semble pas fonctionner, mais il me manque peut-être un re-dessin (je viens juste d'y penser, et après nouveau essais c'est ça)
    Hors ligne, je reste bien en mode saisie et le "clavier" à l'écoute. En ligne, la saisie perd le focus (là encore je viens de penser : "et si je rajoutais un focus ?" )
    Maintenant, au démarrage, il faudrait que le clavier soit directement à l'écoute : ça, ça sent le JNI a plein nez
    Images attachées Images attachées  
    Fichiers attachés Fichiers attachés

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 91
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SkSvg1.Visible := false;
    edtCmd.text := emptystr;
    exit;
    sinon il passe à la suite
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SkSvg1.Visible := true;

  3. #3
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 789
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 789
    Billets dans le blog
    65
    Par défaut
    Oui, merci, j'avais finalement trouvé la "faille".
    Entre temps j'ai "amélioré" cette partie pour la rendre plus interlope et surtout plus simple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    procedure TForm2.edtCmdChangeTracking(Sender: TObject);
    var cmd : integer;
    begin
      Memo1.Lines.add(edtCmd.text);
      if Length(edtCmd.text) > 7 then
        edtCmd.text := emptystr;
      if vox.IndexOfName(edtcmd.text)>-1 then
        begin
          cmd:=StrToIntDef(vox.Values[edtCmd.Text],-1);
          SkSvg1.Visible := True;
          case cmd of                         // case pour me laisser des latitudes 
           -1 : SkSvg1.Visible := false;
           else SkSvg1.RotationAngle:=cmd;
          end;
          edtcmd.text:=EmptyStr;
        end;
    end;
    
    procedure TForm2.FormCreate(Sender: TObject);
    var f : String;
        svc : IFMXLocaleService;
    begin
    if SupportsPlatformService(IFMXLocaleService,svc) then
     begin
       f:=Format('commandes_%s',[svc.GetCurrentLangID]);
     end;
    
    {$IFDEF ANDROID}f:=TPath.Combine(Tpath.GetDocumentsPath,f);{$ENDIF}
    {$IFDEF MSWINDOWS}f:=TPath.Combine(Tpath.GetAppPath,f);{$ENDIF}
    vox:=TstringList.Create;
    Vox.CaseSensitive:=false;
    vox.Sorted:=true;
    if FileExists(f) then vox.LoadFromFile(f)
    else begin
      vox.AddPair('Arrêt','');
      vox.AddPair('Arret','');
      vox.AddPair('Stop','');
      vox.AddPair('Avant','90');
      vox.AddPair('Arrière','-90');
      vox.AddPair('Droite','180');
      vox.AddPair('Gauche','0');
      vox.SaveToFile(f);
     end;
    end;
    et maintenant, il me faudrait découvrir comment détecté la langue. Mais, en priorité, mettre la saisie en vocal sans intervention de mes doigts.

    [Edit]pour la langue, c'est fait partie en bleu

Discussions similaires

  1. probleme avec la reconnaissance vocal de Ms agent.
    Par maxoudu328 dans le forum Langage
    Réponses: 7
    Dernier message: 04/05/2006, 00h42
  2. Recherche de moteurs de reconnaissance vocale
    Par Raylemon dans le forum Composants VCL
    Réponses: 1
    Dernier message: 17/08/2005, 18h00
  3. [C#] [WinForms] Reconnaissance vocale ?
    Par vandeyy dans le forum Windows Forms
    Réponses: 3
    Dernier message: 29/11/2004, 15h30
  4. Réponses: 8
    Dernier message: 05/10/2004, 01h02
  5. Logiciel professionnel de reconnaissance vocale
    Par samyl dans le forum Applications et environnements graphiques
    Réponses: 2
    Dernier message: 01/04/2004, 15h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo