1

Wir verwenden pocketsphinx, um uns zu helfen,. Wav-Dateien in Textdateien zu konvertieren. Wir wissen nicht, warum es uns eine seltsame Ausgabe gibt, da es uns nach der Konvertierung nur <s> und </s> gibt. Wir verwenden das Standardwörterbuch, das Sprachmodell und das Akustikmodell der Community von cmusphinx.Mit <s> und</s> als eine Ausgabe von android pocketsphinx

Hier ist der Code, wir sind für die Umwandlung mit:

package com.example.saling_wika.saling_wika; 


import android.app.Activity; 
import android.net.Uri; 
import android.os.AsyncTask; 
import android.os.Bundle; 
import android.os.Environment; 
import android.util.Log; 
import android.widget.Toast; 


import java.io.File; 
import java.io.FileInputStream; 
import java.io.FileNotFoundException; 
import java.io.IOException; 
import java.io.InputStream; 
import java.net.MalformedURLException; 
import java.net.URL; 
import java.nio.ByteBuffer; 
import java.nio.ByteOrder; 

import edu.cmu.pocketsphinx.Assets; 
import edu.cmu.pocketsphinx.Config; 
import edu.cmu.pocketsphinx.Decoder; 
import edu.cmu.pocketsphinx.Segment; 

import static android.support.v7.widget.StaggeredGridLayoutManager.TAG; 
import static junit.framework.Assert.fail; 





public class ConversionModule extends Activity { 
    static { 
     System.loadLibrary("pocketsphinx_jni"); 
    } 
    Config c; 
    Decoder ps; 
    FileInputStream stream; 

    @Override 
    public void onCreate(Bundle state) { 
     super.onCreate(state); 
     setContentView(R.layout.main); 

     c = Decoder.defaultConfig(); 

    /*Configuring decoder object*/ 
     c.setString("-hmm", new File(Environment.getExternalStorageDirectory() + "/Android/data/com.example.saling_wika.saling_wika/files/sync", "en-us-ptm").getPath()); 
     c.setString("-dict", new File(Environment.getExternalStorageDirectory() + "/Android/data/com.example.saling_wika.saling_wika/files/sync", "cmudict-en-us.dict").getPath()); 
     c.setString("-lm", new File(Environment.getExternalStorageDirectory() + "/Android/data/com.example.saling_wika.saling_wika/files/sync", "weather.dmp").getPath()); 
     c.setBoolean("-allphone_ci", true); 


     ps = new Decoder(c); 


     try { 
      final File file = new File(AudioToConvert.pathko); 
      Uri uri = Uri.fromFile(file); 
      File auxFile = new File(uri.getPath()); 
      stream = new FileInputStream(auxFile); 


     } catch (FileNotFoundException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 




     ps.startUtt(); 
     byte[] b = new byte[4096]; 
     try { 
      int nbytes; 
      while ((nbytes = stream.read(b)) >= 0) { 
       ByteBuffer bb = ByteBuffer.wrap(b, 0, nbytes); 
       short[] s = new short[nbytes/2]; 
       bb.asShortBuffer().get(s); 
       ps.processRaw(s, nbytes/2, false, false); 
      } 
     } catch (IOException e) { 

     } 
     ps.endUtt(); 
     // System.out.println(ps.hyp().getHypstr()); 
     Toast.makeText(getApplicationContext(), ps.hyp().getHypstr(), Toast.LENGTH_LONG).show(); 
     for (Segment seg : ps.seg()) { 
      // System.out.println(seg.getWord()); 
      Toast.makeText(getApplicationContext(),seg.getWord(), Toast.LENGTH_LONG).show(); 
     } 
     ; 


    } 
} 

Antwort

0

Wie auf CMUSphinx forum erklärt Sie mehrere Probleme haben:

  1. Sie müssen bb.order(ByteOrder.LITTLE_ENDIAN); hinzufügen, wie

    in Give a file as input to Pocketsphinx on Android beschrieben
  2. Ihre Eingabedatei sollte PCM-Format 16khz 16 Bit Mono haben. Wenn Sie eine verschlüsselte Datei senden möchten, müssen Sie sie zunächst in Rohdaten dekodieren.

Verwandte Themen