requestBeforeStartAudioRecord method

void requestBeforeStartAudioRecord(
  1. bool singleUtterance,
  2. VaisSpeechCallback? listener,
  3. String modelParamText
)

Implementation

void requestBeforeStartAudioRecord(bool singleUtterance, VaisSpeechCallback? listener,String modelParamText) {
  gRpcConfig!.clear();
  gRpcConfig!.encoding = cloudSpeech.RecognitionConfig_AudioEncoding.LINEAR16;
  gRpcConfig!.sampleRateHertz =  16000;

  var modelParam = new cloudSpeech.ModelParam();
  modelParam.graph = modelParamText;
  gRpcConfig!.modelParam = modelParam;

  gRpcConfigStream!.clear();
  gRpcConfigStream!.config = gRpcConfig!;
  gRpcConfigStream!.interimResults = true;
  gRpcConfigStream!.singleUtterance = singleUtterance;

  gRpcRequestStream!.clear();
  gRpcRequestStream!.streamingConfig = gRpcConfigStream!;

  if (gRpcRequestStreamController.isClosed) {
    gRpcRequestStreamController = StreamController();
  }
  gRpcRequestStreamController.sink.add(gRpcRequestStream);
  listener?.onConnectionChanged!(true);

  gRpcStub.streamingRecognize(gRpcRequestStreamController.stream).listen((data) {
    var result = data.results[0];
    final String output = result.alternatives[0].transcript;
    print("Success >>>>>>>>>>>>>> $output");

    listener!.onConnectionChanged!(true);
    int stime = 0;
    int etime = 0;
    String audioPath = "";
    String audioName = "";
    try{
      if(result.isFinal){
        print('audio file name nay');
        print(result.audioFilename);
        totalOutput = totalOutput + ' '+output;

        if(result.audioFilename != null && result.audioFilename.isNotEmpty){
          audioPath = result.audioFilename.substring(result.audioFilename.lastIndexOf('|')+1);
          String endTime= result.audioFilename.substring(result.audioFilename.lastIndexOf('__')+2).replaceAll('|'+audioPath, '');
          String startTime = result.audioFilename.substring(result.audioFilename.indexOf('__')+2).replaceAll('__'+endTime+'|'+audioPath, '');
          print(startTime);
          stime  = ((int.parse(startTime) / frame_size ).toDouble() * frame_duration * 1000).toInt();
          etime  = ((int.parse(endTime) / frame_size ).toDouble() * frame_duration * 1000).toInt();
          audioName = result.audioFilename.replaceAll('__'+startTime+'__'+endTime+'|'+audioPath, '');
          print(audioName);
          print(stime);
          print(etime);
          print(audioPath);
        }

        listener.onGeneratedSpeechText!(totalOutput,output,result.isFinal,audioName,stime,etime,audioPath);
      }
      else{
        listener.onGeneratedSpeechText!(totalOutput + ' '+output,output,result.isFinal,audioName,stime,etime,audioPath);
      }
    }catch(e){
      print(e);
      print('error');
    }

  }, onError: (error) {
    print("Error $error");
    listener!.onConnectionChanged!(false);
  }, onDone: () {
    print("Done");
    listener!.onConnectionChanged!(false);
  });
}