欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

python实现网页录音效果

程序员文章站 2022-03-11 15:00:37
本文实例为大家分享了python实现网页录音效果的具体代码,供大家参考,具体内容如下服务器:tornado语言:python,js,html效果:(将录好的音放在指定位置)实现逻辑:部分实现代码:we...

本文实例为大家分享了python实现网页录音效果的具体代码,供大家参考,具体内容如下

服务器:tornado

语言:python,js,html

效果:(将录好的音放在指定位置)

python实现网页录音效果

实现逻辑:

python实现网页录音效果

部分实现代码:

web:

<button type="submit" class="btn btn-primary mb-2 record_start">开始录音</button>
<button type="submit" class="btn btn-primary mb-2 record_stop">结束录音</button>

注意,class中最后一项 record_start或record_stop,后面js文件中的方法调用和这个对应

js:(其中用到ajax,需要用到jquery-3.4.1.min.js)

$('.record_start').on('click',function(e){
 //css中有chat的,点击时开始相应,其中' . '代表是在css中,' # '代表是在id中
 e.preventdefault();
  //防止跳转
 args = {'query':'start'}
 $.ajax({
  async: false,
  url:'/record',
  type:'post',
  data:$.param(args),
  success: function(res){
  var data =json.parse(res)
  if(data.code == 0){
   console.log('发送成功');
  }
  else{
   console.error('发送失败');
  }
  },
  error:function(){
  console.error('发送失败');
  }
 })
 //$代表jquery,可发起ajax请求,相当于requests,
 })
 $('.record_stop').on('click',function(e){
 //css中有chat的,点击时开始相应,其中' . '代表是在css中,' # '代表是在id中
 e.preventdefault();
  //防止跳转
 args = {'query':'stop'}
 $.ajax({
  async: false,
  url:'/record',
  type:'post',
  data:$.param(args),
  success: function(res){
  var data =json.parse(res)
  if(data.code == 0){
   console.log('发送成功');
  }
  else{
   console.error('发送失败');
  }
  },
  error:function(){
  console.error('发送失败');
  }
 })
 //$代表jquery,可发起ajax请求,相当于requests,
 })

python server:

static = record_wav.final_record()
 
class recordhandler(basehandler):
 global static
 def post(self):
 query = self.get_argument('query','')
 static.record_wav(query)
 res = {'code':0,'message':'sucess'}
 self.write(json.dumps(res))
 self.finish()
 
 
def make_app():
 return tornado.web.application([
 #其他没用的我删了
 (r"/record",recordhandler)
 ],**settings)
 '''
 **settings:将字典中的元素解析出来,写配置的
 '''

这里值得注意的是:定义一个全局变量,因为第二次选择关闭录音的时候也得调用这个类,倘若不加全局,对于static,计算机会重新开辟新空间而不是用之前的,这就导致你的录音没法停止,因为它会停止一个空的录音。

python实现网页录音效果

python record_wav.py

rec =recorder()
 
class final_record():
 
 def record_wav(self,static):
  global rec
  if static == 'start':
  rec.start()
  return 'success!'
  elif static=='stop':
  rec.stop()
  rec.save(fname)
  asr=asr.xunfeiasr()
  query=''
  query=asr.transcribe(fname)
  return query

同上,这儿的对象也得是全局变量。(这俩全局变量想了很久才想出来的,当然,贸然设全局变量很不好,但我只能想到这么多了)

其他的代码,例如录音方面的网上很好找,暂且不再次赘述了。

录音代码可以参考这位博主的文章:

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

相关标签: python 网页录音