一些视频平台上电影解说有些声音不是真人声音,而是合成出来的。视频的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代码,看一下判断长度的代码去掉看看可不可以。