如何利用 Azure 为 TEASOFT视频配音?
简 介: 本文测试了将AZure的文本生成的语音信号分割成不同的片段,适合进行视频的后期配音。 分割利用了每一段语音之间的 0.5 秒中的间隔,这样可以将每一段的语音对应的分割出来。
关键词
: AZure
01 文字转语音
一、背景介绍
如下是Azure网站提供的文字转换成语音的界面。 文本转语音
▲ 图1.1.1 MicroSoft AZure文字转语音网站界面
二、转换步骤
TEASOFT语音配音的转换布置:
- 将TEASOFT配音导出;
- 转换到Azure网站进行播放,同期使用 Audacity进行录制;
- 将录制的语音进行切分。使用时长完成切分,存储在语音命名的 .MP3, .WAV 文件中;
播放语音是完成这部分的语音播放。
1、TEASOFT导出文字
利用BSIRFORM上的 “Action” 按钮生成视频配音文字。 具体操作: alt+点击Action 。
▲ 图1.2.1 生成文字按钮
TEASOFT 生成文字时,每一个Action中的文字形成一行。并对每一行进行如下的处理:
- 将其中的句号“。”,修改成逗号“,”。
- 将其中的半角句号空格“. ”,修改成逗号空格。
下面是转化后的文字样本。
今天在Youtube上,
看到一位Up主介绍了波形折叠电路,
并展示了它应用在电子音乐信号处理方面,
那么什么是波形折叠?
如何利用电路来实现呢?
首先讨论一下什么是波形折叠?
以这三个波形为例进行说明,
对于三角信号波形,
如果它的幅值超过一个阈值,
上面的波形则镜像折叠到阈值下面,
这就是波形折叠,
对于锯齿信号波形,
同样,
进行折叠之后,它变成了三角波,
对于方波信号,
信号折叠之后,
波形仍然是方波,
只是幅值下降,
波形没有变化,
下面,
如何利用电路来实现呢?
视频中给出了从简单到复杂的实现方法,
下面对此进行测试一下,
下面搭建单管折叠电路,
总共有三个器件,
这是电路原理图,NPN三极管使用8050.
从MSO24的信号源输出500Hz,
峰峰值为5V的三角波,
蓝色波形是输出的波形,
这是读入内存后的波形数据,
下面测量PNP折叠电路,
这是电路输出波形,
从MSO24读取的波形数据,
将上面两个电路并联在一起,形成双边这点电路,
这对峰峰值为1V的三角波处理结果,
调整不同幅值,
可以看到折叠信号始终维持在正负0.25V之内,
本文讨论了波形折叠电路,
根据Youtube上的UP主介绍的简单点路,
搭建了基于三极管的波形折叠电路,
验证了相关电路的工作原理,
2、AZure 文字转换语音
进入 AZure 文本转语音界面。 文本转语音 : https://azure.microsoft.com/zh-cn/products/cognitive-services/text-to-speech/#overview
▲ 图1.2.2 文本转语音界面
将上述文字拷贝到界面中的对话框内。选择合适的语言,语音,说话风格以及角色扮演等。
▲ 图1.2.3 播放参数设置
使用 Audacity软件进行录制语音合成结果,并存储到 .WAV 文件。
▲ 图1.2.4 利用Audacity对语音进行录制
下面是上述文本录制后的 MP3文件。
三、语音分割
1、语音分割原理
分割每个语音利用了每一段之间存在 0.675秒的时间间隔。 搜寻语音文件中所有长度大于等于 0.675 秒的时间间隔,将对应的数据存储在各自的语音文件中。
▲ 图1.3.1 语音之间的时间间隔
2、语音分割算法
根据 电话双音频拨码信号采集 所采用的 Python 对于语音处理的相关算法,进行上述合成语音的分割。
(1)语音文件读取
读取语音波形文件,获得相应的参数和数据。
from headm import *
from scipy.io import wavfile
wavefile = r'D:\Temp\11.wav'
sample_rate, sig = wavfile.read(wavefile)
printf(sample_rate, shape(sig))
保存的语音文件的采样率为 44100Hz,通过数量长度除以采样率,可以知道语音文件时间长度为 115.8s 。
44100
(5107840, 2)
绘制其中一个声道的数据波形如下:
▲ 图1.3.2 语音数据波形
(2)语音分割参数
对于上述录制的音频文件波形进行分析,获得语音分割参数:
- 语音分割参数:
-
静音幅值
: ±25
静音时间长度
: 0.5s
▲ 图1.3.3 分析语音分割参数
3、语音分隔程序
(1)程序代码
#!/usr/local/bin/python
# -*- coding: gbk -*-
#============================================================
# SPS.PY -- by Dr. ZhuoQing 2022-10-03
# Seperate speak signal into segment.
# Usage: sps wavefile silencevalue(int) silencetime(float)
#
# Before using sps, copy all voice string into clipboard.
#
# Note:
#============================================================from headm import *from scipy.io import wavfile
from pydub import AudioSegmentwavefile = r'D:\Temp\11.wav'#------------------------------------------------------------
try:if not os.path.exists(r'd:\temp'):os.makedirs(r'd:\temp')if not os.path.exists(r'd:\temp\VOICE'):os.makedirs(r'd:\temp\VOICE')
except OSError:printf("Error :Creating directory of data.")#------------------------------------------------------------
silencevalue = 25 # Silence max value
silencetime = 0.5 #mp3flag = 0#------------------------------------------------------------
strall = [s.strip('\r') for s in clipboard.paste().split('\n') if len(s) > 0]for s in sys.argv:fname = os.path.join(r'd:\temp', '%s.WAV'%s)if os.path.isfile(fname):wavefile = fnamecontinuefname = os.path.join(r'd:\temp', '%s.MP3'%s)if os.path.isfile(fname):wavefile = fnamemp3flag = 1continueif s.isdigit():silcencevalue = int(s)if silencevalue > 1000:silencevalue = 1000continueif s.replace('.', '').isdigit():silcentime = float(s)printff(wavefile, silencevalue, silencetime)#------------------------------------------------------------if mp3flag == 0:sample_rate, sig = wavfile.read(wavefile)sigdata = array(sig[:,0])
else:sample_rate = 44100sound = AudioSegment.from_file(file=wavefile)left = sound.split_to_mono()[0]sig = frombuffer(left._data, int16)sigdata = array(sig)#------------------------------------------------------------sigdata[(sigdata > -silencevalue) & (sigdata < silencevalue)] = 0
sigdata[(sigdata <= -silencevalue) | (sigdata >= silencevalue)] = 1sigone = where(sigdata == 1)[0]
sigdelta = array([x2-x1 for x1,x2 in zip(sigone[0:-1], sigone[1:])])
deltamin = int(sample_rate*silencetime)sigmax = where(sigdelta > deltamin)[0]sigsegment =[sigone[0]]
for sm in sigmax:sigsegment.append(sigone[sm+1])sigsegment.append(sigone[-1])#------------------------------------------------------------printff('Voice Segment:%d'%len(sigsegment), 'Voice String:%d'%len(strall))
printf('\a')
if len(sigsegment) - len(strall) != 1:printf("Voice String Number error !\a")exit()#------------------------------------------------------------
for i in range(len(sigsegment) - 1):startid = sigsegment[i]endid = sigsegment[i+1] - sample_rate*3//4wavefilename = '%04d.wav'%iif i < len(strall):sa = strall[i].replace(',', '').replace(',','').replace('.','').replace('。', '').replace(';','')wavefilename = '%s.wav'%saoutfile = os.path.join(r'd:\temp\VOICE', wavefilename)if mp3flag == 0:wavfile.write(outfile, sample_rate, sig[startid:endid, :])else: wavfile.write(outfile, sample_rate, sig[startid:endid])printf(outfile)tspbeep(1800, 100)#------------------------------------------------------------
# END OF FILE : SPS.PY
#============================================================
(2)程序用法
在 sps 命令后面可以添加 wave 文件, 静音幅度, 静音时间等参数。 需要注意的是, 在使用 sps 之前,需要将声音的文本拷贝到剪切板中。
分割后的文件存储在 d:\temp\VOICE 目录中。
四、分割测试
对于上述程序进行了测试,它准确的将所有的语音进行了分割。
▲ 图1.4.1 分割后的语音信号
※ 总 结 ※
本文测试了将AZure的文本生成的语音信号分割成不同的片段,适合进行视频的后期配音。 分割利用了每一段语音之间的 0.5 秒中的间隔,这样可以将每一段的语音对应的分割出来。
◎ 人声配音短片
ZVS振荡电路
◎ AZure配音短片
ZVS振荡电路AZURE配音测试版本
■ 相关文献链接:
- 文本转语音
- 电话双音频拨码信号采集
● 相关图表链接:
- 图1.1.1 MicroSoft AZure文字转语音网站界面
- 图1.2.1 生成文字按钮
- 图1.2.2 文本转语音界面
- 图1.2.3 播放参数设置
- 图1.2.4 利用Audacity对语音进行录制
- 图1.3.1 语音之间的时间间隔
- 图1.3.2 语音数据波形
- 图1.3.3 分析语音分割参数
- 图1.4.1 分割后的语音信号
如何利用 Azure 为 TEASOFT视频配音?相关推荐
- Python轻松搞定免费语音合成,利用百度AI为短视频配音
1. 创建百度AI账号 1.1 点击进入百度AI, 左上角"开放能力->语音合成->立即使用" 如果是试用,可以直接点击在线语音合成, 不过语音不能下载.要下载还得用下 ...
- 视频配音怎么配出好听的声音?试试这三个视频配音方法
在这个自媒体盛行的时代,越来越多人选择自己制作和发布短视频,为了给视频添加更多丰富多彩的元素,让点击量提高,有些视频制作者会开始学习如何给视频配音.但有时候我们没有受过专业的配音训练,所以配出来的效果 ...
- 视频配音软件哪个好用?这几个软件你们不容错过
平时喜欢做短视频的朋友还在担心不知道怎么给视频添加配音吗?特别是当我们自己制作一个短视频,但是因为音色不够好,不敢用原声配音而迟迟不敢发布.其实我们只需要配音软件就可以解决音色不好.普通话不标准的问题 ...
- 个人怎么给短视频配音?三个简单的小技巧,配音原来并不难
个人怎么给短视频配音?三个简单的小技巧,配音原来并不难 很多小伙伴在做短视频的时候,都会遇到配音方面的难题,不知道究竟要如何配音才是.很多时候,自己配出来的效果似乎都不是很好,听起来也不得劲儿,更别提 ...
- 简单几个步骤,轻松完成短视频配音工作|别惊讶,让我手把手教你
给短视频配音有多简单?你根本想象不到,竟然只需要简单几步就能够完成! 并不是所有短视频配音都需要自己亲自配,或者大价钱找真人配音老师.只需要利用配音软件,制作AI配音就可以完成.也许你会担心机器人声音 ...
- 搞笑的短视频配音怎么制作?两个小方法来帮忙,好学又好做
搞笑的短视频配音怎么制作?两个小方法来帮忙,好学又好做 闲来无事刷短视频的时候,我们经常可以刷到各种各样的搞笑短视频,它们给我们每一个人都带来了无尽的欢笑.尤其是搞笑配音短视频,只需要为短视频配上一段 ...
- 短视频配音怎么制作?运用好免费配音软件,配音其实很简单
短视频配音怎么制作?运用好免费配音软件,配音其实很简单 很多小伙伴们在看短视频的时候,可能都会对一些搞笑配音的短视频感到非常的好奇,尤其是它们的配音音色也都有所不同.事实上,如果想要为短视频配上不同的 ...
- 怎样给视频配音?三种配音方法来助力,简单又方便
怎样给视频配音?三种配音方法来助力,简单又方便 为视频配音是每一位做短视频的作者都应当掌握的一个技能,那么今天我们就来一些学习三种配音方法,各有各的好处,也各有各的不足,不过好在都简单又方便. 方法一 ...
- 哪些软件能实现视频配音?这篇文章干货满满
你们平时会随手记录生活日常吗?比如去海边看日落.一边吃饭一边看剧.在公交车上看着太阳在后面"追"等等.我们可以将这些瞬间拍摄下来剪辑在一起,制作出一支视频.如果想让视频变得更有 ...
最新文章
- Intel SGX Remote Attestation实例代码安装和执行,笔记
- 白夜:一文看懂AI项目流程及边缘设备开发
- VS2019 WPF制作OTA上位机(二)获取bin文件路径
- 在deepin中安装docker
- Redis数据持久化管理之RDB模式
- python进阶训练营百度网盘_(在线观看)【完结】私域流量实战训练营(百度网盘分享下载)...
- 横幅新年促销海报PSD模板,拯救年底节日忙
- 微服务 注册中心的作用_SpringCloud(二)服务注册中心与Eureka工作原理介绍
- ExpandListView onChildClickListener 失效
- MyEclipse Web 项目导入 Eclipse 中需要改的文件
- IDEA如何执行maven命令进行打包编译及常用命令
- 孙鑫VC学习笔记:第四讲 MFC消息映射机制和CDC类的使用
- python物业管理系统_小型物业管理系统的设计与实现研究背景及意义
- 图像表示的相关概念:图像深度、像素深度、位深的区别和关系
- 计算机专业女生网名,微信名字大全女生_女孩微信网名大全
- flutter A problem occurred configuring project ‘:shared_preferences_linux‘.
- 程序员编程入门必知!程序员需要学什么
- swift获取openuuid_iOS获取当前设备型号等信息(全)包含iPhone7和iPhone7P
- datastage7.5.1.A License 及 下载地址 Download
- 微信生日贺卡html5,生日微信贺卡祝福语_经典快乐生日微信祝福语