uni-app 插件讨论 YL-AudioRecorder 音频录制实时帧回调支持pcm转wav 白玉梁 想要检测录音时候人的声音

uni-app 插件讨论 YL-AudioRecorder 音频录制实时帧回调支持pcm转wav 白玉梁 想要检测录音时候人的声音

1 回复

更多关于uni-app 插件讨论 YL-AudioRecorder 音频录制实时帧回调支持pcm转wav 白玉梁 想要检测录音时候人的声音的实战教程也可以访问 https://www.itying.com/category-93-b0.html


uni-app 中使用 YL-AudioRecorder 插件进行音频录制,并希望在录音过程中实时检测人的声音,可以通过获取 PCM 数据并进行处理来实现。下面是一个示例代码,展示了如何使用 YL-AudioRecorder 插件录制音频,并将 PCM 数据转换为 WAV 格式,同时检测录音中的声音能量来判断是否有人声。

首先,确保你已经安装并配置好了 YL-AudioRecorder 插件。

插件安装(如果尚未安装)

npm install @dcloudio/uni-audio-recorder --save

代码示例

// 在 pages/index/index.vue 中
<template>
  <view>
    <button @click="startRecording">开始录音</button>
    <button @click="stopRecording">停止录音</button>
  </view>
</template>

<script>
import audioRecorder from '@dcloudio/uni-audio-recorder';

export default {
  data() {
    return {
      recorderManager: null,
      tempFilePath: '',
    };
  },
  methods: {
    startRecording() {
      this.recorderManager = uni.getRecorderManager();
      this.recorderManager.onFrameRecorded((res) => {
        const pcmData = res.frameBuffer; // 获取 PCM 数据
        this.processPCMData(pcmData);
      });
      this.recorderManager.onError((err) => {
        console.error('录音错误:', err);
      });
      this.recorderManager.start({
        format: 'pcm',
        sampleRate: 44100,
        numberOfChannels: 1,
        encodeBitRate: 192000,
      });
    },
    stopRecording() {
      this.recorderManager.stop();
      // 这里可以添加将 PCM 转换为 WAV 的逻辑,或者使用其他库处理
    },
    processPCMData(pcmData) {
      // 简单检测声音能量,判断是否有人声
      let energy = 0;
      for (let i = 0; i < pcmData.length; i += 2) {
        const sample = pcmData.readInt16LE(i);
        energy += sample * sample;
      }
      const rms = Math.sqrt(energy / (pcmData.length / 2));
      console.log('声音能量 RMS:', rms);
      // 根据 RMS 值判断是否有人声,这里只是一个简单的示例
      if (rms > someThresholdValue) {
        console.log('检测到人声');
      }
    },
  },
};
</script>

注意事项

  1. PCM 数据处理:上述示例中 processPCMData 方法只是简单地计算了声音的能量(RMS),你可以根据实际需求调整检测逻辑。
  2. PCM 转 WAV:示例中未包含 PCM 转 WAV 的代码,你可以使用 wav-encoder 等库来完成转换。
  3. 阈值设定someThresholdValue 需要根据你的实际环境和需求来设定。

这段代码提供了一个基本框架,你可以在此基础上进一步开发和优化以满足你的具体需求。

回到顶部