有没有一种方法可以将语音中的“文本”保存为文本离子语音识别

时间:2019-07-30 20:14:34

标签: typescript ionic-framework ionic3 cordova-plugins phonegap-plugins

我现在已经能够使用ionic框架文档在我的项目上实现离子语音识别(语音到文本)了,我希望能够使用任何表单输入,ngmodel或formcontrol保存文本或音频

我尝试过将matchs变量绑定到分配给新变量的ng模型,但没有用

startListening() {
    let options = {
      language: 'en-US',
      matches: 2,
      prompt: 'Say Something!'
    }
    this.speechRecognition.startListening(options).subscribe(matches => {
      this.matches = matches;
      this.cd.detectChanges();
    });
    this.isRecording = true;
  }


<ion-grid>
    <ion-row>
      <ion-col *ngIf="matches">
                <h3 *ngFor="let match of matches">
                  {{ match }}
                </h3>
                <ion-item>
                  <ion-input  type="text" [(ngModel)]="matches">
                  </ion-input>
                </ion-item>
      </ion-col>
    </ion-row>
 </ion-grid>

我希望能够看到输入中的文本,以便在保存到数据库之前可以进行编辑

2 个答案:

答案 0 :(得分:0)

您可以这样做,

现在,您的语音文本结果将保存在matches变量中。

现在让您稍微输入一下即可更改。根据您的问题,我了解到您需要在输入字段中显示口头文字,然后更改该文字或其他内容。

为此,您可以将输入值设置为匹配。执行此操作时,您的输入字段将显示匹配文本,但仍可编辑。但是您需要为该输入提供一个不同的[(ngModel)]变量,因为您需要识别并跟踪更改后的匹配值(matches

<ion-input type="text" value="matches" [(ngModel)]="correctedMatches">

答案 1 :(得分:0)

我解决了,终于用Angular trackBy解决了

 <ion-grid>
        <ion-row>
          <ion-col *ngIf="matches">
                    <h3 *ngFor="let match of matches; let i = index; trackBy:trackByInstance"">
                      {{ match }}
                    </h3>
                    <ion-item>
                      <ion-input  type="text" [(ngModel)]="matches[i]">
                      </ion-input>
                    </ion-item>
          </ion-col>
        </ion-row>
     </ion-grid>

 trackByInstance(index: any) {
    return index;