Chrome浏览器Web Speech API SpeechRecognition()只懂英语(实现了`lang`属性)

s1ag04yj  于 2023-05-20  发布在  Go
关注(0)|答案(1)|浏览(196)

我在Chrome中实现的Web Speech API SpeechRecognition()在我说英语时工作得很好,但在其他语言中它经常返回英语单词。我是否错误地实现了this.recognition.langdocumentation仅给出了一个基本示例。
this.recognition.lang属于init()还是start()?也许我正在用英语(默认)初始化SpeechRecognition(),并且当用户切换到另一种语言时没有告诉它?

init() {
    this.recognition.interimResults = true;
    switch (this.language2!.short) {
      case 'en':
        this.recognition.lang = 'en-US';
        break;
      case 'es':
        this.recognition.lang = 'es-ES';
        break;
      case 'fr':
        this.recognition.lang = 'fr-FR';
        break;
      case 'de':
        this.recognition.lang = 'de-DE';
        break;
      case 'it':
        this.recognition.lang = 'it-IT';
        break;
      case 'pt':
        this.recognition.lang = 'pt-PT';
        break;
      case 'ru':
        this.recognition.lang = 'ru-RU';
        break;
      case 'zh':
        this.recognition.lang = 'zh-CN';
        break;
      case 'fi':
        this.recognition.lang = 'fi-FI';
        break;
      default:
        this.recognition.lang = 'en-US';
        break;
    }
    this.recognition.continuous = false;
    this.recognition.addEventListener('result', (e: any) => {
      const transcript = Array.from(e.results)
        .map((result: any) => result[0])
        .map((result) => result.transcript)
        .join('');
      this.tempWords = transcript;
      this.speechRecognitionWait = false;
    });
  }

  start() {
    try {
      this.recognition.start();
      this.speechRecognitionStart = true;
      this.isStoppedSpeechRecog = false;
      this.speechRecognitionWait = true;
    } catch (error) { // doesn't prevent error "Failed to execute 'start' on 'SpeechRecognition': recognition has already started"
      this.recognition.stop();
      console.error(error);
    }
  }
dnph8jn4

dnph8jn41#

我写了一些日志,实际上,我正在用英语初始化SpeechRecognition(),并将应用程序切换到另一种语言并没有切换SpeechRecognition()语言。这段代码工作得更好。

init() {
    this.recognition.interimResults = true;
    this.recognition.continuous = false;
    this.recognition.addEventListener('result', (e: any) => {
      const transcript = Array.from(e.results)
        .map((result: any) => result[0])
        .map((result) => result.transcript)
        .join('');
      this.tempWords = transcript;
      this.speechRecognitionWait = false;
    });
  }

  start() {
    try {
      switch (this.language2!.short) {
        case 'en':
          this.recognition.lang = 'en-US';
          break;
        case 'es':
          this.recognition.lang = 'es-ES';
          break;
        case 'fr':
          this.recognition.lang = 'fr-FR';
          break;
        case 'de':
          this.recognition.lang = 'de-DE';
          break;
        case 'it':
          this.recognition.lang = 'it-IT';
          break;
        case 'pt':
          this.recognition.lang = 'pt-PT';
          break;
        case 'ru':
          this.recognition.lang = 'ru-RU';
          break;
        case 'zh':
          this.recognition.lang = 'zh-CN';
          break;
        case 'fi':
          this.recognition.lang = 'fi-FI';
          break;
        default:
          this.recognition.lang = 'en-US';
          break;
      }
      this.recognition.start();
      this.speechRecognitionStart = true;
      this.isStoppedSpeechRecog = false;
      this.speechRecognitionWait = true;
    } catch (error) {
      this.recognition.stop();
      console.error(error);
    }
  }

相关问题