简 介: 本文测试了将AZure的文本生成的语音信号分割成不同的片段,适合进行视频的后期配音。 分割利用了每一段语音之间的 0.5 秒中的间隔,这样可以将每一段的语音对应的分割出来。

关键词AZure









































































文字转语音









目 录
Contents









背景介绍









转换步骤









语音分割









分割测试









总 结







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视频配音?相关推荐

  1. Python轻松搞定免费语音合成,利用百度AI为短视频配音

    1. 创建百度AI账号 1.1 点击进入百度AI, 左上角"开放能力->语音合成->立即使用" 如果是试用,可以直接点击在线语音合成, 不过语音不能下载.要下载还得用下 ...

  2. 视频配音怎么配出好听的声音?试试这三个视频配音方法

    在这个自媒体盛行的时代,越来越多人选择自己制作和发布短视频,为了给视频添加更多丰富多彩的元素,让点击量提高,有些视频制作者会开始学习如何给视频配音.但有时候我们没有受过专业的配音训练,所以配出来的效果 ...

  3. 视频配音软件哪个好用?这几个软件你们不容错过

    平时喜欢做短视频的朋友还在担心不知道怎么给视频添加配音吗?特别是当我们自己制作一个短视频,但是因为音色不够好,不敢用原声配音而迟迟不敢发布.其实我们只需要配音软件就可以解决音色不好.普通话不标准的问题 ...

  4. 个人怎么给短视频配音?三个简单的小技巧,配音原来并不难

    个人怎么给短视频配音?三个简单的小技巧,配音原来并不难 很多小伙伴在做短视频的时候,都会遇到配音方面的难题,不知道究竟要如何配音才是.很多时候,自己配出来的效果似乎都不是很好,听起来也不得劲儿,更别提 ...

  5. 简单几个步骤,轻松完成短视频配音工作|别惊讶,让我手把手教你

    给短视频配音有多简单?你根本想象不到,竟然只需要简单几步就能够完成! 并不是所有短视频配音都需要自己亲自配,或者大价钱找真人配音老师.只需要利用配音软件,制作AI配音就可以完成.也许你会担心机器人声音 ...

  6. 搞笑的短视频配音怎么制作?两个小方法来帮忙,好学又好做

    搞笑的短视频配音怎么制作?两个小方法来帮忙,好学又好做 闲来无事刷短视频的时候,我们经常可以刷到各种各样的搞笑短视频,它们给我们每一个人都带来了无尽的欢笑.尤其是搞笑配音短视频,只需要为短视频配上一段 ...

  7. 短视频配音怎么制作?运用好免费配音软件,配音其实很简单

    短视频配音怎么制作?运用好免费配音软件,配音其实很简单 很多小伙伴们在看短视频的时候,可能都会对一些搞笑配音的短视频感到非常的好奇,尤其是它们的配音音色也都有所不同.事实上,如果想要为短视频配上不同的 ...

  8. 怎样给视频配音?三种配音方法来助力,简单又方便

    怎样给视频配音?三种配音方法来助力,简单又方便 为视频配音是每一位做短视频的作者都应当掌握的一个技能,那么今天我们就来一些学习三种配音方法,各有各的好处,也各有各的不足,不过好在都简单又方便. 方法一 ...

  9. 哪些软件能实现视频配音?这篇文章干货满满

      你们平时会随手记录生活日常吗?比如去海边看日落.一边吃饭一边看剧.在公交车上看着太阳在后面"追"等等.我们可以将这些瞬间拍摄下来剪辑在一起,制作出一支视频.如果想让视频变得更有 ...

最新文章

  1. Intel SGX Remote Attestation实例代码安装和执行,笔记
  2. 白夜:一文看懂AI项目流程及边缘设备开发
  3. VS2019 WPF制作OTA上位机(二)获取bin文件路径
  4. 在deepin中安装docker
  5. Redis数据持久化管理之RDB模式
  6. python进阶训练营百度网盘_(在线观看)【完结】私域流量实战训练营(百度网盘分享下载)...
  7. 横幅新年促销海报PSD模板,拯救年底节日忙
  8. 微服务 注册中心的作用_SpringCloud(二)服务注册中心与Eureka工作原理介绍
  9. ExpandListView onChildClickListener 失效
  10. MyEclipse Web 项目导入 Eclipse 中需要改的文件
  11. IDEA如何执行maven命令进行打包编译及常用命令
  12. 孙鑫VC学习笔记:第四讲 MFC消息映射机制和CDC类的使用
  13. python物业管理系统_小型物业管理系统的设计与实现研究背景及意义
  14. 图像表示的相关概念:图像深度、像素深度、位深的区别和关系
  15. 计算机专业女生网名,微信名字大全女生_女孩微信网名大全
  16. flutter A problem occurred configuring project ‘:shared_preferences_linux‘.
  17. 程序员编程入门必知!程序员需要学什么
  18. swift获取openuuid_iOS获取当前设备型号等信息(全)包含iPhone7和iPhone7P
  19. datastage7.5.1.A License 及 下载地址 Download
  20. 微信生日贺卡html5,生日微信贺卡祝福语_经典快乐生日微信祝福语

热门文章

  1. (花呗还了吗DJ)原版全网唯一完整版上线啦!
  2. 浙江农林大学本科毕业论文答辩和论文选题PPT模板
  3. MCU之按键驱动 -剥离按键驱动和事件处理
  4. 面向云计算的数据中心网络体系结构设计
  5. RBM代码Python
  6. 编译mumps库时无法链接mpi库中的函数
  7. Cisco AP胖瘦切换
  8. 【无标题】奥的斯故障代码分析(新版)
  9. 〖大前端 - 基础入门三大核心之CSS篇㉒〗- 过渡属性的基本使用
  10. 前端开发_HTML5_CSS部分-过渡特效(transition)