importbase64importjsonimportosimporttimeimportshutilimportrequestsclassBaiduVoiceToTxt():#初始化函数
def __init__(self):#定义要进行切割的pcm文件的位置。speech-vad-demo固定好的,没的选
self.pcm_path = ".\\speech-vad-demo\\pcm\\16k_1.pcm"
#定义pcm文件被切割后,分割成的文件输出到的目录。speech-vad-demo固定好的,没的选
self.output_pcm_path = ".\\speech-vad-demo\\output_pcm\\"
#百度AI接口只接受pcm格式,所以需要转换格式
#此函数用于将要识别的mp3文件转换成pcm格式,并输出为.\speech-vad-demo\pcm\16k_1.pcm
defchange_file_format(self,filepath):
file_name=filepath#如果.\speech-vad-demo\pcm\16k_1.pcm文件已存在,则先将其删除
if os.path.isfile(f"{self.pcm_path}"):
os.remove(f"{self.pcm_path}")#调用系统命令,将文件转换成pcm格式,并输出为.\speech-vad-demo\pcm\16k_1.pcm
change_file_format_command = f".\\ffmpeg\\bin\\ffmpeg.exe -y -i {file_name} -acodec pcm_s16le -f s16le -ac 1 -ar 16000 {self.pcm_path}"os.system(change_file_format_command)#百度AI接口最长只接受60秒的音视,所以需要切割
#此函数用于将.\speech-vad-demo\pcm\16k_1.pcm切割
defdevide_video(self):#如果切割输出目录.\speech-vad-demo\output_pcm\已存在,那其中很可能已有文件,先将其清空
#清空目录的文件是先删除,再创建
if os.path.isdir(f"{self.output_pcm_path}"):
shutil.rmtree(f"{self.output_pcm_path}")
time.sleep(1)
os.mkdir(f"{self.output_pcm_path}")#vad-demo.exe使用相对路径.\pcm和.\output_pcm,所以先要将当前工作目录切换到.\speech-vad-demo下不然vad-demo.exe找不到文件
os.chdir(".\\speech-vad-demo\\")#直接执行.\vad-demo.exe,其默认会将.\pcm\16k_1.pcm文件切割并输出到.\outpu