Delphi-PRAXiS
Seite 3 von 4     123 4      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Software-Projekte der Mitglieder (https://www.delphipraxis.net/26-software-projekte-der-mitglieder/)
-   -   Spracherkennung (Einzelworterkennung) (https://www.delphipraxis.net/100509-spracherkennung-einzelworterkennung.html)

Timi-loader 12. Mai 2008 12:05

Re: Spracherkennung (Einzelworterkennung)
 
hmm hab personen und aufnahmen erstellt sehe die auch in der datenbank aber die erkunng klappt überhauptnicht.

also ich hab son stück einer aufnahme per stereo mix aufgenommen und in der db. wenn ich genau das selbe stück jetzt nochmal abspiele bei der erkennung dann sehe ich auch eine kurve aber er meint immer kein symbol erkannt.

:pale:

omata 12. Mai 2008 15:22

Re: Spracherkennung (Einzelworterkennung)
 
Hallo Timi-loader,

ich habe mir das nochmal angesehen und konnte dein Problem nachvollziehen. Du hast vermutlich nur eine Aufnahme, selbst bei mehreren, die sehr stark in der Länge variiren tritt dieses Problem auf. Dann kann nämlich keine Prozentschwelle berechnet werden bzw. sie ist immer auf 0% und du erhälst deshalb keine Erkennung. Probiere erstmal aus, ob du eine Erkennung erhälst, wenn du die Schwelle auf 0% stellst.
Ich habe den Quellcode angepasst und neu hochgeladen. Der Benutzer kann nun entscheiden ob ein Längenvergleich durchgeführt werden soll. Ist dies der Fall, werden nur Signale verglichen, die in etwa gleichlang sind (das war bis jetzt der Default). Dann muss nicht jedes Muster mit dem zu erkennenden verglichen werden. Das erhöht die Geschwindigkeit, allerdings wenn nur noch ein Muster passt und damit nur als einziges zum Vergleichen herangezogen wird, dann kann keine Prozentschwelle ermittelt werden.
Dies wird jetzt anstelle der Prozentangabe ausgegeben und die Erkennungsschwelle wird dann nicht mehr berücksichtigt. Allerdings ist dann auch keine Aussage mehr möglich, ob das gefundene Muster auch wirklich dem gerade eingesprochenem entspricht.

Mir ist diese Problematik bis jetzt nicht aufgefallen, weil ich immer mehrere Muster (Zahlen: 0-9) in der Datenbank vorliegen hatte und diese eben alle ungefähr gleich lang sind, so das immer mehrere zu einem Vergleich herangezogen wurden.

Vielen Dank für diesen Hinweis, hoffe ich konnte dir das Problem näherbringen.

Grüsse
Thorsten

Zacherl 12. Mai 2008 16:39

Re: Spracherkennung (Einzelworterkennung)
 
Bei mir kommt es direkt nach Programmstart zu folgendem Fehler:

Code:
---------------------------
Spracherkennung
---------------------------
Aufnahme kann nicht initialisiert werden.
---------------------------
OK  
---------------------------
OS: Windows Vista 32 Bit.

omata 12. Mai 2008 17:01

Re: Spracherkennung (Einzelworterkennung)
 
Das ist schade, ich habe kein Vista.

Quellcode ist ja für eine Fehlersuche vorhanden.

Edit: Hast du eventuell mehrere Soundausgabemöglichkeiten, aber nicht alle davon können aufnehmen?
Startet das Programm trotzdem? Wenn ja, könntest du mal ein anderes Device auswählen.

Gruss
Thorsten

Timi-loader 12. Mai 2008 20:26

Re: Spracherkennung (Einzelworterkennung)
 
hallo omata.

ok jetzt versteh ich das problem. denn die aufnahmen die live gemacht werden fangen immer anders an und enden anders. also dein programm nimmt ja ein neues wort dann wahr wenn ne pause war. und ja hab auch nur wenig aufnahmen drinn bzw nur die eine in verschiedenen längen. aber auch bei 0% klappt es nicht. kannst du dein programm so umbaun, dass es auch teile aus einem andern erkennt? bzw wäre auch ne art live-mode dann gut. (also dass man praktisch doppelt recordet immer bei der hälfte des einen den andern schon recordern so könnte man nix verpassen)
den neuen quellcode kann ich leider nicht testen da ich nicht klar komme die zeus-komponenten zu installen (dbrtl fehlt.. ach ich hasse delphi personal)

mfg

achso: bei vielen dazugesprochenen zahlen noch und 0% erkennt er was. aber dann eben alles quer durchs beet^^

omata 12. Mai 2008 20:50

Re: Spracherkennung (Einzelworterkennung)
 
Hallo Timi-loader,

die Personal-Version hat kein TDataSet, deshalb kannst du die ZEOS-Komponenten nicht installieren.

Wie der Titel schon sagt kann dieses Programm eine Einzelworterkennung. In einem Wort sind normalerweise keine Pausen. Der verwendete DTW-Algorithmus ist zwar ziemlich genau in der Erkennung aber es ist nunmal systembedingt, dass alle Muster verglichen werden müssen. Da der Algorithmus relativ aufwendig ist wird das System bei vielen Mustern sehr langsam.
Ich weiss nicht was du vorhast und was du dir vorstellst, was dieses System im Stande ist zu leisten. Spracherkennung ist nichts triviales. Ich habe da Monate dran gesessen und das mal eben umzuprogrammieren ist nicht so einfach bzw. wenn ich da keine wirkliche Verbesserung erkennen kann, dann werde ich da keine Zeit rein investieren. Das System ist schon hoch optimiert, aber Zaubern kann es nunmal nicht.
Das Hauptproblem ist nunmal die Größe des Wortschatzes, der DTW ist nur anwendbar bei einem kleinen oder reduzierbaren Wortschatzumfang. Da ist er dann aber unschlagbar!

Vielleicht solltest du dich mal mit HMMs und KNNs beschäftigen, mir waren die HMMs damals allerdings einfach zu kompliziert. Siehe hier.

Was du da genau machen möchtest verstehe ich allerdings noch nicht so ganz.

Gruss
Thorsten

Zacherl 12. Mai 2008 21:15

Re: Spracherkennung (Einzelworterkennung)
 
Ne also das Programm startet nicht. Es folgen noch 3 bis 4 weitere Fehlermeldungen, die aber nur Zugriffsverletzungen melden. Wenn ich Zeit habe, kann ich mal bisschen debuggen.

Blacky1812 3. Aug 2008 14:04

Re: Spracherkennung (Einzelworterkennung)
 
Hallo,
ich wollte eigentlich ein kleines privates Programm schreiben auf der Basis von diesem hier... jedoch habe ich Probleme, es überhaupt zu compilieren.

Das Problem liegt in der Unit "Main" (und weiterhin wohl auch überall dort, wo die Dateien fehlen). Hier fehlen einige dcu's:

Delphi-Quellcode:
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ComCtrls, ExtCtrls, BassPlayerExU, BassTypenU, Menus,
  ZConnection, DB, ZAbstractRODataset, ZAbstractDataset, ZDataset, Grids,
  DBGrids, DBCtrls, DmConnectionU, FrameAufnahmeU, FFTU, Math, AuswertungU,
  BassChannelU, WaveToolsU, WaveAnalyseU, WaveFrameU, WaveTypenU,
  BassRecordingU, Spin;
Fehlermeldung:
Zitat:

[DCC Fehler] Main.pas(18 ): F1026 Datei nicht gefunden: 'ZConnection.dcu'
sowie die gleiche jeweils für: ZAbstractRODataset.dcu, ZAbstractDataset.dcu und ZDataset.dcu

Was mache ich falsch? Fehlen mir einige Daten, die für das Programm nötig sind? Ich dachte, es wäre so weit OpenSource und würde komplett zum Download stehen.
Google spuckt da auch nichts aus.

Hat jemand nen heißen Tip für mich?

Grüße,
Blacky1812

helgew 3. Aug 2008 14:21

Re: Spracherkennung (Einzelworterkennung)
 
nette Sache... werde ich heute Abend testen :>

omata 3. Aug 2008 14:51

Re: Spracherkennung (Einzelworterkennung)
 
Zitat:

Zitat von Blacky1812
Was mache ich falsch? Fehlen mir einige Daten, die für das Programm nötig sind?

Erster Beitrag:
Zitat:

Zitat von omata
Wichtig für den Quellcode: Zeos-Komponenten



Alle Zeitangaben in WEZ +1. Es ist jetzt 09:58 Uhr.
Seite 3 von 4     123 4      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz