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

[AIGC] Python批量处理Excel中的ASR语音文本数据

文章目录

  • Python批量处理Excel中的ASR语音文本数据
    • 背景介绍
    • 技术方案
      • 1. 环境准备
      • 2. 核心功能实现
        • 2.1 ASR文本提取
        • 2.2 URL处理
        • 2.3 Excel批量处理
    • 异常处理
    • 使用方法
    • 注意事项
    • 总结

Python批量处理Excel中的ASR语音文本数据

背景介绍

在实际工作中,我们经常需要处理大量的语音识别(ASR)数据。本文将介绍如何使用Python批量处理Excel中的ASR数据,包括URL解析、API调用以及结果保存等功能。

技术方案

1. 环境准备

首先需要安装以下Python包:

pip install pandas requests

2. 核心功能实现

2.1 ASR文本提取

在这里插入图片描述

def extract_conversation(asr_data):
    try:
        asr_result = asr_data.get('data', {}).get('asrResult', {}).get('asrResult', [])
        conversation_text = ""
        
        for item in asr_result:
            role = item.get('role', '')
            words = item.get('words', '')
            
            if role and words:
                conversation_text += f"{role}{words}\n"
        
        return conversation_text
    except Exception as e:
        print(f"处理数据时出错: {str(e)}")
        return ""

这个函数负责从API返回的JSON数据中提取对话内容,并按照"角色:内容"的格式进行整理。

2.2 URL处理
def process_single_url(url):
    try:
        url = url.replace('@', '')
        parsed = urlparse(url)
        query_params = parse_qs(parsed.query)
        record_id = query_params.get('id', [''])[0]
        
        if not record_id:
            return None, None
            
        new_url = f"https://xx.com/v1/xx?recordId={record_id}"
        
        response = requests.get(new_url)
        if response.status_code == 200:
            json_data = response.json()
            conversation = extract_conversation(json_data)
            return new_url, conversation
        else:
            print(f"请求失败,状态码: {response.status_code}")
            return new_url, None
            
    except Exception as e:
        print(f"处理URL时出错: {str(e)}")
        return None, None

这个函数处理单个URL,主要完成以下工作:

  • 清理URL中的特殊字符
  • 解析URL获取记录ID
  • 调用API获取ASR文本
  • 提取对话内容
2.3 Excel批量处理
def process_excel_and_get_recordings(excel_file):
    try:
        df = pd.read_excel(excel_file, sheet_name='Sheet2')
        url_column = df.iloc[:, 3]  
        
        new_urls = []
        conversations = []
        total = len(df)
        
        for index, url in enumerate(url_column, 1):
            new_url, conversation_text = process_single_url(url)
            new_urls.append(new_url)
            conversations.append(conversation_text)
            print(f"处理进度: {index}/{total}")
            
        df['new_url'] = new_urls
        df['conversation_text'] = conversations
        
        output_file = excel_file.replace('.xlsx', '_processed.xlsx')
        try:
            df.to_excel(output_file, index=False)
        except PermissionError:
            output_file = os.path.basename(excel_file).replace('.xlsx', '_processed.xlsx')
            df.to_excel(output_file, index=False)
            
    except Exception as e:
        print(f"处理Excel文件时出错: {str(e)}")
        raise

这个函数实现了批量处理的主要逻辑:

  • 读取Excel文件
  • 遍历处理每个URL
  • 保存处理结果到新的Excel文件

异常处理

代码中实现了多层异常处理机制:

  1. 单个URL处理失败不影响整体流程
  2. 文件保存权限问题的优雅降级处理
  3. 详细的错误信息记录

使用方法

if __name__ == "__main__":
    excel_file = 'D:\work\xx\方言.xlsx'  
    process_excel_and_get_recordings(excel_file)

注意事项

  1. 确保Excel文件中URL所在列的位置正确(当前代码中默认为第4列)
  2. 需要有足够的磁盘权限来保存结果文件
  3. API调用可能需要适当的访问权限和认证信息

总结

这个Python脚本提供了一个完整的解决方案,用于批量处理Excel中的ASR数据。


http://www.kler.cn/a/393173.html

相关文章:

  • 简单叙述 Spring Boot 启动过程
  • 软件测试:测试用例详解
  • ubuntu20.04 解决Pytorch默认安装CPU版本的问题
  • 大厂的 404 页面都长啥样?看看你都见过吗~~~
  • Python中异常处理小测验
  • MySQL系列之如何在Linux只安装客户端
  • vue项目多入口文件。vue.config.js如何修改配置
  • Python 操作 Excel 表格从简单到高级用法
  • C 语言 数组交换最小值和最大值
  • goframe开发一个企业网站 统一返回响应码 18
  • 2024-11-13 Unity Addressables2——寻址资源设置
  • 【vue2.0入门】vue基本语法
  • 【论文笔记】Prefix-Tuning: Optimizing Continuous Prompts for Generation
  • Spring框架之策略模式 (Strategy Pattern)
  • NoETL
  • 【网络安全】OSI网络安全体系结构
  • 接口自动化分支管理规范
  • Android音频架构
  • <websocket><PLC>使用js和html实现webscoket,与PLC进行socket通讯的实例
  • SPSS频率统计计算公式示例
  • 电子电气架构 ---车载以太网络环境下的安全威胁
  • 1. ShardingJDBC实际使用01
  • 详解机器学习经典模型(原理及应用)——DBSCAN
  • C++网络编程之SSL/TLS加密通信
  • turtlesim修改窗口大小;添加自己的小乌龟;
  • React Native 全栈开发实战班 - 列表与滚动视图