0

我正在尝试替换一些 web api TTS 代码:

class TextToSpeechService {
      private utterances: Record<number, SpeechSynthesisUtterance | undefined> = {};


  speak = (message: string): Promise<void> => {
    return new Promise<void>((resolve) => {
 
      const utterance = new SpeechSynthesisUtterance(message);

      const now = new Date().getMilliseconds();
      this.utterances[now] = utterance;

      utterance.onend = () => {
        resolve();

        this.utterances[now] = undefined;
      };

使用 Azure TTS 替代方案。我添加了一个功能:

function synthesizeSpeech(message: string) {
  const speechConfig = sdk.SpeechConfig.fromSubscription("my_sub_id", "a_region");
  const synthesizer = new sdk.SpeechSynthesizer(speechConfig);

  synthesizer.speakTextAsync(
    message,
      result => {
          synthesizer.close();
          return result.audioData;
      },
      error => {
          console.log(error);
          synthesizer.close();
      });
}

并更改了这一行:

      const utterance: any =  synthesizeSpeech(message);

这与以下错误有关:

Error speaking question TypeError: Cannot set property 'onend' of undefined

所以看起来我的新版本没有设置utterance。我错过了什么?

编辑:所以我认为这是由 Async 函数尚未创建任何语音引起的。我如何在 React 中处理这个问题?

4

0 回答 0