如何在Flask中无需保存文件,用pydub处理音频并通过Vosk转文字
无需保存文件实现Flask音频转文本
当然可以实现不将音频文件保存到服务器的需求,直接在内存中完成音频格式转换与语音识别即可。下面是修改后的代码:
from flask import Flask, request, json from vosk import Model, KaldiRecognizer, SetLogLevel from pydub import AudioSegment app = Flask(__name__) @app.route('/', methods=['POST']) def process_audio(): # 获取上传的音频文件 file = request.files['111'] # 直接从内存加载音频,无需保存到磁盘 song = AudioSegment.from_file(file) SetLogLevel(0) FRAME_RATE = 16000 CHANNELS = 1 model = Model("model") rec = KaldiRecognizer(model, FRAME_RATE) rec.SetWords(True) # 在内存中调整音频参数,无需导出文件 processed_audio = song.set_channels(CHANNELS).set_frame_rate(FRAME_RATE) # 直接传入内存中的音频原始数据进行识别 rec.AcceptWaveform(processed_audio.raw_data) result = rec.Result() text = json.loads(result)["text"] return text
关键改动说明:
- 移除了磁盘写入与重新读取的步骤,全程在内存中处理音频数据
- 直接对从请求中加载的
AudioSegment对象调整声道数和采样率,无需导出文件 - 直接传入内存中的音频原始字节数据给Vosk识别,省略文件IO操作
内容的提问来源于stack exchange,提问作者Xenia
相关产品推荐
相关产品推荐

