自学内容网 自学内容网

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

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数据。


原文地址:https://blog.csdn.net/qq_41791705/article/details/143677202

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!