Java - How to import external packages?

I'm still relatively new to Java. I tried to find a solution, but I think I don’t know enough Java, but I even know exactly what I should look for.

I wanted to try playing with voice recognition, so I downloaded the source code for CMU Sphinx-4 and compiled it. As soon as I had everything that was, I could just launch the attached demos. Then I created a directory (/ Jarvis /) for my code in the directory that contains the Sphinx-4 directory. The Sphinx-4 source directory has a long chain of directories leading to the demos I played with (/Sphinx4-1.0beta6/src/apps/edu/cmu/sphinx/demo/). The demo folder contains the HelloWorld directory, which contains the source code for a simple program for using the Sphinx-4 functions. My first goal is to get a copy of this demo working in a directory that I installed for my own code. So I made a copy of the HelloWorld files and put them in my Jarvis directory. Renamed and changed the code so that everything that used to be HelloWorld is now Jarvis. Unfortunately, my problem is not as simple as the problems with names, but there are ways to search for packages.

In Java, I mainly used only "javac example.java" to compile code in the past. I suppose that in this case I might need something more, but I don’t know for sure. When I try to compile in this way, I get errors:

Jarvis.java:15: error: package edu.cmu.sphinx.frontend.util does not exist import edu.cmu.sphinx.frontend.util.Microphone; ^ Jarvis.java:16: error: package edu.cmu.sphinx.recognizer does not exist import edu.cmu.sphinx.recognizer.Recognizer; ^ Jarvis.java:17: error: package edu.cmu.sphinx.result does not exist import edu.cmu.sphinx.result.Result; ^ Jarvis.java:18: error: package edu.cmu.sphinx.util.props does not exist import edu.cmu.sphinx.util.props.ConfigurationManager; ^ Jarvis.java:28: error: cannot find symbol ConfigurationManager cm; ^ symbol: class ConfigurationManager location: class Jarvis Jarvis.java:31: error: cannot find symbol cm = new ConfigurationManager(args[0]); ^ symbol: class ConfigurationManager location: class Jarvis Jarvis.java:33: error: cannot find symbol cm = new ConfigurationManager(Jarvis.class.getResource("jarvis.config.xml")); ^ symbol: class ConfigurationManager location: class Jarvis Jarvis.java:36: error: cannot find symbol Recognizer recognizer = (Recognizer) cm.lookup("recognizer"); ^ symbol: class Recognizer location: class Jarvis Jarvis.java:36: error: cannot find symbol Recognizer recognizer = (Recognizer) cm.lookup("recognizer"); ^ symbol: class Recognizer location: class Jarvis Jarvis.java:40: error: cannot find symbol Microphone microphone = (Microphone) cm.lookup("microphone"); ^ symbol: class Microphone location: class Jarvis Jarvis.java:40: error: cannot find symbol Microphone microphone = (Microphone) cm.lookup("microphone"); ^ symbol: class Microphone location: class Jarvis Jarvis.java:53: error: cannot find symbol Result result = recognizer.recognize(); ^ symbol: class Result location: class Jarvis 12 errors 

So, I want to include these missing packages. I understand that this is due to the way the paths are defined in the code, but I do not know enough about Java, but I know exactly how to define these paths. I suppose to change something else in the code? Should I configure compilation differently? It would be useful only to press in the right direction.

Below I have included 4 files that were originally obtained from the HelloWorld demo, in which I made minor changes to the names.

Thank you for your time!

Jarvis.java:

 package jarvis.jarvis; import edu.cmu.sphinx.frontend.util.Microphone; import edu.cmu.sphinx.recognizer.Recognizer; import edu.cmu.sphinx.result.Result; import edu.cmu.sphinx.util.props.ConfigurationManager; /** * A simple HelloWorld demo showing a simple speech application built using Sphinx-4. This application uses the Sphinx-4 * endpointer, which automatically segments incoming audio into utterances and silences. */ public class Jarvis { public static void main(String[] args) { ConfigurationManager cm; if (args.length > 0) { cm = new ConfigurationManager(args[0]); } else { cm = new ConfigurationManager(Jarvis.class.getResource("jarvis.config.xml")); } Recognizer recognizer = (Recognizer) cm.lookup("recognizer"); recognizer.allocate(); // start the microphone or exit if the programm if this is not possible Microphone microphone = (Microphone) cm.lookup("microphone"); if (!microphone.startRecording()) { System.out.println("Cannot start microphone."); recognizer.deallocate(); System.exit(1); } System.out.println("Say: (Good morning | Hello) ( Bhiksha | Evandro | Paul | Philip | Rita | Will )"); // loop the recognition until the programm exits. while (true) { System.out.println("Start speaking. Press Ctrl-C to quit.\n"); Result result = recognizer.recognize(); if (result != null) { String resultText = result.getBestFinalResultNoFiller(); System.out.println("You said: " + resultText + '\n'); } else { System.out.println("I can't hear what you said.\n"); } } } } 

jarvis.config.xml:

 <?xml version="1.0" encoding="UTF-8"?> <!-- Sphinx-4 Configuration file --> <!-- ******************************************************** --> <!-- an4 configuration file --> <!-- ******************************************************** --> <config> <!-- ******************************************************** --> <!-- frequently tuned properties --> <!-- ******************************************************** --> <property name="logLevel" value="WARNING"/> <property name="absoluteBeamWidth" value="-1"/> <property name="relativeBeamWidth" value="1E-80"/> <property name="wordInsertionProbability" value="1E-36"/> <property name="languageWeight" value="8"/> <property name="frontend" value="epFrontEnd"/> <property name="recognizer" value="recognizer"/> <property name="showCreations" value="false"/> <!-- ******************************************************** --> <!-- word recognizer configuration --> <!-- ******************************************************** --> <component name="recognizer" type="edu.cmu.sphinx.recognizer.Recognizer"> <property name="decoder" value="decoder"/> <propertylist name="monitors"> <item>accuracyTracker </item> <item>speedTracker </item> <item>memoryTracker </item> </propertylist> </component> <!-- ******************************************************** --> <!-- The Decoder configuration --> <!-- ******************************************************** --> <component name="decoder" type="edu.cmu.sphinx.decoder.Decoder"> <property name="searchManager" value="searchManager"/> </component> <component name="searchManager" type="edu.cmu.sphinx.decoder.search.SimpleBreadthFirstSearchManager"> <property name="logMath" value="logMath"/> <property name="linguist" value="flatLinguist"/> <property name="pruner" value="trivialPruner"/> <property name="scorer" value="threadedScorer"/> <property name="activeListFactory" value="activeList"/> </component> <component name="activeList" type="edu.cmu.sphinx.decoder.search.PartitionActiveListFactory"> <property name="logMath" value="logMath"/> <property name="absoluteBeamWidth" value="${absoluteBeamWidth}"/> <property name="relativeBeamWidth" value="${relativeBeamWidth}"/> </component> <component name="trivialPruner" type="edu.cmu.sphinx.decoder.pruner.SimplePruner"/> <component name="threadedScorer" type="edu.cmu.sphinx.decoder.scorer.ThreadedAcousticScorer"> <property name="frontend" value="${frontend}"/> </component> <!-- ******************************************************** --> <!-- The linguist configuration --> <!-- ******************************************************** --> <component name="flatLinguist" type="edu.cmu.sphinx.linguist.flat.FlatLinguist"> <property name="logMath" value="logMath"/> <property name="grammar" value="jsgfGrammar"/> <property name="acousticModel" value="wsj"/> <property name="wordInsertionProbability" value="${wordInsertionProbability}"/> <property name="languageWeight" value="${languageWeight}"/> <property name="unitManager" value="unitManager"/> </component> <!-- ******************************************************** --> <!-- The Grammar configuration --> <!-- ******************************************************** --> <component name="jsgfGrammar" type="edu.cmu.sphinx.jsgf.JSGFGrammar"> <property name="dictionary" value="dictionary"/> <property name="grammarLocation" value="resource:/edu/cmu/sphinx/demo/jarvis/"/> <property name="grammarName" value="jarvis"/> <property name="logMath" value="logMath"/> </component> <!-- ******************************************************** --> <!-- The Dictionary configuration --> <!-- ******************************************************** --> <component name="dictionary" type="edu.cmu.sphinx.linguist.dictionary.FastDictionary"> <property name="dictionaryPath" value="resource:/WSJ_8gau_13dCep_16k_40mel_130Hz_6800Hz/dict/cmudict.0.6d"/> <property name="fillerPath" value="resource:/WSJ_8gau_13dCep_16k_40mel_130Hz_6800Hz/noisedict"/> <property name="addSilEndingPronunciation" value="false"/> <property name="allowMissingWords" value="false"/> <property name="unitManager" value="unitManager"/> </component> <!-- ******************************************************** --> <!-- The acoustic model configuration --> <!-- ******************************************************** --> <component name="wsj" type="edu.cmu.sphinx.linguist.acoustic.tiedstate.TiedStateAcousticModel"> <property name="loader" value="wsjLoader"/> <property name="unitManager" value="unitManager"/> </component> <component name="wsjLoader" type="edu.cmu.sphinx.linguist.acoustic.tiedstate.Sphinx3Loader"> <property name="logMath" value="logMath"/> <property name="unitManager" value="unitManager"/> <property name="location" value="resource:/WSJ_8gau_13dCep_16k_40mel_130Hz_6800Hz"/> </component> <!-- ******************************************************** --> <!-- The unit manager configuration --> <!-- ******************************************************** --> <component name="unitManager" type="edu.cmu.sphinx.linguist.acoustic.UnitManager"/> <!-- ******************************************************** --> <!-- The frontend configuration --> <!-- ******************************************************** --> <component name="frontEnd" type="edu.cmu.sphinx.frontend.FrontEnd"> <propertylist name="pipeline"> <item>microphone </item> <item>preemphasizer </item> <item>windower </item> <item>fft </item> <item>melFilterBank </item> <item>dct </item> <item>liveCMN </item> <item>featureExtraction </item> </propertylist> </component> <!-- ******************************************************** --> <!-- The live frontend configuration --> <!-- ******************************************************** --> <component name="epFrontEnd" type="edu.cmu.sphinx.frontend.FrontEnd"> <propertylist name="pipeline"> <item>microphone </item> <item>dataBlocker </item> <item>speechClassifier </item> <item>speechMarker </item> <item>nonSpeechDataFilter </item> <item>preemphasizer </item> <item>windower </item> <item>fft </item> <item>melFilterBank </item> <item>dct </item> <item>liveCMN </item> <item>featureExtraction </item> </propertylist> </component> <!-- ******************************************************** --> <!-- The frontend pipelines --> <!-- ******************************************************** --> <component name="dataBlocker" type="edu.cmu.sphinx.frontend.DataBlocker"> <!--<property name="blockSizeMs" value="10"/>--> </component> <component name="speechClassifier" type="edu.cmu.sphinx.frontend.endpoint.SpeechClassifier"> <property name="threshold" value="13"/> </component> <component name="nonSpeechDataFilter" type="edu.cmu.sphinx.frontend.endpoint.NonSpeechDataFilter"/> <component name="speechMarker" type="edu.cmu.sphinx.frontend.endpoint.SpeechMarker" > <property name="speechTrailer" value="50"/> </component> <component name="preemphasizer" type="edu.cmu.sphinx.frontend.filter.Preemphasizer"/> <component name="windower" type="edu.cmu.sphinx.frontend.window.RaisedCosineWindower"> </component> <component name="fft" type="edu.cmu.sphinx.frontend.transform.DiscreteFourierTransform"> </component> <component name="melFilterBank" type="edu.cmu.sphinx.frontend.frequencywarp.MelFrequencyFilterBank"> </component> <component name="dct" type="edu.cmu.sphinx.frontend.transform.DiscreteCosineTransform"/> <component name="liveCMN" type="edu.cmu.sphinx.frontend.feature.LiveCMN"/> <component name="featureExtraction" type="edu.cmu.sphinx.frontend.feature.DeltasFeatureExtractor"/> <component name="microphone" type="edu.cmu.sphinx.frontend.util.Microphone"> <property name="closeBetweenUtterances" value="false"/> </component> <!-- ******************************************************* --> <!-- monitors --> <!-- ******************************************************* --> <component name="accuracyTracker" type="edu.cmu.sphinx.instrumentation.BestPathAccuracyTracker"> <property name="recognizer" value="${recognizer}"/> <property name="showAlignedResults" value="false"/> <property name="showRawResults" value="false"/> </component> <component name="memoryTracker" type="edu.cmu.sphinx.instrumentation.MemoryTracker"> <property name="recognizer" value="${recognizer}"/> <property name="showSummary" value="false"/> <property name="showDetails" value="false"/> </component> <component name="speedTracker" type="edu.cmu.sphinx.instrumentation.SpeedTracker"> <property name="recognizer" value="${recognizer}"/> <property name="frontend" value="${frontend}"/> <property name="showSummary" value="true"/> <property name="showDetails" value="false"/> </component> <!-- ******************************************************* --> <!-- Miscellaneous components --> <!-- ******************************************************* --> <component name="logMath" type="edu.cmu.sphinx.util.LogMath"> <property name="logBase" value="1.0001"/> <property name="useAddTable" value="true"/> </component> </config> 

jarvis.gram:

 #JSGF V1.0; /** * JSGF Grammar for Hello World example */ grammar jarvis; public <greet> = (Good morning | Hello) ( Bhiksha | Evandro | Paul | Philip | Rita | Will ); 

jarvis.Manifest

 Main-Class: jarvis.Jarvis Class-Path: ../sphinx4-1.0beta6/lib/sphinx4.jar ../sphinx4-1.0beta6/lib/WSJ_8gau_13dCep_16k_40mel_130Hz_6800Hz.jar 
+4
source share
2 answers

The compiler uses the "class path" to find the required libraries. There are many ways to set the class path: one uses the CLASSPATH environment variable, the other using the -classpath command line. In conclusion, you can compile with:

 javac -classpath path/to/sphinx.jar jarvis/Jarvis.java 

You will find the full documentation at http://docs.oracle.com/javase/7/docs/technotes/tools/windows/classpath.html

Another thing: your Jarvis class declares that it is in a package named jarvis.jarvis , so the full name of the class will be jarvis.jarvis.Jarvis ... not sure what you mean.

+3
source

Use the "-classpath" parameter to tell javac where to find all the required classes.

 javac -classpath lib/blablabla.jar;lib/foobar.jar 

Setting the path to the class .

0
source

Source: https://habr.com/ru/post/1394911/


All Articles