首页 > 解决方案 > 使用 expo-speech 跟踪口语文本

问题描述

我已经expo-speech在我的应用程序上实现了它并且工作正常。现在我希望能够跟踪或标记说话的单词。可能吗?我可以做吗?

这是我目前的说话代码

  const speak = (text: string, onDone: () => void) => {
    var translatorLanguage = !novelReaderSettings.translatorLanguage || novelReaderSettings.translatorLanguage == "auto" ? "en" : novelReaderSettings.translatorLanguage;
    var lng = textVoices.find(x => x.language.split("-")[0] == translatorLanguage)?.language ?? "en-US";
    var voice = novelReaderSettings.voice && novelReaderSettings.voice != "" ? novelReaderSettings.voice : textVoices.find(x => x.language == lng)?.identifier
    Speech.speak(text, {
      voice: voice,
      language: lng,
      rate: novelReaderSettings.rate ?? 1.0,
      pitch: novelReaderSettings.pitch ?? 1.0,
      onDone: onDone,
    });
  }

这是一个显示我如何使用它的示例

var text =["Hi how are you?", "fine thank you.", "How are you?"];

var index =-1;
const play =()=>{
  var current = text[++index]
  speak(current, play);
}

我正在考虑使用rateandpitch来计算语音的速度,然后能够知道语音现在正在说哪些单词。

但是我的数学真的很差,我不知道这样做是否可以接受。

在这里我做了一个小零食,但它并没有像我想要的那样真正起作用 https://snack.expo.dev/@alentoma/text-to-speech-converter

标签: javascriptreact-nativeexporeact-native-android

解决方案


推荐阅读