别再瞎摸索了!HarmonyOS AI 字幕控件用法全解析

引言

现在视频、音频这些多媒体内容越来越多,用户对字幕的需求也跟着水涨船高,毕竟谁不想轻松看懂听不懂的内容呢?而且这两年人工智能技术发展得这么快,早就该用到字幕领域了——以前全靠人工打字幕,费时费力还容易出错,现在有了AI帮忙,简直是解放双手!正好HarmonyOS推出了AI字幕控件,这东西能自动识别语音、生成字幕,一下子就让视频和音频内容变得更易用了。对咱们做鸿蒙原生应用的人来说,更是省了大事儿——不用自己费劲搭一套字幕系统,直接用这个控件就能搞定相关功能,效率高多了。所以今天这篇文章,就想好好跟大家说说,怎么在HarmonyOS应用里把这个AI字幕控件集成进去,具体又该怎么用。不管你是刚接触鸿蒙开发的新手,还是想给应用加字幕功能的老开发者,看完应该都能明白,上手试试也方便。

AI字幕控件技术概述

先来介绍关于AI字幕控件技术的概念,其实AI字幕控件利用语音识别技术(Automatic Speech Recognition, ASR)将语音转换成文本,并实时显示为字幕。这项技术对于听障人士、非母语观众以及需要静音环境下理解内容的用户来说非常有用。

关于AI字幕控件

在HarmonyOS中,关于AI字幕控件的使用,通常涉及下面的操作步骤:
1.权限申请:在应用的配置文件中添加必要的权限。
2.集成ASR服务:使用系统提供的API集成语音识别服务。
3.配置字幕参数:设置字幕的语言、样式和显示位置。
4.显示字幕:将识别的文本以字幕的形式显示在界面上。

使用场景

再来介绍一下AI字幕的是使用场景,AI字幕控件应用广泛,例如在用户不熟悉音频源语言或者静音的时候,为用户提供字幕服务。然后再来介绍一下HarmonyOS中关于AI字幕的接口都有哪些?AI字幕功能主要由AICaptionComponent提供,具体如下所示:
别再瞎摸索了!HarmonyOS AI 字幕控件用法全解析_第1张图片

实现AI字幕控件

接下来就来详细分享关于如何实现AI字幕控件,具体的操作步骤如下所示。

步骤1:引入类

从项目根目录进入/src/main/ets/pages/Index.ets文件,在使用AI字幕控件前,将实现AI字幕控件和其他相关的类添加至工程。具体操作如下所示:

import { AICaptionComponent, AICaptionController, AICaptionOptions } from '@kit.SpeechKit';

步骤2:配置页面布局

然后简单配置页面的布局,加入AI字幕组件,并在aboutToAppear中设置AI字幕组件的传入参数,具体操作步骤如下所示:

import { hilog } from '@kit.PerformanceAnalysisKit';

const TAG = 'AI_CAPTION_DEMO'

class Logger {
  static info(...msg: string[]) {
    hilog.info(0x0000, TAG, msg.join())
  }

  static error(...msg: string[]) {
    hilog.error(0x0000, TAG, msg.join())
  }
}

@Entry
@Component
struct Index {
  private captionOption ?: AICaptionOptions;
  private controller = new AICaptionController();
  @State isShown: boolean = false;

  aboutToAppear(): void {
    // AI字幕初始化参数,设置字幕的不透明度和回调函数
    this.captionOption = {
      initialOpacity: 1,
      onPrepared: () => {

      },
      onError: (error) => {

      }
    }
  }

  build() {
    Column({ space: 20 }) {
      // 调用AICaptionComponent组件初始化字幕
      AICaptionComponent({
        isShown: this.isShown,
        controller: this.controller,
        options: this.captionOption
      })
        .width('80%')
        .height(100)
      Divider()
      if (this.isShown) {
        Text('上面是字幕区域')
          .fontColor(Color.White)
      }
    }
    .width('100%')
    .height('100%')
    .padding(10)
    .backgroundColor('#7A7D6A')
  }
}

步骤3:回调函数

然后在布局中加入两个按钮以及点击事件的回调函数,具体设置如下所示:

  • 第一个按钮的回调函数负责控制AI字幕组件的显示状态。
  • 第二个按钮的回调函数负责读取资源目录中的音频文件,将音频数据传给AI字幕组件。
    具体的示例代码如下所示:
import { AudioData } from '@kit.SpeechKit';

@Entry
@Component
struct Index {

  isReading: boolean = false;

  async readPcmAudio() {
    this.isReading = true;
    const fileDate: Uint8Array = await getContext(this).resourceManager.getMediaContent($r("app.media.chineseAudio"));
    const bufferSize = 640;
    const byteLength = fileDate.byteLength;
    let offset = 0;

    let starTime = new Date().getTime();
    while (offset < byteLength) {
      //模拟实际情况,读文件比录音机返回流快,所以要等待一段时间
      let nextOffset = offset + bufferSize
      if (offset > byteLength) {
        this.isReading = false;
        return
      }
      const arrayBuffer = fileDate.buffer.slice(offset, nextOffset);
      let data = new Uint8Array(arrayBuffer);

      const audioData: AudioData = {
        data: data
      }

      if (this.controller) {
        Logger.info(`writeAudio: ${audioData.data.byteLength}`)
        this.controller.writeAudio(audioData)
      }
      offset = offset + bufferSize;
      const waitTime = bufferSize / 32
      await this.sleep(waitTime)
    }
    let endTime = new Date().getTime()
    this.isReading = false;

  }

  sleep(time: number): Promise {
    return new Promise(resolve => setTimeout(resolve, time))
  }

  build() {
    Column({ space: 20 }) {
     // ...
      Button('切换字幕显示状态:' + (this.isShown ? '显示' : '隐藏'))
        .backgroundColor('#B8BDA0')
        .width(200)
        .onClick(() => {
          this.isShown = !this.isShown;
        })
      Button('读取PCM音频')
        .backgroundColor('#B8BDA0')
        .width(200)
        .onClick(() => {
          if (!this.isReading) {
            this.readPcmAudio()
          }
        })
     // ...
    }
  }
}

自定义AI字幕控件

除了基本的字幕显示功能,开发者还可以根据应用的需求自定义AI字幕控件行为,比如:

  • 字幕同步:根据视频播放进度同步字幕显示。
  • 用户自定义设置:允许用户自定义字幕的样式和位置。

最后

大家都知道,AI字幕控件是HarmonyOS开发里的一项创新功能,它能给应用提供强大的语音识别和字幕显示能力,在移动应用开发中的重要性自然不用多说。通过本文的介绍,大家能清楚了解到在HarmonyOS应用里如何实现AI字幕控件功能,以及实际开发中的具体操作方法。而且随着技术不断发展,加上如今人工智能技术日益成熟,AI字幕控件在HarmonyOS生态中会扮演越来越重要的角色,这不仅能给鸿蒙原生应用带来不少助力,也能为用户带来更丰富、便捷的使用体验。

你可能感兴趣的:(别再瞎摸索了!HarmonyOS AI 字幕控件用法全解析)