Python实现语音识别功能


利用django实现百度AI 语音识别、合成 RESTful API Python SDK

官方文档:https://ai.baidu.com/ai-doc/SPEECH/tk4o0bm3v

1. 我们要创建百度ai的语音技术应用

 

 2. 查看应用的 appid apikey secretkey

 

3. 安装使用Python SDK有如下方式:

  • 如果已安装pip,执行pip install baidu-aip即可。
  • 如果已安装setuptools,执行python setup.py install即可。

4. 上代码

#views.py
from aip import AipSpeech
import os
from rest_framework.response import Response
from rest_framework.views import APIView
import uuid
from django_test.settings import UPLOAD_ROOT
APP_ID = '你的appid'
API_KEY = '你的apikey'
SECRET_KEY = '你的secretkey'
client = AipSpeech(APP_ID, API_KEY, SECRET_KEY)
class Get_pcmAPI(APIView):
    def post(self,request):
        #获取到pcm对象
        data_pcm = request.data.get('pcm_audio')
        #利用uuid给文件对象级别名防止重复
        pcm_name = str(uuid.uuid4()) + '.pcm'
        #存储到静态目录下
        upload_ = os.path.join(UPLOAD_ROOT,pcm_name)
        with open(upload_,'wb')as pf:
            #将对象以二进制留写入目录 chunks将文件分成快上传
            for i in data_pcm.chunks():
                pf.write(i)
        #获取文件的方法
        def get_file_content(filePath):
            with open(filePath, 'rb') as fp:
                return fp.read()
        # 识别本地文件
        res = client.asr(get_file_content(upload_), 'pcm', 16000, {
            'dev_pid': 1536,
        })
        print(res) 
        #{'corpus_no': '6845169661962051650', 'err_msg': 'success.', 'err_no': 0, 'result': ['今天天气怎么样'], 'sn': '124218514521593765257'}
        return Response({'code':200,'message':res.get('result')[0]})

5. 送上前端小代码

 利用 js小插件 `js-audio-recorder`

 npm方式:npm i js-audio-recorder 

 官方文档:https://www.npmjs.com/package/js-audio-recorder

<template>
  <div>
    <Button @click="start_luyin">开始录音</Button>
    <Button @click="end_luyin">结束录音</Button>
    <p v-if="messge_audio">
      你刚刚说的话是: {{messge_audio}}
    </p>
  </div>
</template>
<script>
  import Recorder from 'js-audio-recorder';

  var recorder = new Recorder({
    sampleBits: 16,                 // 采样位数,支持 8 或 16,默认是16
    sampleRate: 16000,              // 采样率,支持 11025、16000、22050、24000、44100、48000,根据浏览器默认值,我的chrome是48000
    numChannels: 1,                 // 声道,支持 1 或 2, 默认是1
    // compiling: false,(0.x版本中生效,1.x增加中)  // 是否边录边转换,默认是false
  });
  export default {
    data() {
      return {
        messge_audio: '',
      }
    },
    //定义组建标签
    components: {},
    filters: {},
    //自定义方法
    methods: {
      start_luyin: function () {
        recorder.start().then(() => {
          alert('开始录音')
        })
      },
      end_luyin: function () {
        recorder.stop()
        var pcm_auido = recorder.getPCMBlob()
        console.log(pcm_auido)
        var fromdata = new FormData()
        fromdata.append('pcm_audio', pcm_auido)
        this.axios({
          url: 'http://127.0.0.1:8000/getpcm/',
          method: 'post',
          data: fromdata
        }).then((res) => {
          this.messge_audio = res.data.message
        })
      }
    },
    //钩子方法
    mounted: function () {
      console.log('这是初始化方法');


    },
    //监听属性
    watch: {},
    //计算属性
    computed: {}


  }


</script>

<style>

</style>

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM