如何从 Web 语音更改为 Azure 语音?

问题描述

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

#include "MyClass.h"
#include "TelnetClient.h"

#include <iostream>
#include <boost/array.hpp>
#include <boost/asio.hpp>

using boost::asio::ip::tcp;

MyClass::MyClass()
    : telnet(NULL)
{
}

MyClass::~MyClass()
{
    delete telnet;
}

bool MyClass::Connect(std::string host,std::string port)
{
    // Omitted for brevety

    // Create a Telnet client
    delete telnet;
    telnet = new TelnetClient(io_service,iterator);

    // Omitted for brevety
}

使用 Azure 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;
      };

并更改了这一行:

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 。我错过了什么?

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

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)