基于阿里云百炼大模型Sensevoice-1的语音识别与文本保存工具开发

news2025/3/6 20:42:59

基于阿里云百炼大模型Sensevoice-1的语音识别与文本保存工具开发

摘要
随着人工智能技术的不断发展,语音识别在会议记录、语音笔记等场景中得到了广泛应用。本文介绍了一个基于Python和阿里云百炼大模型的语音识别与文本保存工具的开发过程。该工具能够高效地识别东北方言的会议记录音频文件,并将识别结果保存为文本文件,方便用户使用和管理。

1.引言

语音识别技术是人工智能领域的重要分支,它能够将语音信号转换为文本内容,极大地提高了信息处理的效率。在实际应用中,例如会议记录、语音笔记等场景,语音识别工具能够帮助用户快速生成文本内容,节省时间和精力。本文将详细介绍如何使用Python和阿里云百炼大模型开发一个简单的语音识别与文本保存工具,特别关注对东北方言会议记录音频文件的识别。

2.技术栈介绍

2.1 Python

Python是一种广泛使用的高级编程语言,具有简洁的语法和强大的库支持,适合快速开发各种应用。在本项目中,Python被用于实现图形用户界面和后端逻辑。

2.2 阿里云百炼大模型

阿里云百炼大模型提供了强大的语音识别能力,支持多种语言和方言的识别。其中,sensevoice-v1模型专门针对中文语音识别进行了优化,能够高效地处理东北方言等地方言的语音文件。通过阿里云的API,我们可以轻松地将语音识别功能集成到我们的工具中。

2.3 Tkinter

Tkinter是Python的标准GUI库,用于创建图形用户界面。它提供了丰富的控件,如按钮、文本框等,能够方便地实现用户交互功能。

3.工具功能设计

3.1 东北方言会议记录语音识别

工具的核心功能是识别东北方言的会议记录音频文件。用户可以通过点击“会议记录语音识别”按钮,触发语音识别流程。工具会调用阿里云百炼大模型的语音识别API,将指定的东北方言音频文件转换为文本内容,并显示在文本框中。

3.2 文本保存

识别后的文本内容可以通过点击“保存识别内容到文本”按钮保存到本地文件中。用户可以选择保存路径和文件名,工具会将文本内容写入指定的文本文件中。

4.代码实现

4.1 初始化界面
class AudioTranscriptionApp:
    def __init__(self, root):
        self.root = root
        self.root.title("语音识别与保存工具")
        self.root.grid_rowconfigure(0, weight=1)
        self.root.grid_columnconfigure(0, weight=1)
        self.root.grid_columnconfigure(1, weight=1)

        self.text_box = tk.Text(root, height=15, width=60, font=("Arial", 18))
        self.text_box.grid(row=0, column=0, columnspan=2, sticky="nsew", padx=10, pady=10)
        self.text_box.insert(tk.END, "识别内容如下:\n")

        self.recognize_button = tk.Button(root, text="会议记录语音识别", command=self.recognize_audio)
        self.recognize_button.grid(row=1, column=0, padx=10, pady=10, sticky="ew")

        self.save_button = tk.Button(root, text="保存识别内容到文本", command=self.save_transcription)
        self.save_button.grid(row=1, column=1, padx=10, pady=10, sticky="ew")

在初始化界面时,我们创建了一个多行文本框用于显示识别结果,以及两个按钮分别用于触发语音识别和保存文本内容。

4.2 东北方言会议记录语音识别逻辑
def recognize_audio(self):
    try:
        task_response = dashscope.audio.asr.Transcription.async_call(
            model='sensevoice-v1', # 语言模型
            file_urls=[
                'https://ai-inspection-lxw.oss-cn-hangzhou.aliyuncs.com/output.mp3?Expires=1738208593&OSSAccessKeyId=TMP.3KhisLmHf1f1YvnxwxcRF3FSMJPNaD1RTyww1TAebKcp5Ymhm2R9bt53kzuWFD6vpkCt....'],  #上传到OSS的音频文件
            language_hints=['zh', 'en'],  # 使用中文语言提示,适用于东北方言
        )

        transcription_response = dashscope.audio.asr.Transcription.wait(
            task=task_response.output.task_id
        )

        if transcription_response.status_code == HTTPStatus.OK:
            for transcription in transcription_response.output['results']:
                url = transcription['transcription_url']
                result = json.loads(request.urlopen(url).read().decode('utf8'))
                self.transcription_text = result['transcripts'][0]['text']
                # 正则模式
                pattern = r"<\|Speech\|>(.*?)<\|\/Speech\|>" 
                self.transcription_text_matches = re.findall(pattern, self.transcription_text)
                self.transcription_text_final = "\n".join(self.transcription_text_matches)
                self.text_box.delete(1.0, tk.END)
                self.text_box.insert(tk.END, "识别内容如下:\n")
                self.text_box.insert(tk.END, self.transcription_text_final)
            messagebox.showinfo("提示", "transcription done")
        else:
            messagebox.showerror("错误", f"Error: {transcription_response.output.message}")
    except Exception as e:
        messagebox.showerror("错误", f"发生错误: {e}")

在语音识别逻辑中,我们调用了阿里云百炼大模型的异步语音识别API,并等待任务完成。识别结果通过正则表达式提取并显示在文本框中。特别地,我们使用了中文语言提示(language_hints=['zh']),以更好地支持东北方言的识别。

4.3 文本保存逻辑
def save_transcription(self):
    if not self.transcription_text_final:
        messagebox.showwarning("警告", "没有可保存的识别内容")
        return

    file_path = filedialog.asksaveasfilename(
        defaultextension=".txt",
        filetypes=[("Text files", "*.txt"), ("All files", "*.*")]
    )
    if file_path:
        with open(file_path, "w", encoding="utf-8") as file:
            file.write("识别内容如下:\n")
            file.write(self.transcription_text_final)
        messagebox.showinfo("提示", "保存成功")

在文本保存逻辑中,我们通过文件对话框让用户选择保存路径,并将识别结果写入指定的文本文件中。

运行结果:

截屏2025-01-30 11.37.13

5.使用说明

5.1 安装依赖

在运行代码之前,需要安装以下Python库:

pip install dashscope
pip install tkinter
5.2 启动工具

运行代码后,工具会启动一个图形用户界面。用户可以通过点击“会议记录语音识别”按钮进行东北方言会议记录音频文件的语音识别,并通过点击“保存识别内容到文本”按钮将识别结果保存到本地文件中。

6.遇到的问题及解决方案

在开发过程中,我们遇到了一些问题,例如网络连接问题导致语音文件无法正确解析。如果用户遇到类似问题,建议检查以下几点:

• 确保语音文件的URL链接是有效的,并且服务器能够正常访问。

• 检查网络连接是否正常,适当重试可能解决问题。

• 如果问题仍然存在,可以尝试更换语音文件或联系技术支持。

7.结论

本文介绍了一个基于Python和阿里云百炼大模型的语音识别与文本保存工具的开发过程。通过Tkinter实现的图形用户界面,用户可以方便地进行东北方言会议记录音频文件的语音识别和文本保存操作。该工具在会议记录、语音笔记等场景中具有较高的实用价值。未来,我们可以进一步优化工具的功能,例如支持更多语音文件格式、提高识别精度等,以满足更多用户的需求。

欢迎点赞、关注、收藏、转发!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2289711.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

GIS与相关专业软件汇总

闲来无事突然想整理一下看看 GIS及相关领域 究竟有多少软件或者工具包等。 我询问了几个AI工具并汇总了一个软件汇总&#xff0c;不搜不知道&#xff0c;一搜吓一跳&#xff0c;搜索出来了大量的软件&#xff0c;大部分软件或者工具包都没有见过&#xff0c;不知大家还有没有要…

飞书项目流程入门指导手册

飞书项目流程入门指导手册 参考资料准备工作新建空间国际化配置新建工作项字段管理新建字段对接标识授权角色 流程管理基础说明流程节点配置流程节点的布局配置页面上布局按钮布局配置 流程节点驳回流程图展示自动化字段修改 局限性 参考资料 飞书官方参考文档&#xff1a;飞书…

Android学习制作app(ESP8266-01S连接-简单制作)

一、理论 部分理论见arduino学习-CSDN博客和Android Studio安装配置_android studio gradle 配置-CSDN博客 以下直接上代码和效果视频&#xff0c;esp01S的收发硬件代码目前没有分享&#xff0c;但是可以通过另一个手机网络调试助手进行模拟。也可以直接根据我的代码进行改动…

如何使用SliverList组件

文章目录 1 概念介绍2 使用方法3 示例代码 我们在上一章回中介绍了沉浸式状态栏相关的内容&#xff0c;本章回中将介绍SliverList组件.闲话休提&#xff0c;让我们一起Talk Flutter吧。 1 概念介绍 我们在这里介绍的SliverList组件是一种列表类组件&#xff0c;类似我们之前介…

单细胞分析基础-第一节 数据质控、降维聚类

scRNA_pipeline\1.Seurat 生物技能树 可进官网查询 添加链接描述 分析流程 准备:R包安装 options("repos"="https://mirrors.ustc.edu.cn/CRAN/") if(!require("BiocManager")) install.packages("BiocManager",update = F,ask =…

HTML<hgroup>标签

例子&#xff1a; 使用hgroup元素标记标题和段落是相关的&#xff1a; <hgroup> <h2>Norway</h2> <p>The land with the midnight sun.</p> </hgroup> 定义和用法&#xff1a; 标签<hgroup>用于包围标题和一个或多个<p&g…

【已解决】黑马点评项目Redis版本替换过程的数据迁移

黑马点评项目Redis版本替换过程的数据迁移 【哭哭哭】附近商户中需要用到的GEO功能只在Redis 6.2以上版本生效 如果用的是老版本&#xff0c;美食/KTV的主页能正常返回&#xff0c;但无法显示内容 上次好不容易升到了5.0以上版本&#xff0c;现在又用不了了 Redis 6.2的windo…

mybatis辅助配置

驼峰映射 sql里面定义字段通常是使用下划线定义 比如dept_id 而我们的后端属性通常就是驼峰命名 deptId 所以这两匹配进行自动赋值就比较麻烦 可以使用 select dept_id as deptId 来解决&#xff08;起别名&#xff09; 也可以用mybatis的辅助配置解决 第三种就是推荐的在spr…

基于YOLO11的肺结节检测系统

基于YOLO11的肺结节检测系统 (价格90) LUNA16数据集 数据一共 1186张 按照8&#xff1a;1&#xff1a;1随机划分训练集&#xff08;948张&#xff09;、验证集&#xff08;118张&#xff09;与测试集&#xff08;120张&#xff09; 包含 nodule 肺结节 1种…

C#面向对象(继承)

1.什么是继承 在 C# 编程语言中&#xff0c;继承是一个核心概念&#xff0c;它允许一个类&#xff08;称为派生类&#xff09;继承另一个类&#xff08;称为基类&#xff09;的成员&#xff0c;如方法、属性和其他成员。继承机制使得代码重用成为可能&#xff0c;简化了应用程…

Qt事件处理:理解处理器、过滤器与事件系统

1. 事件 事件 是一个描述应用程序中、发生的某些事情的对象。 在 Qt 中&#xff0c;所有事件都继承自 QEvent &#xff0c;并且每个事件都有特定的标识符&#xff0c;如&#xff1a;Qt::MouseButtonPress 代表鼠标按下事件。 每个事件对象包含该事件的所有相关信息&#xff…

为大模型提供webui界面的利器:Open WebUI 完全本地离线部署deepseek r1

为大模型提供webui界面的利器&#xff1a;Open WebUI Open WebUI的官网&#xff1a;&#x1f3e1; Home | Open WebUI 开源代码&#xff1a;WeTab 新标签页 Open WebUI是一个可扩展、功能丰富、用户友好的自托管AI平台&#xff0c;旨在完全离线运行。它支持各种LLM运行程序&am…

17.1 图像操作

版权声明&#xff1a;本文为博主原创文章&#xff0c;转载请在显著位置标明本文出处以及作者网名&#xff0c;未经作者允许不得用于商业目的。 17.1.1 Image类 Image类为源自 Bitmap 和 Metafile 的类提供功能的抽象基类。 Image的属性大多数是只读的&#xff1a; FrameDim…

软件工程概论试题五

一、多选 1.好的软件的基本属性包括()。 A. 效率 B. 可依赖性和信息安全性 C. 可维护性 D.可接受性 正答&#xff1a;ABCD 2.软件工程的三要素是什么()? A. 结构化 B. 工具 C.面向对象 D.数据流! E.方法 F.过程 正答&#xff1a;BEF 3.下面中英文术语对照哪些是正确的、且是属…

深入解析“legit”的地道用法——从俚语到正式表达:Sam Altman用来形容DeepSeek: legit invigorating(真的令人振奋)

深入解析“legit”的地道用法——从俚语到正式表达 一、引言 在社交媒体、科技圈甚至日常对话中&#xff0c;我们经常会看到或听到“legit”这个词。比如最近 Sam Altman 在 X&#xff08;原 Twitter&#xff09;上发的一条帖子中写道&#xff1a; we will obviously deliver …

行业规范要当作业务实体画出来吗

第五元素 总觉得这些没有逻辑的实体&#xff0c;在绘制的时候不应该绘出来&#xff0c;他们没有责任啊。 比如以下:查阅规范 感觉不太对 UMLChina潘加宇 你这个规范是一个电脑系统还是一本书 第五元素 是书 UMLChina潘加宇 书没有智能&#xff0c;唯一暴露的接口是“翻”…

Cubemx文件系统挂载多设备

cubumx版本&#xff1a;6.13.0 芯片&#xff1a;STM32F407VET6 在上一篇文章中介绍了Cubemx的FATFS和SD卡的配置&#xff0c;由于SD卡使用的是SDIO通讯&#xff0c;因此具体驱动不需要自己实现&#xff0c;Cubemx中就可以直接配置然后生成SDIO的驱动&#xff0c;并将SD卡驱动和…

[Linux]从零开始的STM32MP157 U-Boot移植

一、前言 在上一次教程中&#xff0c;我们了解了STM32MP157的启动流程与安全启动机制。我们还将FSBL的相关代码移植成功了。大家还记得FSBL的下一个步骤是什么吗&#xff1f;没错&#xff0c;就是SSBL&#xff0c;而且常见的我们将SSBL作为存放U-Boot的地方。所以本次教程&…

前端 | 深入理解Promise

1. 引言 JavaScript 是一种单线程语言&#xff0c;这意味着它一次仅能执行一个任务。为了处理异步操作&#xff0c;JavaScript 提供了回调函数&#xff0c;但是随着项目处理并发任务的增加&#xff0c;回调地狱 (Callback Hell) 使异步代码很难维护。为此&#xff0c;ES6带来了…

【数据结构】_链表经典算法OJ:合并两个有序数组

目录 1. 题目描述及链接 2. 解题思路 3. 程序 3.1 第一版 3.2 第二版 1. 题目描述及链接 题目链接&#xff1a;21. 合并两个有序链表 - 力扣&#xff08;LeetCode&#xff09; 题目描述&#xff1a; 将两个升序链表合并为一个新的 升序 链表并返回。 新链表是通过拼接给…