使用AudioSegment库提取音轨,如果每隔一定时间对音频的dBFS进行采样,如果小于阈值(一般认为小于-50为无声),当然还有负无穷大的现象需要判断。defaudio_silence_check_service(video_location):download_video_to_local(location=video_location,video_filename=video_filename)extract_audio_result=extract_audio_from_video(video_filename,audio_filename)is_exist_silence=Falsesilence_desc=''silence_detect_result=[]如果extract_audio_result:silence_detect_result=silence_detect(audio_filenameinsilence_getredetectsultinsilence_chunk)('silence_result'):ifint(silence_chunk[1])-int(silence_chunk[0])>int(int(silence_detect_result.get('audio_duration'))/3):silence_desc+=f'{silence_chunk[0]}~{silence_chunk[1]},'ifsilence_desc:silence_desc+='msexistssilence'is_exist_silence=Trueelse:is_exist_silence=Truesilence_desc=f'{qipuid}没有获取音轨'logger_error(silence_desc)返回is_exist_silence,silence_desc,silence_detect_resultdefsilence_detect(audio_file,silence_threshold=-50,chunk_size=10):sound=AudioSegment.from_file(audio_file,format="wav")assertchunk_size>0silence_chunks=list()silence_chunks_start_ms=-1sound_duration=len(sound)forcurrent_msinrange(0,sound_duration,chunk_size):current_ms_chunks_dBFS=sound[current_ms:current_ms+chunk_size].dBFSifcurrent_ms_chunks_dBFS
