record.vue 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. <script setup lang='ts'>
  2. const router = useRouter()
  3. function onClickLeft() {
  4. router.back()
  5. }
  6. function startAudioRecord() {
  7. // 检查浏览器是否支持 getUserMedia API
  8. if (navigator.mediaDevices && navigator.mediaDevices.getUserMedia) {
  9. // 请求用户的音频输入
  10. navigator.mediaDevices.getUserMedia({ audio: true })
  11. .then(function(stream) {
  12. // 创建一个 MediaRecorder 实例
  13. const mediaRecorder = new MediaRecorder(stream);
  14. // 创建一个数组来存储音频数据
  15. const audioChunks = [];
  16. // 当有音频数据可用时,将其添加到数组中
  17. mediaRecorder.addEventListener("dataavailable", function(event) {
  18. audioChunks.push(event.data);
  19. });
  20. // 当录音结束时,将音频数据转换为 Blob 对象
  21. mediaRecorder.addEventListener("stop", function() {
  22. const audioBlob = new Blob(audioChunks);
  23. const audioUrl = URL.createObjectURL(audioBlob);
  24. const audio = new Audio(audioUrl);
  25. audio.play();
  26. });
  27. // 开始录音
  28. mediaRecorder.start();
  29. // 5秒后停止录音
  30. setTimeout(function() {
  31. mediaRecorder.stop();
  32. }, 5000);
  33. })
  34. .catch(function(err) {
  35. console.log(err);
  36. });
  37. } else {
  38. console.log("浏览器不支持相关 API");
  39. }
  40. }
  41. </script>
  42. <template>
  43. <van-nav-bar title="声音采集" left-arrow @click-left="onClickLeft"></van-nav-bar>
  44. <div class="flex-auto w-full flex flex-col items-center justify-between py-72px px-6 box-border">
  45. <div class="w-full flex flex-col items-center mb-12">
  46. <div class="text-xl mt-26px">1 / 15</div>
  47. <p class="text-base indent mt-28px">宁愿用aac也不要用mp3,aac从音质上来说是比mp3要有保证,对声纹模型识别的效果也是有效的,即使aac的压缩比和mp3差不多大。不过,条件允许的话,还是用wav最好了,保16KHz16bit音频的wav,对声纹模型识别是最佳。</p>
  48. </div>
  49. <div class="flex w-full justify-around text-hex-242731">
  50. <div class="p-4 rounded-8 bg-white ">
  51. <van-icon name="volume" size="28" />
  52. </div>
  53. <div class="p-4 rounded-8 bg-white ">
  54. <van-icon name="play" size="28" />
  55. <van-icon name="pause" size="28" />
  56. <van-icon name="stop" size="28" />
  57. </div>
  58. <div class="p-4 rounded-8 bg-white ">
  59. <van-icon name="success" size="28" />
  60. </div>
  61. </div>
  62. </div>
  63. </template>