Fangjun Kuang
Committed by GitHub

Add missing field for two-pass APK. (#511)

@@ -25,9 +25,14 @@ data class OnlineParaformerModelConfig( @@ -25,9 +25,14 @@ data class OnlineParaformerModelConfig(
25 var decoder: String = "", 25 var decoder: String = "",
26 ) 26 )
27 27
  28 +data class OnlineZipformer2CtcModelConfig(
  29 + var model: String = "",
  30 +)
  31 +
28 data class OnlineModelConfig( 32 data class OnlineModelConfig(
29 var transducer: OnlineTransducerModelConfig = OnlineTransducerModelConfig(), 33 var transducer: OnlineTransducerModelConfig = OnlineTransducerModelConfig(),
30 var paraformer: OnlineParaformerModelConfig = OnlineParaformerModelConfig(), 34 var paraformer: OnlineParaformerModelConfig = OnlineParaformerModelConfig(),
  35 + var zipformer2Ctc: OnlineZipformer2CtcModelConfig = OnlineZipformer2CtcModelConfig(),
31 var tokens: String, 36 var tokens: String,
32 var numThreads: Int = 1, 37 var numThreads: Int = 1,
33 var debug: Boolean = false, 38 var debug: Boolean = false,
1 hs_err* 1 hs_err*
2 -main.jar  
3 vits-zh-aishell3 2 vits-zh-aishell3
  3 +*.jar
  1 +../android/SherpaOnnx2Pass/app/src/main/java/com/k2fsa/sherpa/onnx/SherpaOnnx.kt
@@ -51,3 +51,21 @@ kotlinc-jvm -include-runtime -d main.jar Main.kt WaveReader.kt SherpaOnnx.kt fak @@ -51,3 +51,21 @@ kotlinc-jvm -include-runtime -d main.jar Main.kt WaveReader.kt SherpaOnnx.kt fak
51 ls -lh main.jar 51 ls -lh main.jar
52 52
53 java -Djava.library.path=../build/lib -jar main.jar 53 java -Djava.library.path=../build/lib -jar main.jar
  54 +
  55 +# For two-pass
  56 +
  57 +if [ ! -f ./sherpa-onnx-streaming-zipformer-en-20M-2023-02-17/encoder-epoch-99-avg-1.int8.onnx ]; then
  58 + wget https://github.com/k2-fsa/sherpa-onnx/releases/download/asr-models/sherpa-onnx-streaming-zipformer-en-20M-2023-02-17.tar.bz2
  59 + tar xvf sherpa-onnx-streaming-zipformer-en-20M-2023-02-17.tar.bz2
  60 + rm sherpa-onnx-streaming-zipformer-en-20M-2023-02-17.tar.bz2
  61 +fi
  62 +
  63 +if [ ! -f ./sherpa-onnx-whisper-tiny.en/tiny.en-encoder.int8.onnx ]; then
  64 + wget https://github.com/k2-fsa/sherpa-onnx/releases/download/asr-models/sherpa-onnx-whisper-tiny.en.tar.bz2
  65 + tar xvf sherpa-onnx-whisper-tiny.en.tar.bz2
  66 + rm sherpa-onnx-whisper-tiny.en.tar.bz2
  67 +fi
  68 +
  69 +kotlinc-jvm -include-runtime -d 2pass.jar test-2pass.kt WaveReader.kt SherpaOnnx2Pass.kt faked-asset-manager.kt
  70 +ls -lh 2pass.jar
  71 +java -Djava.library.path=../build/lib -jar 2pass.jar
  1 +package com.k2fsa.sherpa.onnx
  2 +
  3 +fun main() {
  4 + test2Pass()
  5 +}
  6 +
  7 +fun test2Pass() {
  8 + val firstPass = createFirstPass()
  9 + val secondPass = createSecondPass()
  10 +
  11 + val waveFilename = "./sherpa-onnx-streaming-zipformer-en-20M-2023-02-17/test_wavs/0.wav"
  12 +
  13 + var objArray = WaveReader.readWaveFromFile(
  14 + filename = waveFilename,
  15 + )
  16 + var samples: FloatArray = objArray[0] as FloatArray
  17 + var sampleRate: Int = objArray[1] as Int
  18 +
  19 + firstPass.acceptWaveform(samples, sampleRate = sampleRate)
  20 + while (firstPass.isReady()) {
  21 + firstPass.decode()
  22 + }
  23 +
  24 + var text = firstPass.text
  25 + println("First pass text: $text")
  26 +
  27 + text = secondPass.decode(samples, sampleRate)
  28 + println("Second pass text: $text")
  29 +}
  30 +
  31 +fun createFirstPass(): SherpaOnnx {
  32 + val config = OnlineRecognizerConfig(
  33 + featConfig = getFeatureConfig(sampleRate = 16000, featureDim = 80),
  34 + modelConfig = getModelConfig(type = 1)!!,
  35 + endpointConfig = getEndpointConfig(),
  36 + enableEndpoint = true,
  37 + )
  38 +
  39 + return SherpaOnnx(config = config)
  40 +}
  41 +
  42 +fun createSecondPass(): SherpaOnnxOffline {
  43 + val config = OfflineRecognizerConfig(
  44 + featConfig = getFeatureConfig(sampleRate = 16000, featureDim = 80),
  45 + modelConfig = getOfflineModelConfig(type = 2)!!,
  46 + )
  47 +
  48 + return SherpaOnnxOffline(config = config)
  49 +}