音视频开发者的福音,快速集成AI配音能力

  音视频内容创作者对剪辑应用中的AI配音需求与日俱增。它的优点很多,不光可以解决雇佣人力配音的成本以及创作者本身的口音、语言等限制,还可以大幅提升生产效率。比如,短视频的播放时间短的几十秒,长的vlog类型视频有4-5分钟,使用AI配音功能可以在短时间内实现多个剪辑需求。

  HMS Core音频编辑服务(Audio Editor Kit)提供AI配音服务,帮助开发者在应用中轻松构建语音合成功能,一键输出文字即可转换语音。它支持乖萌童声,亲切女声,阳光男声,英文男声、女声等多种风格音色,还可以定制自己想要的音色。音色自然流畅,情感丰富,满足有声阅读、音频内容制作、剪辑等多种开发者关注的热门场景。

  开发实战

  1.开发准备

  详细准备步骤可参考华为开发者联盟官网:

  https://developer.huawei.com/consumer/cn/doc/development/Media-Guides/config-agc-0000001154009063?ha_source=hms1

  2.编辑工程集成

  2.1设置应用的鉴权信息

  开发者需要通过api_key或者Access Token来设置应用鉴权信息。

  (推荐)通过setAccessToken方法设置Access Token,在应用启动时初始化设置

  HAEApplication.getInstance().setAccessToken("your access token");

  通过setApiKey方法设置api_key,在应用启动时初始化设置一次即可,无需多次设置。

  HAEApplication.getInstance().setApiKey("your ApiKey");

  2.2初始化环境

  初始化音频编辑管理类、创建时间线以及需要的泳道。

  // 创建音频编辑管理类

  HuaweiAudioEditor mEditor = HuaweiAudioEditor.create(mContext);

  // 初始化Editor的运行环境

  mEditor.initEnvironment();

  // 创建时间线

  HAETimeLine mTimeLine = mEditor.getTimeLine();

  // 创建泳道

  HAEAudioLane audioLane = mTimeLine.appendAudioLane();

  导入音乐。

  // 泳道末尾添加音频资源

  HAEAudioAsset audioAsset = audioLane.appendAudioAsset("/sdcard/download/test.mp3", mTimeLine.getCurrentTime());

  3. AI配音功能集成

  调用HAEAiDubbingEngine实现AI配音功能。

  // 通过此配置类来对AI配音引擎进行配置

  HAEAiDubbingConfig haeAiDubbingConfig = new HAEAiDubbingConfig()

  // 设置音量

  .setVolume(volumeVal)

  // 设置音速

  .setSpeed(speedVal)

  // 设置发音人

  .setType(defaultSpeakerType);

  // 单个AI配音任务回调

  HAEAiDubbingCallback callback = new HAEAiDubbingCallback() {

  @Override

  public void onError(String taskId, HAEAiDubbingError err) {

  // error处理

  }

  @Override

  public void onWarn(String taskId, HAEAiDubbingWarn warn) {}

  @Override

  public void onRangeStart(String taskId, int start, int end) {}

  @Override

  public void onAudioAvailable(String taskId, HAEAiDubbingAudioInfo haeAiDubbingAudioFragment, int i, Pair<Integer, Integer> pair, Bundle bundle) {

  // 开始接收文件,保存成文件

  }

  @Override

  public void onEvent(String taskId, int eventID, Bundle bundle) {

  // The synthesis is complete.

  if (eventID == HAEAiDubbingConstants.EVENT_SYNTHESIS_COMPLETE) {

  // AI配音任务处理结束,即合成的音频数据全部处理完毕

  }

  }

  @Override

  public void onSpeakerUpdate(List<HAEAiDubbingSpeaker> speakerList, List<String> lanList,

  List<String> lanDescList) { }

  };

  // AI配音引擎

  HAEAiDubbingEngine mHAEAiDubbingEngine = new HAEAiDubbingEngine(haeAiDubbingConfig);

  // 设置AI配音任务播放过程侦听

  mHAEAiDubbingEngine.setAiDubbingCallback(callback);

  // 实时AI配音并播放API,text传入待转语音的文本,modeAI配音任务播放模式

  String taskId = mHAEAiDubbingEngine.speak(text, mode);

  // 暂停播放

  mHAEAiDubbingEngine.pause();

  // 恢复播放

  mHAEAiDubbingEngine.resume();

  // 关闭合成

  mHAEAiDubbingEngine.stop();

posted @   Vhjch  阅读(78)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 百万级群聊的设计实践
· 全网最简单!3分钟用满血DeepSeek R1开发一款AI智能客服,零代码轻松接入微信、公众号、小程
· .NET 10 首个预览版发布,跨平台开发与性能全面提升
· 《HelloGitHub》第 107 期
· 从文本到图像:SSE 如何助力 AI 内容实时呈现?(Typescript篇)
点击右上角即可分享
微信分享提示