2016-11-19 2 views
0

BeschreibungMachen Sphinx4 alle Zahlen erkennen benutzerdefinierte mit .gram

Ein Spracherkennungsrechner in Java-Datei mit Sphinx4 library existiert.

Der vollständige Code auf Github: here


Die gram-Datei Ich benutze die unten (on github):

#JSGF V1.0; 

/** 
* JSGF Grammar 
*/ 

grammar grammar; 

public <syntax> = (one | two | three| four| five | six | seven | eight | nine | ten | eleven | twelve | thirteen | fourteen | fifteen | sixteen | seventeen | eighteen | nineteen | twenty) 
                  (plus | minus | multiply | division)       
        (one | two | three| four| five | six | seven | eight | nine | ten | eleven | twelve | thirteen | fourteen | fifteen | sixteen | seventeen | eighteen | nineteen | twenty); 

Das Problem:

I want the program to be able to recognize numbers from 0 to 1 million in English Language.

Im aktuellen Zustand, wie Sie sehen können, können Sie die Nummern (one | two | three| four| five | six | seven | eight | nine | ten | eleven | twelve | thirteen | fourteen | fifteen | sixteen | seventeen | eighteen | nineteen | twenty) erkennen, wie ich sie manuell in die gram file geschrieben habe.

Ich meine, ich muss sie alle manuell in die gram file schreiben (ich kann ein Programm erstellen, um diese Datei zu erzeugen), aber wieder scheint es unmöglich (einige Muster existieren), die Datei wird zu viel Gigabyte sein.


Endlich:

Gibt es eine intelligente Lösung Danke für die Mühe :)


Die neue Grammatik nach Nikolay Lösung ist:

public <number> = (one | two | three | four | five | six | seven | nine | ten 
        | eleven | twelve | thirteen | fourteen | fifteen | sixteen | seventeen | eighteen | nineteen | twenty 
        | thirty | forty | fifty | sixty | seventy | eighty | ninety | hundred | thousand | million | billion)+;     
public <syntax> = <number>{1} (plus | minus | multiply | division){1} <number>{1}; 

Antwort

1

Die Die klügste Lösung ist, einen Text stri zu erkennen ng zuerst. Grammatik sollte nicht komplex sein, es sollte nur die Wörter in Zahlen aufgeführt werden:

grammar number; 

public <number> = (one | two | three | four | five | six | seven | 
nine | ten | eleven | twelve | thirteen | fourteen | fifteen | 
sixteen | seventeen | eighteen | nineteen | twenty | thirty | forty | 
fifty | sixty | seventy | eighty | ninety | hundred | thousand | 
million | and)*; 

Sobald Text erkannt wird, konvertieren Sie es in Zahlen. Sie können überprüfen, How to convert words to a number? für Details.

+0

Nikolay Ich habe den zweiten Teil für die Umwandlung von Wörtern in Zahlen oder Zahlen in Worte gemacht. Das Problem, das ich habe, ist, dass die Grammatikdatei nur die Zahlen erkennt, die ich geschrieben habe ...., '(eins | zwei | drei | vier | fünf | sechs | sieben | acht | neun | zehn | elf | zwölf | dreizehn | vierzehn | fünfzehn | sechzehn | siebzehn | achtzehn | neunzehn | zwanzig) ', ich will, dass es jede Zahl erkennt ... Da ich kein' Sprachmodell' mit einer 'Grammatik' verwenden kann, habe ich hier gestapelt ... Gibt es irgendein spezielles Wort '' das ich in die 'Grammatikdatei' benutzen kann? – GOXR3PLUS

+0

Es gibt keine speziellen Wörter. –

+0

Gibt es einen Weg, dann alle Zahlen mit einer Grammatik (als String-Format) zu erkennen? :) Nur dass ich will, nicht mehr, ich kann die anderen Sachen machen. – GOXR3PLUS

Verwandte Themen