文章目录
- 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文件
异常处理
代码中实现了多层异常处理机制:
- 单个URL处理失败不影响整体流程
- 文件保存权限问题的优雅降级处理
- 详细的错误信息记录
使用方法
if __name__ == "__main__":
excel_file = 'D:\work\xx\方言.xlsx'
process_excel_and_get_recordings(excel_file)
注意事项
- 确保Excel文件中URL所在列的位置正确(当前代码中默认为第4列)
- 需要有足够的磁盘权限来保存结果文件
- API调用可能需要适当的访问权限和认证信息
总结
这个Python脚本提供了一个完整的解决方案,用于批量处理Excel中的ASR数据。