0.0.8 • Published 4 months ago

iat-voice v0.0.8

Weekly downloads
-
License
-
Repository
-
Last release
4 months ago

Zoe 语音识别(语音听写)

🏡 下载安装:

# 使用npm命令下载安装
$ npm i iat-voice

📚 使用方法:

流式识别

参数名类型是否必需描述
urlstringwebSocket地址
import {IatRecorder} from 'iat-voice'
import {ref} from 'vue';
const textVal = ref('')
const url = '服务地址'
const recorder = new IatRecorder({
  url: url,
  onTextChange: function (text) {
    // 监听文本变化
  },
  onWillStatusChange: function (oldStatus, newStatus) {
    // 监听状态变化
    console.log(oldStatus, newStatus, '状态变化')
  },
})

// 开始录音
const start = () => {
  recorder.start()
}

// 结束录音
const stop = () => {
  recorder.stop()
}

文件语音识别

参数名类型是否必需描述
session_idstring唯一ID
fileblob录音文件
audio_typestring录音格式-支持的音频格式为wav、mp3、m4a、aac

这里使用recorder-core插件来获取录音数据。获取录音数据诸多方法,这里只展示recorder-core的例子。

import Recorder from 'recorder-core'
import 'recorder-core/src/engine/wav.js'
import 'recorder-core/src/engine/mp3.js'
import 'recorder-core/src/engine/mp3-engine.js'
import {VoiceRecognizer} from 'iat-voice'
import {ref} from 'vue';
const rec = ref()
const recOpen = () => {
  //创建录音对象
  rec.value = Recorder({
    type: 'mp3', //录音格式,可以换成wav等其他格式
    sampleRate: 16000, //录音的采样率,越大细节越丰富越细腻
    bitRate: 16, //录音的比特率,越大音质越好
    onProcess: (
        buffers,
        powerLevel,
        bufferDuration,
        bufferSampleRate,
        newBufferIdx,
        asyncEnd,
    ) => {

    },
  })
  //打开录音,获得权限
  rec.value.open(
      () => {
        if (!rec.value) {
          console.error('未打开录音')
          return
        }
        rec.value.start()
        console.log('录音已打开')
      },
      (msg, isUserNotAllow) => {
        //用户拒绝了录音权限,或者浏览器不支持录音
        console.log(
            (isUserNotAllow ? 'UserNotAllow,' : '') + '无法录音:' + msg,
        )
      },
  )
}


const recStop = () => {
  if (!rec.value) {
    console.error('未打开录音')
    return
  }
  rec.value.stop(
      (blob, duration) => {
        //blob就是我们要的录音文件对象,可以上传,或者本地播放
        //简单利用URL生成本地文件地址,此地址只能本地使用,比如赋值给audio.src进行播放,赋值给a.href然后a.click()进行下载(a需提供download="xxx.mp3"属性)
        const localUrl = (window.URL || webkitURL).createObjectURL(blob)
        console.log('录音成功', blob, localUrl, '时长:' + duration + 'ms')

        // this.upload(blob) //把blob文件上传到服务器

        rec.value.close() //关闭录音,释放录音资源,当然可以不释放,后面可以连续调用start
        rec.value = null
        const formData = new FormData()
        formData.append('audio', blob, 'recorded_audio.wav')
        transText(blob)
      },
      (err) => {
        console.error('结束录音出错:' + err)
        rec.value.close() //关闭录音,释放录音资源,当然可以不释放,后面可以连续调用start
        rec.value = null
      },
  )
}

const transText = (blob) => {
  const recognizer = new VoiceRecognizer('服务地址')
  const session = '761877aacbcc'
  recognizer.recognize(session, blob, 'mp3')
      .then(getText => {
        console.log('识别结果:', getText());  // 获取识别结果
      })
      .catch(err => {
        console.error('识别出错:', err);
      });
}
0.0.8

4 months ago

0.0.7

4 months ago

0.0.6

5 months ago

0.0.5

5 months ago

0.0.4

6 months ago

0.0.3

6 months ago

0.0.2

6 months ago

0.0.1

6 months ago