如何使用安卓版声网 SDK 美化/转换用户的声音

不是所有人都喜欢自己的声音。很多人在语音聊天时会紧张,有的人甚至不愿意语音聊天,因为他们觉得自己的声音很难听。如果你也有这些烦恼,不妨使用一下声网 SDK。声网 SDK 可以美化你的声音,也可以把你的声音变成另外一种你喜欢的声音,这个有趣的功能会让你更喜欢语音通话。

下面的教程会教大家如何用安卓版声网 SDK 改变(声音转换)或美化声音。


前期准备


在 Gradle 中添加依赖

在 App 模块下的 build.gradle 文件中添加下列依赖,同时下载 Agora 第三方库。记得一定要使用最新版的 Agora 库。

implementation 'com.yanzhenjie:permission:2.0.3'
implementation 'io.agora.rtc:full-sdk:3.5.0'

在 Manifest.xml 文件中添加权限

在 Manifest.xml 文件中添加以下权限:

<uses-permission android:name="android.permission.CAMERA" />
 <uses-permission android:name="android.permission.INTERNET" />
 <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
 <uses-permission android:name="android.permission.RECORD_AUDIO" />

创建一个 RtcEngine 实例

现在我们要通过初始化 RtcEngine 来创建一个 RtcEngine 实例,并把 IRtcEngineEventHandler 和 App ID 传递给 create 方法。IRtcEngineEventHandler 是一种提供默认实现的抽象类:

try
 {
 RtcEngine mRtcEngine = RtcEngine.create(getContext().getApplicationContext(), appId, iRtcEngineEventHandler);
 }
 catch (Exception e)
 {
 e.printStackTrace();
 getActivity().onBackPressed();
 }

把用户设置为主播

接下来我们把频道模式设置为 CHANNEL_PROFILE_LIVE_BROADCASTING,把用户角色设置为 CLIENT_ROLE_BROADCASTER。我们这样设置的原因是用户需要同时实现推流和拉流。如果你只想让用户拉流,可以把频道模式设置为观众。

mRtcEngine.setChannelProfile(Constants.CHANNEL_PROFILE_LIVE_BROADCASTING);
 mRtcEngine.setClientRole(IRtcEngineEventHandler.ClientRole.CLIENT_ROLE_BROADCASTER);
 
 mRtcEngine.setAudioProfile(AUDIO_PROFILE_MUSIC_HIGH_QUALITY_STEREO, AUDIO_SCENARIO_GAME_STREAMING);

美化声音

枚举值 描述 CHAT_BEAUTIFIER_MAGNETIC (男声)让声音更有磁性。Agora 建议只在处理男声时使用这个对象,否则可能会出现人声失真。 CHAT_BEAUTIFIER_FRESH (女声)让声音更清新。Agora 建议只在处理女声时使用这个对象,否则可能会出现人声失真。 CHAT_BEAUTIFIER_VATALITY (女声)让声音更有活力。Agora 建议只在处理女声时使用这个对象,否则可能会出现人声失真。

我们把美化值录入到 setVoiceBeautifierPreset 函数中,这个函数会根据用户选择的美化值来改变和美化用户的声音。美化值一般默认处于关闭状态(VOICE_BEAUTIFIER_OFF)。用户使用声音美化处理器可以在保留自己原声的情况下让声音更好听。

mRtcEngine.setVoiceBeautifierPreset(CHAT_BEAUTIFIER_MAGNETIC);

转换用户的声音

转换用户的声音可以彻底改变说话者的声音。如果主播进行了声音转化,听众会听到与原声完全不同的声音。用户如果想在直播中保持匿名或是觉得自己声音不好听,可以使用这个功能。

枚举值 描述 VOICE_CONVERSION_OFF 原声,即关闭变声效果。 VOICE_CHANGER_NEUTRAL 中性。为避免音频失真,请确保只在处理女声时使用这个对象。 VOICE_CHANGER_SWEET 甜美。为避免音频失真,请确保只在处理女声时使用这个对象。 VOICE_CHANGER_SOLID 稳重。为避免音频失真,请确保只在处理男声时使用这个对象。 VOICE_CHANGER_BASS 低沉。为避免音频失真,请确保只在处理男声时使用这个对象。

我们把语音转换值录入在 setVoiceConversionPreset 函数中,这个函数可以转换用户的声音:

public void convertoBass (View v){
 mRtcEngine.setVoiceConversionPreset (VOICE_CHANGER_BASS);
 Toast.makeText(getApplicationContext(), "Your voice has been converted to bass", Toast.LENGTH_LONG).show();
 }
 public void offVoice (View v){
 mRtcEngine.setVoiceConversionPreset ( VOICE_CONVERSION_OFF);
 Toast.makeText(getApplicationContext(), "voice effect turned off", Toast.LENGTH_LONG).show();
 }

小结

这个教程教会我们:

  • 如何美化用户的声音
  • 如何彻底改变用户的声音
  • 如何把用户设置为主播,并创建一个 RTC 引擎实例


总结

好啦,现在知道怎么改变和美化用户的声音了吧~感谢读到这里的童鞋们!

你可以在声网互动直播文档了解更多信息哦,也可以在 GitHub 声网API Examples 查看更多 Agora 的功能。如果你想要粘贴或引用我使用的 SDK,可以在 GitHub 声网API Examples 源代码 查看。


其他资源


原文作者:Boemo Wame Mmopelwa Boemo 是一位喜欢探索创新方法的软件开发人员。他喜欢钻研学习复杂的理念,然后把这些复杂的理念用简单有趣且便于理解的方式讲述出来。
原文链接:How to Beautify and Convert the User’s Voice Using the Agora Android SDK
推荐阅读
相关专栏
SDK 教程
167 文章
本专栏仅用于分享音视频相关的技术文章,与其他开发者和声网 研发团队交流、分享行业前沿技术、资讯。发帖前,请参考「社区发帖指南」,方便您更好的展示所发表的文章和内容。