影刀RPA 音频文件批量处理格式转换与信息提取作者林焱虽然RPA主要是搞数据自动化但偶尔也会遇到音频处理需求——比如把录音转文字做会议纪要、批量转换音频格式、提取音频时长等。Python在这方面生态很好。获取音频信息# pip install mutagenfrommutagen.mp3importMP3frommutagen.waveimportWAVEimportosdefget_audio_info(filepath):extos.path.splitext(filepath)[1].lower()ifext.mp3:audioMP3(filepath)durationaudio.info.length# 秒bitrateaudio.info.bitrate# bpselifext.wav:audioWAVE(filepath)durationaudio.info.length bitrateNoneelse:returnNone[video(video-Vx29Bs9N-1785000166595)(type-csdn)(url-https://live.csdn.net/v/embed/525010)(image-https://v-![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/e11d1b30b13b4ff69d1f045d82415e93.png#pic_center)blog.csdnimg.cn/asset/f4faa587144cb7070f19e8b36813806b/cover/Cover0.jpg)(title-店群矩阵自动化突破运营极限)]return{文件名:os.path.basename(filepath),时长(秒):round(duration,1),时长(分钟):round(duration/60,1),比特率:bitrate,大小(KB):round(os.path.getsize(filepath)/1024,1)}# 批量处理importglob filesglob.glob(D:/音频/*.mp3)forfinfiles:infoget_audio_info(f)ifinfo:print(f{info[文件名]}:{info[时长(分钟)]}分钟,{info[大小(KB)]}KB)音频格式转换MP3 → WAV# pip install pydub# 还需要安装ffmpeg: https://ffmpeg.org/download.htmlfrompydubimportAudioSegmentdefconvert_audio(input_path,output_formatwav):audioAudioSegment.from_file(input_path)output_pathos.path.splitext(input_path)[0]f.{output_format}audio.export(output_path,formatoutput_format)returnoutput_path# 批量转换formp3_fileinglob.glob(D:/音频/*.mp3):wav_fileconvert_audio(mp3_file,wav)print(f已转换:{mp3_file}→{wav_file})语音转文字百度APIimportrequestsimportbase64importjsondefspeech_to_text(audio_path):使用百度语音识别每天5万次免费调用# 获取token同前文OCR获取token的方式token_urlhttps://aip.baidubce.com/oauth/2.0/tokentoken_params{grant_type:client_credentials,client_id:你的API Key,client_secret:你的Secret Key}token_resprequests.post(token_url,datatoken_params)access_tokentoken_resp.json()[access_token]# 读取音频文件withopen(audio_path,rb)asf:audio_base64base64.b64encode(f.read()).decode()# 调用识别接口api_urlhttps://vop.baidu.com/server_api![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/7edcd4fb7ca148dfb421c6f10b0ee348.png#pic_center)data{format:wav,rate:16000,# 采样率channel:1,token:access_token,speech:audio_base64,len:os.path.getsize(audio_path)}resprequests.post(api_url,jsondata)resultresp.json()ifresult.get(err_no)0:returnresult[result][0]# 识别出的文字else:returnf识别失败:{result.get(err_msg)}textspeech_to_text(meeting.wav)print(f识别结果:{text})踩坑实录坑1ffmpeg需要单独安装pydub依赖ffmpeg做实际的格式转换。在Windows上需要下载ffmpeg.exe并添加到PATH环境变量。很多新手装了pydub就以为能用结果报错找不到ffmpeg。坑2音频采样率不匹配百度语音识别要求特定的音频格式PCM、16kHz、单声道。大部分录音是44.1kHz的MP3需要先转换audioAudioSegment.from_file(recording.mp3)audioaudio.set_frame_rate(16000).set_channels(1)audio.export(converted.wav,formatwav)[video(video-aKDVNJhp-1785000173176)(type-csdn)(url-https://live.csdn.net/v/embed/524992)(image-https://v-blog.csdnimg.cn/asset/b59aed2f01d4fe8583467562aaf4dcfd/cover/Cover0.jpg)(title-temu店群自动化报活动案例)]坑3音频文件太大无法一次上传百度接口限制音频时长不超过60秒、文件大小不超过10MB。长的音频需要先切分frompydubimportAudioSegment audioAudioSegment.from_file(long_recording.mp3)chunk_length_ms60000# 60秒一块chunks[audio[i:ichunk_length_ms]foriinrange(0,len(audio),chunk_length_ms)]fori,chunkinenumerate(chunks):chunk.export(fchunk_{i}.wav,formatwav)textspeech_to_text(fchunk_{i}.wav)print(f第{i}段:{text})坑4中文方言和口音识别不准百度的通用模型对普通话识别较好95%但对带口音的普通话、方言、中英混杂识别率下降明显。这类场景建议用人声转写服务如讯飞听见、腾讯云语音识别。写在最后音频处理在RPA中不是主流场景但遇到了就很麻烦。pydub做格式转换百试百灵百度API做语音识别基本够用。影刀负责流程触发检测到新音频文件 → 调用Python处理 → 文字结果写入文档就是一个完整的会议纪要自动化流程。