当前位置: 首页 > news >正文

语音识别(非实时)

1.环境

python :3.10.14

2.完整代码

import whisper #whisper
import wave  # 使用wave库可读、写wav类型的音频文件
import pyaudio  # 使用pyaudio库可以进行录音,播放,生成wav文件
def record(time):  # 录音程序# 定义数据流块CHUNK = 1024  # 音频帧率(也就是每次读取的数据是多少,默认1024)FORMAT = pyaudio.paInt16  # 采样时生成wav文件正常格式CHANNELS = 1  # 音轨数(每条音轨定义了该条音轨的属性,如音轨的音色、音色库、通道数、输入/输出端口、音量等。可以多个音轨,不唯一)RATE = 16000  # 采样率(即每秒采样多少数据)RECORD_SECONDS = time  # 录音时间WAVE_OUTPUT_FILENAME = "./output.wav"  # 保存音频路径p = pyaudio.PyAudio()  # 创建PyAudio对象stream = p.open(format=FORMAT,  # 采样生成wav文件的正常格式channels=CHANNELS,  # 音轨数rate=RATE,  # 采样率input=True,  # Ture代表这是一条输入流,False代表这不是输入流frames_per_buffer=CHUNK)  # 每个缓冲多少帧print("* 开始录音")  # 开始录音标志frames = []  # 定义frames为一个空列表for i in range(0, int(RATE / CHUNK * RECORD_SECONDS)):  # 计算要读多少次,每秒的采样率/每次读多少数据*录音时间=需要读多少次data = stream.read(CHUNK)  # 每次读chunk个数据frames.append(data)  # 将读出的数据保存到列表中print("* 结束语音")  # 结束录音标志stream.stop_stream()  # 停止输入流stream.close()  # 关闭输入流p.terminate()  # 终止pyaudiowf = wave.open(WAVE_OUTPUT_FILENAME, 'wb')  # 以'wb‘二进制流写的方式打开一个文件wf.setnchannels(CHANNELS)  # 设置音轨数wf.setsampwidth(p.get_sample_size(FORMAT))  # 设置采样点数据的格式,和FOMART保持一致wf.setframerate(RATE)  # 设置采样率与RATE要一致wf.writeframes(b''.join(frames))  # 将声音数据写入文件wf.close()  # 数据流保存完,关闭文件
if __name__ == '__main__':# model = whisper.load_model("medium")model = whisper.load_model("small")record(5)  # 定义录音时间,单位/sresult = model.transcribe("./output.wav",language='chinese',fp16 = False)s = result["text"]print("语音转文字"+s)

3.问题

1.这里面用的是openAI的whisper模型,直接代码跑起来自动下载
2.有问题私信联系

相关文章:

  • Python编程:08- pycharm使用技巧
  • NLP 序列标注任务核心梳理
  • compose remember 作用
  • Vue3+el-menu 递归 emit失效
  • 掌握MATLAB仪器控制工具箱:自动化测试与数据采集的利器
  • python的 __name__和__doc__属性
  • 测温传感器应用
  • 基于TypeScript+React+AntDesign 的车辆车型管理页面
  • 相亲交友系统的社会影响:家庭结构的变化
  • mysql索引 -- 全文索引介绍(如何创建,使用),explain关键字
  • 《AI时代程序员的核心技能升级之路》
  • LInux操作系统安装Jenkins
  • Kafka技术详解[5]: 集群启动
  • 修改 idea 的 Terminal 命令窗口使用 git-bash
  • 计算机网络33——文件系统
  • css选择器
  • JavaScript HTML DOM
  • Java方法详解
  • php面试题 汇集2
  • python大佬养成计划----difflib模块
  • Quartz初级教程
  • React系列之 Redux 架构模式
  • Redis字符串类型内部编码剖析
  • spring-boot List转Page
  • SpringBoot 实战 (三) | 配置文件详解
  • unity如何实现一个固定宽度的orthagraphic相机
  • V4L2视频输入框架概述
  • 闭包--闭包之tab栏切换(四)
  • 关于List、List?、ListObject的区别
  • 扑朔迷离的属性和特性【彻底弄清】
  • 翻译 | The Principles of OOD 面向对象设计原则
  • ​Java并发新构件之Exchanger
  • ​LeetCode解法汇总518. 零钱兑换 II
  • #Linux(权限管理)
  • (3)STL算法之搜索
  • (C++)栈的链式存储结构(出栈、入栈、判空、遍历、销毁)(数据结构与算法)
  • (done) 声音信号处理基础知识(2) (重点知识:pitch)(Sound Waveforms)
  • (理论篇)httpmoudle和httphandler一览
  • (每日持续更新)信息系统项目管理(第四版)(高级项目管理)考试重点整理 第13章 项目资源管理(七)
  • (每日一问)基础知识:堆与栈的区别
  • (十五)Flask覆写wsgi_app函数实现自定义中间件
  • (转)jdk与jre的区别
  • .net 8 发布了,试下微软最近强推的MAUI
  • .NET 回调、接口回调、 委托
  • .NET/C#⾯试题汇总系列:⾯向对象
  • .Net组件程序设计之线程、并发管理(一)
  • @JsonFormat 和 @DateTimeFormat 的区别
  • @RestControllerAdvice异常统一处理类失效原因
  • [ MSF使用实例 ] 利用永恒之蓝(MS17-010)漏洞导致windows靶机蓝屏并获取靶机权限
  • [16/N]论得趣
  • [ABC275A] Find Takahashi 题解
  • [BT]BUUCTF刷题第4天(3.22)
  • [CSS]文字旁边的竖线以及布局知识
  • [Java、Android面试]_05_内存泄漏和内存溢出
  • [Java][方法引用]构造方法的引用事例分析