欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

在线体验微软声音合成技术

最编程 2024-08-10 15:08:58
...

一些视频平台上电影解说有些声音不是真人声音,而是合成出来的。视频的AI配音软件微软Azure的云希音效,具体的开发文档在[这里](learn.microsoft.com/zh-cn/azure…?tabs=stt-tts),这个是语音服务的语言和声音支持。我们具体来说看中文的,当然有的平台也做英文的。

中文语言支持如下:

区域设置 (BCP-47) 语言 语音转文本 自定义语音识别支持 文本转语音声音 神经网络定制声音
zh-CN 中文(普通话,简体) zh-CN 音频 + 人工标记的脚本 纯文本 结构化文本 短语列表 zh-CN-XiaochenNeural(女) zh-CN-XiaohanNeural(女) zh-CN-XiaomengNeural(女) zh-CN-XiaomoNeural(女) zh-CN-XiaoqiuNeural(女) zh-CN-XiaoruiNeural(女) zh-CN-XiaoshuangNeural(女) zh-CN-XiaoxiaoNeural(女) zh-CN-XiaoxuanNeural(女) zh-CN-XiaoyanNeural(女) zh-CN-XiaoyiNeural(女) zh-CN-XiaoyouNeural(女) zh-CN-XiaozhenNeural(女) zh-CN-YunfengNeural(男) zh-CN-YunhaoNeural(男) zh-CN-YunjianNeural(男) zh-CN-YunxiaNeural(男) zh-CN-YunxiNeural(男) zh-CN-YunyangNeural(男) zh-CN-YunyeNeural(男) zh-CN-YunzeNeural(男)
zh-HK 中文(粤语,繁体) zh-HK 纯文本 zh-HK-HiuGaaiNeural4、5、6(女) zh-HK-HiuMaanNeural4、5、6(女) zh-HK-WanLungNeural4、5、6(男) 神经网络定制声音专业版
zh-TW 中文(*普通话) zh-TW 纯文本 zh-TW-HsiaoChenNeural4、5、6(女) zh-TW-HsiaoYuNeural4、5、6(女) zh-TW-YunJheNeural4、5、6(男) 神经网络定制声音专业版

就是中文普通话的一些女声男声,还有粤语和*普通话。


这个是要登录Microsoft的账号进去申请的,申请完部署成功后就会得到一个id,具体文档链接在这

他这一套东西挺全面的,有语音转文本文本转语音语音翻译意向识别说话人辨别关键字识别等。

现在我们来搞一下发抖音电影视频解说,文字字幕转成语音形式。文档在这里

那这里我直接选JavaScript来举例:

部署

步骤就是:

1、先去免费去创建订阅。这里是可以申请一年也就是12个月免费的。去右上角点一下sign up去注册一下。

2、注册完成之后就来到微软的后台了,所以我们要做的就是创建语音资源

3、做完第二步之后,就可以得到一个资源秘钥。这个就是代码的关键秘钥,不要直接写在代码中,不安全。妥善保管好这个密码。如果你是macOs系统的话可以存储到环境变量中,

##### Bash

编辑 .bash_profile,然后添加环境变量:

Bash复制

export SPEECH_KEY=your-key


添加环境变量后,请从控制台窗口运行 `source ~/.bash_profile`,使更改生效。

zsh同理。

代码部分

1、现在一个空文件夹中npm init

2、接着npm install microsoft-cognitiveservices-speech-sdk这个仓库

3、然后创建一个index.js文件

代码:

(function() {

    "use strict";

    var sdk = require("microsoft-cognitiveservices-speech-sdk");
    var readline = require("readline");

    var audioFile = "YourAudioFile.wav";
    const speechConfig = sdk.SpeechConfig.fromSubscription(process.env.SPEECH_KEY, process.env.SPEECH_REGION);
    const audioConfig = sdk.AudioConfig.fromAudioFileOutput(audioFile);

    // The language of the voice that speaks.
    speechConfig.speechSynthesisVoiceName = "en-US-JennyNeural"; 

    // Create the speech synthesizer.
    var synthesizer = new sdk.SpeechSynthesizer(speechConfig, audioConfig);

    var rl = readline.createInterface({
      input: process.stdin,
      output: process.stdout
    });

    rl.question("Enter some text that you want to speak >\n> ", function (text) {
      rl.close();
      // Start the synthesizer and wait for a result.
      synthesizer.speakTextAsync(text,
          function (result) {
        if (result.reason === sdk.ResultReason.SynthesizingAudioCompleted) {
          console.log("synthesis finished.");
        } else {
          console.error("Speech synthesis canceled, " + result.errorDetails +
              "\nDid you set the speech resource key and region values?");
        }
        synthesizer.close();
        synthesizer = null;
      },
          function (err) {
        console.trace("err - " + err);
        synthesizer.close();
        synthesizer = null;
      });
      console.log("Now synthesizing to: " + audioFile);
    });
}());

4、在控制台中node index.js

就可以得到一个wav文件的音频,当然也可以起名为.mp3,看你需要什么。

其次设置为 SPEECH_REGION 资源的区域。 例如 westus。(美国西部)

5、接着就完成从文字转语音这个操作了。


题外话

那如果嫌麻烦,有现成的软件exe。不过作者限制了字数480字左右。

链接 密码: ujhg

可以看看反编译一下这个exe代码,看一下判断长度的代码去掉看看可不可以。

推荐阅读