利用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>
