-
2019-06-29 11:07:00
网上查了很多资料,自己在总结一下,感谢各位大佬提供的资料。
页面
<div class="lbox_close wxapi_form"> <button class="btn btn_primary" id="startRecord">开始</button> <button class="btn btn_primary" id="deleteVoice">删除</button> <button class="btn btn_primary" id="uploadVoice">确认</button> </div>
<script> //文档加载完后立即执行 wx.config({ debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。 appId: '{$sign["appId"]}', // 必填,公众号的唯一标识 timestamp: {$sign['timestamp']}, // 必填,生成签名的时间戳 nonceStr: '{$sign["nonceStr"]}', // 必填,生成签名的随机串 signature: '{$sign["signature"]}',// 必填,签名 jsApiList: [ "startRecord", "stopRecord", "onVoiceRecordEnd", "playVoice", "pauseVoice", "stopVoice", "onVoicePlayEnd", "uploadVoice", "downloadVoice",]// 必填,需要使用的JS接口列表 }); wx.ready(function () { var voice = { localId: '', serverId: '' }; var startRecord = document.querySelector('#startRecord'); var stopClearTimeout; startRecord.onclick = function () { //开始录音 if(startRecord.innerHTML == '开始'){ wx.startRecord({ success: function(){ startRecord.innerHTML = '停止'; //30秒后自动停止; stopClearTimeout = setTimeout(function(){ wx.stopRecord({ success: function (res) { voice.localId = res.localId; startRecord.innerHTML = '试听'; } }); },30000); } }); } //结束录音 if(startRecord.innerHTML =='停止'){ wx.stopRecord({ success: function (res) { clearTimeout(stopClearTimeout); startRecord.innerHTML = '试听'; voice.localId = res.localId; }, fail: function (res) { alert(JSON.stringify(res)); } }); } //试听音频 if(startRecord.innerHTML =='试听'){ if (voice.localId == '') { alert('请先录制一段声音'); return; } wx.playVoice({ localId: voice.localId }); } }; //删除语音,重新录音; document.querySelector('#deleteVoice').onclick = function(){ voice.localId = ''; startRecord.innerHTML = '开始'; }; //确认上传语音 document.querySelector('#uploadVoice').onclick = function () { if (voice.localId == '') { alert('请先录制一段声音'); return; } wx.uploadVoice({ localId: voice.localId, // 本地微信语音文件标识 isShowProgressTips: 1, // 开启上传提示 success: function (res) { //上传成功后从微信服务器下保存 voice.serverId = res.serverId; $.ajax({ url: '/mobile/member/luyin.php?action=save',//后台接收数据地址 type: 'post', data: {'id': voice.serverId}, success: function (msg) { if(msg == 1){ alert('上传成功!'); } } }); }, error:function(res){ alert("上传失败"); } }); }; }); wx.error(function (res) { alert("出现错误请重试:"+res.errMsg); }); </script>
后台接收数据保存部分,使用到了ffmpeg,将amr格式的文件转换为MP3
$id=$_POST['id']; $now=time(); $url="http://file.api.weixin.qq.com/cgi-bin/media/get?access_token=$access_token&media_id=$id"; $targetName = DT_ROOT .'/file/upload/123/'.$now.'.amr'; //保存目录,格式为www/wwwroot/http:...../。。.amr; ob_start(); readfile($url); $luyin = ob_get_contents(); ob_end_clean(); $size = strlen($luyin); $fp = fopen($targetName, 'a'); fwrite($fp, $luyin); fclose($fp); // 将 amr 文件格式转换成 mp3 格式 ,不需要转换的在这里就结束了,当然了可以写个语句把MP3的路径保存起来,方便调用,下一篇讲一下ffmpeg的安装使用。 $amrFile = DT_ROOT .'/file/upload/123/'.$now.'.amr'; $mp3File = DT_ROOT .'/file/upload/123/'.$now.'.mp3'; // 调用PHP命令,将amr格式文件转换为mp3 $command = "ffmpeg -i " . $amrFile . " " . $mp3File . " 2>&1"; $a1=exec($command, $output1,$return1); $a2=$a1.'|'.$output1.'|'.$return1; //var_dump($al); $videourl=$CFG['url'] .'/file/upload/123/'.$now.'.mp3';//类似http:....../时间戳.mp3 // $videourl=$mp3File; $names=$_username; $db->query("INSERT INTO {$DT_PRE}sound_record (userid,username,soundrecord,addtime,status) VALUES ('$_userid','$names','$videourl','$now','1')"); echo 1; exit;
转载自:微信 JS-SDK 录音功能开发
更多相关内容 -
高考日语模拟试题(三十一).doc
2021-04-02 17:14:41第一节——听下面7段录音,每段录音后有1道小题,从[A][B][C]3个选项中选中最佳选项。(共7小题;每小题2分,满分14分) 1、男の人はどうして昼ご飯を食べないのですか。 A体の具合がよくないから B太らないため ... -
如何恢复录音删除的录音文件_苹果手机录音误删怎么恢复?掌握这招,轻松搞定!...
2020-11-18 22:51:32苹果手机录音误删怎么恢复?...第一种方法:最近删除删除的录音被被转移到“语音备忘录”列表的“最近删除”文件夹中,默认该录音会保留30天,想要恢复删除的录音,可以通过最近删除文件夹找到需要恢复的录音点...苹果手机录音误删怎么恢复?通过苹果手机的语音备忘录,我们可以进行录音。录制好的内容可以通过语音备忘录直接修剪,不需要该录音还可以直接选择删除。很多人会手滑误删重要的录音,这种情况下我们可以尝试用一些方法来恢复这些被删除的语音备忘录。
第一种方法:最近删除
删除的录音被被转移到“语音备忘录”列表的“最近删除”文件夹中,默认该录音会保留30天,想要恢复删除的录音,可以通过最近删除文件夹找到需要恢复的录音点击恢复。
附加技巧:通过苹果手机的设置->语音备忘录->清除已删除的项目可以修改录音在删除之后的保留时间,大家可以按照自己的需要来修改保存时间,推荐选择7天后或30天后,让误删除的语音备忘录可以有时间恢复。
第二种方法:iCloud/iTunes
有些人可能会针对手机数据进行备份,不管是iCloud还是iTunes都可以帮我们备份手机上的数据,大家可以在自己常用的备份工具上查看备份文件的时间,如果删除的文件有备份,可以通过备份的内容直接恢复,针对自己的备份工具找到合适的恢复操作步骤即可。
第三种方法:专业恢复工具
术业有专攻,如果我们不知道录音删除之后如何恢复,或者尝试一些方法后都没找回删除的录音,别再浪费时间,避免错过数据恢复的最佳时间,直接预约专业恢复检测服务,让专业人员来帮我们解决问题。
以果师兄为例,果师兄工程师会提供多种数据恢复方法,包括使用专业数据恢复工具协助我们检测手机上的数据,如果这部分删除的内容没有被覆盖,可以用专业的方法恢复到手机。
苹果手机录音误删怎么恢复?数据删除之后并不会立即从手机上消失,使用专业的工具可以扫描检测到手机上存留的录音,如果自己没有找回删除的录音,建议大家尽快操作,避免时间一长以后新的数据把这部分内容彻底覆盖无法恢复。
果师兄APP下载地址:
果师兄恢复大师itunes.apple.com通过果师兄官网直接预约数据恢复服务:
果师兄官网_专业苹果手机数据恢复软件,支持高效恢复/备份iPhone数据www.guoshixiong.com -
基于C语言的录音播放程序--源代码
2019-03-07 10:03:38部分代码: int main() { creat_file(); //新建文件,原文件数据被删除 RecordWave(); //录音函数 simplest_pcm16le_to_wave("NocturneNo2inEflat_44.1k_s16le.pcm", 1, 44100, "output_nocture.wav"); //将... -
录音笔时间修改工具(同步文件/修改时间).rar
2019-09-05 01:58:054、建议将此工具复制在桌面上,这样避免工具在录音笔中误操作删除。5、本工具需要winrar解压缩软件的支持,如无法运行请检测是否安装winrar软件。同步录音笔时钟工具:1.请用USB连接好录音笔,并确认电脑已经识别到... -
网络录音机VC源代码
2021-03-15 20:39:52程序分两部分一部分是(录音机+网络发送代码),一部分是(接收数据+播放波形音乐代码),由于程序只是为了自己用,很多地方没有注意错误的识别,结构也比较乱,本程序当初最头疼的就是控制损耗内存 ,结果用了双缓存来存储... -
声音采集源码java-AudioAnalyze:Android主要实现录音功能,集合了录音、暂停、停止、播放、重录、计时、pcm...
2021-06-07 01:42:51最近公司的一个需求,集合了录音、暂停、停止、完成、播放、重录、计时等功能,没找到合适的资源,大部分都不支持暂停,就自己整理并整合了一个,参考官方文档和一些资料后,撸了个库,现在做一些说明和解析。... -
使用 Audacity 录音
2020-10-14 00:00:00使用时间移动工具将右侧的剪辑拖开一段距离,按 Shift + R 键开始重新录制。 重录的音频出现在下面的音轨中,可使用时间移动工具将其拖至第一条音轨。或者,全选(Ctrl/Cmd + A)后,执行菜单:轨道/混音/混音并渲染...免费的音频软件 Audacity 功能强大,满足日常音频处理的需要,同时提供多国语言版本,包括简体中文版,并支持 Windows、MacOS、Linux 等多种平台。
官网地址
https://www.audacityteam.org/
Audacity 简单易用,尤其适合录制语音并快速优化声音。
1、开始录音
打开 Audacity 之后,选择正确的录音设置,然后点击“开始监视”,以测试麦克风的音量,理想值应在 -12 ~ -6 dB左右。
点击“录音”按钮,开始录音。可按“空格键”停止录制。
提示:
(1)建议使用更专业的麦克风,并安置防喷罩。
(2)在录制过程如果出现口误或有不和谐的声音发生也不用太在意,稍作停顿后重说一遍即可。
(3)录制完成后,稍微停顿几秒后,再去点“停止录制”按钮。此步骤的目的是为了收录环境噪音。
2、部分重录
使用选择工具将播放指示器移到要插入的位置,按 Ctrl/Cmd + I 键进行片段分离。使用时间移动工具将右侧的剪辑拖开一段距离,按 Shift + R 键开始重新录制。
重录的音频出现在下面的音轨中,可使用时间移动工具将其拖至第一条音轨。或者,全选(Ctrl/Cmd + A)后,执行菜单:轨道/混音/混音并渲染,将合并现有音轨。
3、局部修复
(1)删除口误
使用选择工具框选那些口误部分,并按 Delete 键删除。
(2)去除明显的呼吸声
选中呼吸声后,可将其设为静音。菜单:编辑/特殊移除/置为静音,快捷键:Ctrl/Cmd + L。
4、去除环境噪声
(1)使用选择工具框选环境噪音部分。
(2)菜单:效果/降噪,点击“取得噪声特征”按钮。
(3)按 Ctrl/Cmd + A 全选,再执行菜单:效果/降噪,点击“确定”。
5、解决声音忽大忽小的问题
首先,分析平均波峰。在音轨左侧标尺上右击,选择“分贝”及“半波”,然后目测分析平均峰值。
按 Ctrl/Cmd + A 全选,进入菜单:效果/压缩器,将刚才估计出的平均峰值(上图中约为 -12 dB)再减 5 dB,用作临界值 Threshold,比率 Ratio一般设置为 2 : 1 ,其它参数用默认值即可。
完成后,将音轨视图切换回默认的线性方式。
对于有特别高的波峰区域,使用选择工具选定后,进入菜单:效果/限幅器,将波峰限制到指定的分贝之下。
6、美化声音
按 Ctrl/Cmd + A 全选,进入菜单:效果/Filter Curve。
或者,进入菜单:效果/图形化均衡。
设置建议:
(1)将低于 80 Hz的所有滑块拉至最低,因为人声频率通常高于 80 Hz。
(2)在 200 ~ 500 Hz区段,人声易产生共鸣混浊的感觉。将某个频率滑块拉至最高,通过预览试听,找到之后,将它们降低 -3 ~ -6 dB左右,这样声音听起来会显得更干净。
(3)提高中低频 100 ~160 Hz,以及提升高频 5k ~ 10k Hz,以使声音听起来更饱满。
(4)反复预览试听,控制调节程度,避免出现尖锐刺耳的感觉。
人声频率参考
男声:低音 82 ~ 392 Hz,基准音区 64 ~ 523 Hz,中音 123 ~ 493 Hz,高音 164 ~ 698 Hz
女声:低音 82 ~ 392 Hz,基准音区 160 ~ 1200 Hz,低音 123 ~ 493 Hz,高音 220 ~ 1.1 kHz
7、标准化音量大小
进入菜单:效果/标准化,可设置峰值为 -1 dB 或者 -3 dB 左右。
提示:
音量大小要以音频仪表上的指示为准,切勿以自己耳朵听到的为准。
8、导出
菜单:文件/导出
一般选择“导出为 MP3”或者“导出为 WAV”。
“有钱的捧个钱场,好看的点下在看”
-
C++ string删除部分字符
2022-01-17 09:39:06使用此函数 std::string::erase 一共有四个重载 常用的是第四个:第一个参数是从什么位置删除,第二个参数是删除几个。 比如删除第一个字符就是: s.erase(0, 1); 获取身份证号后六位,即删除前面12位: s.erase(0, ...使用此函数
std::string::erase
一共有四个重载
常用的是第四个:第一个参数是从什么位置删除,第二个参数是删除几个。
比如删除第一个字符就是:
s.erase(0, 1);
获取身份证号后六位,即删除前面12位:
s.erase(0, 12);
删除最后一位:
s.erase(s.end()-1);
或者
s.pop_back();
C++官网给出的erase例子如下
// string::erase #include <iostream> #include <string> int main () { std::string str ("This is an example sentence."); std::cout << str << '\n'; // "This is an example sentence." str.erase (10,8); // ^^^^^^^^ std::cout << str << '\n'; // "This is an sentence." str.erase (str.begin()+9); // ^ std::cout << str << '\n'; // "This is a sentence." str.erase (str.begin()+5, str.end()-9); // ^^^^^ std::cout << str << '\n'; // "This sentence." return 0; }
了解下其英文含义是有必要的
erase:
擦除; 清除; 消除; 消灭; 擦掉,抹掉(笔迹等); 抹去,清洗(磁带上的录音或存储器中的信息);
引用:
-
Python-将一整段音频批量切成一小段一小段的
2020-06-09 14:14:15由于工作需要将一整段音频批量切成一小段一小段的,没找到啥工具,所以写了这个脚本。 1.代码如下: from pydub import AudioSegment from pydub.utils import make_chunks audio = AudioSegment.from_file("电视剧... -
Android实现可录音/暂停录音/播放录音的录音软件
2021-01-23 14:37:30文章目录一、功能简介与操作视频二、文件夹结构三、实现3.1 录制3.2 暂停/继续录制3.3 pcm转wav3.4 自定义文件名保存3.5 文件列表显示(1)功能1:...跳转到播放界面3.6 播放3.7 计时器3.8 跳转到下一个界面前删除当前界面... -
python录音
2019-05-23 18:49:01PyAudio 实现录音 自动化交互实现问答 Python 很强大其原因就是因为它庞大的三方库 , 资源是非常的丰富 , 当然也不会缺少关于音频的库 关于音频, PyAudio 这个库, 可以实现开启麦克风录音, 可以播放音频文件等等,... -
利用Python进行语音信号处理(一. 录制一段音频并且回放,绘制图像)
2020-03-20 00:13:04录音1.1 确认当前默认设备可用1.2 进行录音1.3 显示图像1.4 播放音频 0. 安装sounddevice库 首先, 我们需要安装sounddevice库, 利用pip 可以很简单的完成 打开命令行输入 pip3 install sounddevice 0.1 导入包 ... -
语音识别之男女声分类(从一段对话中分离男声)
2021-04-27 18:57:25前段时间,朋友让我帮忙剪十段音频,每段音频为约十分钟的包含男女生对话的录音,要求从中分离出男声的语音,男女声声音重叠部分可丢弃,刚开始本以为工作量没多大,遂打开了音频剪辑软件,剪了一段后发现这个事情... -
高考日语模拟试题(三十三).doc
2021-04-02 17:14:19第一部分:听力(共两节,满分30分) 做题时,先将答案标在试卷上。录音内容结束后,你将有两分钟的时间将试卷上的答案转填到答题纸上。 第一节(共7小题:每小题2分,满分14分) 听下面7段录音,每段录音后有1... -
Recorder录音,pcm音频转wav,将PCM音频段拼接播放
2021-11-29 21:03:52recorder录音 1、下载依赖包yarn add recorder-core 2、新建文件recode.js //recode.js import Recorder from "recorder-core/recorder.mp3.min"; var rec; rec = Recorder({ //本配置参数请参考下面的文档,有... -
html5录音支持pc和Android、ios部分浏览器,微信也是支持的,JavaScript getUserMedia
2018-05-16 23:17:41花了两天时间在前人基础上重复造了一个网页录音的轮子,顺带把github仓库使用研究了一下,扔到了github上,地址:https://github.com/xiangyuecn/Recorder 传送门:https://xiangyuecn.github.io/Recorder/ ... -
wavecn 录音软件 录音工具 汉化录音
2008-11-01 15:31:2710. 定时录音可以定义多个时间段。 11. MP3插件的打开功能界面支持播放音量控制。 12. 新版本安装时会删除之前安装版本的启动菜单。 13. 增强录音界面易用性,提供了简化功能/全部功能显示切换,并重排位置。 14. ... -
第一部分 Word练习题
2021-01-05 12:03:06第一部分 Word练习题 1.按要求编辑以下文字: 祖国为你们骄傲 祖国为你们骄傲。 我们有理由骄傲,因为我国体育健儿实现了历史性超越,他们不畏强手,奋勇当先,表现出顽强的拼搏精神、精湛的运动技术和良好的体育... -
商务人士的办公利器—索尼录音笔ICD-UX575F体验
2021-01-12 06:25:12对于商务办公人士来说,尤其是经常出差拜访客户进行商业洽谈,一支高清晰度且便携的录音笔可谓是随行必备品。纵观市售众多的数码录音笔品牌,索尼的知名度可以说是家喻户晓,多年音频领域的技术沉淀,让索尼拥有了一... -
科大讯飞语音无限制录音、识别功能的实现:Android studio(一)
2016-03-11 10:48:30无限制录音时长、识别全部语音文件 -
Android路上--AudioRecord 录音详解
2018-12-25 11:59:42AudioRecord + AudioTrack + AudioFormat,通过pcm文件合并并转wav实现录音、暂停、播放、停止、重录、计时等功能。 -
Unity 自动录音并截取音频保存
2020-06-23 20:22:25当麦克风的音量值大于一个值时,我们录音开启。 当麦克风的音量值连续小于一个值N次时,我们就当作说完话了,停止录音。 主要部分: 获取麦克风音量 private float GetVolume(AudioClip clip,int lengthVolume) { ... -
基于Avaya H323 IP录音系统的解决方案
2022-01-20 13:19:20Avaya H323协议 IP录音系统设计 1)支持数字、模拟、VOP等多种录音方式,支持分布式管理。 2)支持多种录音模式,可以在交换机前端录音,也可以在后端坐席录音 3)支持多通道录音,可以同时启动多个通道,对通话进行录音 ... -
python——判断一段音频是否有声音
2017-01-11 11:45:52根据一段wav音频判断该音频是否有声音#-*- coding: utf-8 -*- import os import wave from time import sleep import numpy as npSUCCESS = 0 FAIL = 1# 需要添加录音互斥功能能,某些功能开启的时候录音暂时关闭 def... -
树莓派 + USB麦克风 >>> 录音
2019-11-21 14:51:36又到期末了,课程设计又来了,我打算搞一个简易版家庭语音助手,然后前几天在搞百度的语音识别和语音合成,正好今天淘宝买的麦克风到了,我就开始搞拾音部分 关于语音识别和语音合成可参见: 树莓派 >>> ... -
使用ACR及MIUI自带通话录音实现通话录音读取及上传
2017-03-30 14:26:05虽然在Android5.0之前在AudioRecord开放给第三方的初始化方法中VOICE_CALL音频源是可以使用的,但是在厂商的适配过程中很多还是不能用,因此在低版本中一直是通过AudioRecord读取MIC录音源实现。很多厂商在做系统... -
uni-app实现录音及播放功能
2020-11-20 17:40:57实现录音功能 这里就需要用到uni.getRecorderManager() 大部分是直接搬了官网的代码,但是还是需要记录一下修改的部分 export default { data: { recorderManager: {}, innerAudioContext: {}, }, ... -
Qt各种采样率录音 录音到内存
2017-11-18 11:53:09近段时间了解了Qt的录音模块,Qt的录音模块分为QAudioInput输入,QAudioOutput输出。输入用来录音,输出用于播放。当然还用其它的QMediaPlayer、QAudioRecorder,这类控件封装的比较上层了;QAudioRecorder只能将... -
Android音频框架之三 用户录音启动流程源码走读 startRecord
2022-03-14 18:57:58此篇是对《Android音频框架之一 详解audioPolicy流程及HAL驱动加载》 和《Android音频框架之二 用户录音启动流程源码走读》的延续, 此系列博文是记录在Android7.1系统即以后版本实现内录音功能。 当用户使用 Audio...