HarmonyOS 鸿蒙Next文本转语音后的onData回调中的audio: ArrayBuffer如何使用AudioRenderer正常播放

HarmonyOS 鸿蒙Next文本转语音后的onData回调中的audio: ArrayBuffer如何使用AudioRenderer正常播放 使用文本转语音后,再使用AudioRenderer播放(不实用textToSpeech自带的播放),实现过程中遇到的问题,请路过的大神帮忙解惑

  1. write(buffer: ArrayBuffer, callback: AsyncCallback<number>): void

    从 API version 11 开始废弃,建议使用AudioRenderer中的on(‘writeData’)替代

  2. on(‘writeData’)如何直接使用textToSpeech回调onData中的audio: ArraBuffer

  3. 使用了废弃的write(buffer: ArrayBuffer, callback: AsyncCallback<number>): void

    但是播放的声音是杂音,无法正常听到内容,就像高倍速的声音


更多关于HarmonyOS 鸿蒙Next文本转语音后的onData回调中的audio: ArrayBuffer如何使用AudioRenderer正常播放的实战教程也可以访问 https://www.itying.com/category-93-b0.html

6 回复
let audioStreamInfo: audio.AudioStreamInfo = {
  samplingRate: audio.AudioSamplingRate.SAMPLE_RATE_16000, // 采样率,文本转语音的音频流采样率为16000
  channels: audio.AudioChannel.CHANNEL_1, // 通道,文本转语音的音频流通道为单声道
  sampleFormat: audio.AudioSampleFormat.SAMPLE_FORMAT_S16LE, // 采样格式,文本转语音的音频流采样格式固定
  encodingType: audio.AudioEncodingType.ENCODING_TYPE_RAW // 编码格式
}

let audioRendererInfo: audio.AudioRendererInfo = {
  usage: audio.StreamUsage.STREAM_USAGE_VOICE_ASSISTANT, // 音频流使用类型,语音播放
  rendererFlags: 0 // 音频渲染器标志
}

AudioRenderer这样些试试

更多关于HarmonyOS 鸿蒙Next文本转语音后的onData回调中的audio: ArrayBuffer如何使用AudioRenderer正常播放的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


感谢大佬,修改为CHANNEL_1播放正常了

现在就剩下一个AudioRenderer中的on(‘writeData’)的使用问题了,

哈喽,请问下有没有完整点的代码,本来场景就稍微复杂,代码不全,很少会有人愿意回答的

HarmonyOS的分布式技术让我实现了跨设备的无缝协作,工作效率翻倍。

感谢提点,已更新完整代码,

在HarmonyOS中,onData回调返回的audio: ArrayBuffer可以通过AudioRenderer进行播放。首先,确保你已经创建并配置了AudioRenderer实例,设置了正确的音频参数,如采样率、声道数和音频格式。然后,将ArrayBuffer转换为Uint8Array,使用AudioRendererwrite方法将音频数据写入播放队列。最后,调用start方法开始播放。AudioRenderer会处理音频数据的解码和播放。如果音频数据较大,可以分批写入,避免一次性写入过多数据导致内存问题。

回到顶部