导读:2021开年以来,音频社交市场伴随着Clubhouse的爆火再获资本的关注,国内相关产品荔枝、映客都迎来了股价的大幅上涨,预计未来音频化在社交领域还会有长期且广泛的需求。

在移动互联网技术加持下,音频社交不仅可以满足多场景下的社交需求,体验也迎来了革新,尤其是AI+5G技术,对音频社交的驱动将更为明显。很多社交产品会基于音频技术增加变声、美声、立体声、混响和场景化音效等,来丰富用户的听感体验。本篇技术分享就来讲讲音频社交场景中的变声是应用了哪些算法来实现的。

01 变声是如何实现的?

当我们日常观看视频时,有时会使用倍速播放。在加快播放速度时,我们会感觉视频中的男声听起来有点像“女声”;在放慢播放速度时,我们能听到类似于《疯狂动物城》中那个说话慢吞吞的“树懒声”。这些其实就是简单的变声。

从技术的角度并不难理解,如果我们用16k的采样率去采集一个100Hz的正弦波,而用32k或者8k的采样率去播放的话,那么这个正弦波的频率就会提升一倍(200Hz)或者降低一倍(50Hz)。这样将音频的频率升高或者降低的方法很简单,提升一倍就是每隔一个丢弃一个样本,放慢一倍就是进行一个线性插值。用专业的术语来说,这是一个重采样的过程。按照重采样方法是可以实现一个变调的,但同时也很容易发现,音频的时间变长或者变短了,和我们原始输入的音频长度不一致了,这在实时通信中是不能接受的。在实时通信中,我们要的是一个变调不变速的变声功能,单一的重采样方法是做不到的。当然除了重采样,我们还有其他的一些变声方法能够实现变调不变速的需求。

02 变声有哪些常见的算法?

常见的变调算法有时域、频域和参量法。时域较易实现,多采用变速不变调+重采样实现变调不变速等。频域以及参量法就相对复杂,并且计算量相比于时域大了很多。本次主要简单介绍一些常见的时域和频域算法。

在时域内主要是OLA(Overlap-Add)类算法:OLA,同步波形叠加法(Synchronized Overlap-Add, SOLA)、固定同步波形叠加法(Synchronized Overlap-Add and Fixed Synthesis, SOLAFS)、时域基音同步叠加法(Time-Domain Pitch Synchronized Overlap-Add, TD-PSOLA) 波形相似叠加法(waveform similarity overlap-and-add, WSOLA)等,频域内主要是基音同步波形叠加算法(Pitch-Synchronized OLA, PSOLA)等。

1)OLA

OLA是最简单粗暴的一种TSM方式。对原始语音进行分帧后,间隔一段采样点,重复或者丢弃其中某些语音帧来重新建立语音。这样就实现简单的变音效果。原理如下图所示:

a.分帧,对时域音频进行分帧处理;

b.在输入信号X上加上一个汉宁窗;

c.在第一帧后间隔固定点数Ha取出第二帧;

d.把第二帧语音加窗后与第一帧overlap-add。

如此操作到语音结束就能重建一个新的变调语音。但是这算法存在一定的局限性,无法保证语音是连续的,可能会出现基音断裂的情况。这样的语音听起来会有咔吧声,造成了语音的失真。

2)波形相似叠加法(waveform similarity overlap-and-add, WSOLA)

了解了简单粗暴的OLA算法后,我们可以清晰的知道OLA算法的局限和缺陷。当然也知道造成这种缺陷的原因是什么:相位不连续导致的。为了减小基音断裂和相位不连续问题,Verhelst和Roelands提出了波形相似叠加法(WSOLA)。目前开源代码soundtouch使用的就是该算法。其原理如下图:

a.在原始音频中取出第一帧,让后对该帧进行加窗,输出到y信号上;

b+c. 在虚线蓝色范围内找到第二帧,第二帧相位参数应该和第一个帧相位对齐,在蓝色范围内寻找与第二帧最相似的帧作为输出帧,作为y信号的第二帧;

d. 最为相似的帧与第一帧overlap-add到y信号上

重点在b.c两步操作中,如何寻找最相似的帧。很多论文中给出了一种最直接的方法,计算“自相关”。虽然WSOLA能够解决基音断裂和相位不连续问题,但是它会影响音色,将WSOLA应用于打击乐乐器的音频时,这种现象将会更加的明显。

3)基音同步波形叠加算法(Pitch-Synchronized OLA, PSOLA)

PSOLA的算法原理与WSOLA有所不同,PSOLA在频域处理的,它能进一步达到基音同步的目的。在该算法中,变速和变调是两个独立的过程,由不同的参数控制。先对基音进行检测,标记基音周期。通过标记的基音周期将语音划分为多个合成单元。通过重复或者丢失合成单元来实现语速的控制。通过改变相邻合成单元的重叠长度或者重采样结合变速来改变语音的基频。

PSOLA是对基频进行修改的,因此很好的保护了共振峰,不会对音色有太大的影响。不过该算法在频域中进行处理的,计算量大,很难满足实时的变速与变调处理。

03 结束语

以上简单介绍了三种常见的变声算法,这三种算法可以粗略实现大叔音、萝莉音以及怪兽声等。但是想要做到变声后的声音听起来更加真实自然,就需要进一步的优化调试了。除了这些算法外,还有其他的变声音效,比如常见的“惊悚声”,运用了vibrato或者tremolo算法,还有“山谷空灵音”运用了echo算法等等,这些算法都是基于传统的信号处理实现的。在传统的信号处理变声方法外,还有更高级的变声算法:AI变声。AI变声相比于传统的信号处理方法,会让变声后的声音更加真实自然。

注:文中图片来源于《A Review of Time-Scale Modification of Music Signals》论文

关注拍乐云Pano,我们会在后续的文章中持续分享关于音视频、实时通信的产品技术知识。

音频社交的变声,应用了哪些算法?相关推荐

  1. HTML5调用摄像头+视频特效+录制视频+录音+截图+变声+滤波+音频可视化

    1.写在前面 根据最近的学习,写了一个demo, 可以通过navigator.mediaDevices.getUserMedia()方法调用电脑摄像头,并实现了录制音频,录制视频,对摄像头的内容进行截 ...

  2. 语音聊天室源码中的变声,应用了哪些算法?

    导读:2021开年以来,语音聊天室源码伴随着Clubhouse的爆火再获资本的关注,国内相关产品都迎来了股价的大幅上涨,预计未来音频化在社交领域还会有长期且广泛的需求. 在移动互联网技术加持下,语音聊 ...

  3. “变声达人?入梦RVC变声器让你轻松变出不同的声音!”

    入梦RVC变声器的使用指南.入梦RVC是一款功能强大的变声器,可以让您在语音通话.游戏语音聊天或录音时轻松变换您的声音.下面是使用入梦RVC变声器的步骤: 首先,您需要下载并安装入梦RVC变声器软件. ...

  4. 这三个音频变声编辑软件教你怎么给音频变声

    现如今随着我们生活的节奏越来越快,大家都爱上了短视频,每天也都有大量的短视频被创作出来.在这样的背景下,不知道有没有小伙伴也充满创意的想去尝试,但是却因为不知道怎么调整音频变声而阻挡了创作的步伐呢?其 ...

  5. 如何在3分钟内实现音频变声和趣味音效?

    在泛娱乐社交和互动游戏场景中,用户已不再满足于高清的音质体验和实时的互动效果,他们还想要增加趣味性和沉浸感,让声音变得好玩有趣.拍乐云Pano上线了音频变声接口,开发者可以通过 Pano SDK 设置 ...

  6. 百度语音技术助力“变声神器”让社交更有趣

    价值成果 在百度语音技术的助力下,"变声器"APP通过语音识别能够准确将用户说的话转成文字,并通过语音合成技术,将文字合成多种特色语音对外输出.同时,可根据场景需求对语速.语调等参 ...

  7. 怎样将音频变声?1分钟教你音频变声怎么弄!

    大家平常爱不爱刷短视频呢?不知道你们看短视频的时候有没有注意到,一些视频的配音很是搞怪,常常让人捧腹大笑!那么这些声音是怎么制作出来的呢?其实大部分的搞怪配音,都是借助软件对音频进行变音来实现的~今天 ...

  8. 如何将音频变声?试试这几个方法吧

    昨天,我在构思视频素材的时候想到可以在其中添加一个鬼畜片段,以此来提升视频的丰富度和乐趣.那么如果要添加鬼畜片段的话,首先就需要我们将音频进行变声操作,不过由于不知道怎么进行音频变声,于是我就上网搜索 ...

  9. AU变声功能音频调节

    变声功能与音频调节 今天再分享一些关于AU调整音频的方法,变声功能与音频调节. 一.变声功能方法1 说实话我感觉这个功能用于恶搞比较多,男声变女声,女声变娃娃音之类的,现在qq也有类似的语音变声功能, ...

最新文章

  1. 【综述专栏】神经网络的可解释性综述
  2. 2021 年 6 月程序员工资统计,平均 15052 元
  3. np.newaxis 的使用
  4. mfc c语言 编辑器,语法高亮编辑控件Scintilla在MFC中的简单使用
  5. php session_start() 非常慢,php – session_start似乎很慢(但是有时候)
  6. 为什么公司宁愿花25K重新招人,也不愿花20K留住老员工?
  7. 3d 仪表盘_新一代标致2008官图发布 配备3D全息仪表盘
  8. Docker02 基本命令、开发环境搭建、docker安装nginx、Dockerfile、路径挂载
  9. java线程交替执行_Java synchronized线程交替运行实现过程详解
  10. Visual C# 2008+SQL Server 2005 数据库与网络开发-- 9.1 对XML的支持
  11. c语言蓝桥删除多余的括号,蓝桥杯 括号问题
  12. Kylin Cube构建优化
  13. lamp源码三层结构
  14. 为什么前端比java工资高_Web前端为什么一般工资比java低?
  15. GWAS生物学相关名词解释
  16. BWA处理WES文件
  17. 萌新谈相机与IMU的标定(转载)
  18. 苹果iPad怎么录屏?简单易懂,1分钟学会
  19. 计算机图形学基础第七章ppt,计算机图形学 -第七章讲义ppt课件
  20. ShanaEncoder 官网链接

热门文章

  1. Android中的多点触摸
  2. 阿里云Linux下python3的安装及环境配置(详细教程)
  3. 存储运维知识点记录(netapp,华为,HP-3par,emc)
  4. 标签无效 /zabbix_export/date: YYYY-MM-DDThh:mm:ssZ 预计。
  5. 小米路由器局域网设备ping不通
  6. [Office] 段落间距调整
  7. python变量的使用_python变量赋值的几种形式细节
  8. 嵌入式linux启动时间优化
  9. OpenOCD+GDB学习记录(1)
  10. ExtJS的History使用