from aip import AipSpeech import time,os APP_ID = '15422825' APP_KEY = 'DhXGtWHYMujMVZZGRI3a7rzb' SECRET_KEY = 'PbyUvTL31fImGthOOIP5ZbbtEOGwGOoT' client = AipSpeech(APP_ID, APP_KEY, SECRET_KEY) # 1.将wma格式文件转为pcm格式文件 def get_file_content(filePath): # 执行cmd命令os.system() os.system(f"ffmpeg -y -i {filePath} -acodec pcm_s16le -f s16le -ac 1 -ar 16000 {filePath}.pcm") with open(f"{filePath}.pcm", 'rb') as fp: return fp.read() # 2.将音频转成文字 def audio2text(filepath): # 识别本地文件 res = client.asr(get_file_content(filepath), 'pcm', 16000, { # 不填写lan参数生效,都不填写,默认1537(普通话 输入法模型),dev_pid参数见本节开头的表格 'dev_pid': 1536, }) # res.get("result")[0]) # 将录音转成文字,然后返回 return res.get("result")[0] # 3.将文字转成音频 def text2audio(text): # 给合成的音频命名 filename = f"{time.time()}.mp3" # 合成语音结果 result = client.synthesis(text, 'zh', 1, { 'vol': 5, "spd": 3, "pit": 7, "per": 4 }) # 识别正确返回语音二进制 错误则返回dict 参照下面错误码 if not isinstance(result, dict): with open(filename, 'wb') as f: f.write(result) return filename # 调用方法audio2text,将语音转成文字 text = audio2text("media/weather.wma") # 调用方法text2audio,将文字转成语音 # 结果赋值给filename filename = text2audio(text) # 调用os.system()执行合成的音频文件 os.system(filename)
红框内的文件为实验所需要的: