Код: Выделить всё
Error in recasepunc: None
Код: Выделить всё
processed_text = subprocess.check_output(
'python recasepunc/recasepunc.py predict recasepunc/checkpoint', shell=True, text=True, input=recognized_text)
Вот полный контекст кода приложения:
Код: Выделить всё
from vosk import Model, KaldiRecognizer, SetLogLevel
from pydub import AudioSegment
from flask import Flask, request, jsonify
import subprocess
import json
app = Flask(__name__)
@app.route('/', methods=['POST'])
def process_audio():
file = request.files.get('111')
if file:
try:
song = AudioSegment.from_file(file)
SetLogLevel(0)
FRAME_RATE = 16000
CHANNELS = 1
model = Model("model")
rec = KaldiRecognizer(model, FRAME_RATE)
rec.SetWords(True)
wavv = song.set_channels(CHANNELS)
wavv = song.set_frame_rate(FRAME_RATE)
rec.AcceptWaveform(wavv.raw_data)
result = rec.Result()
recognized_text = json.loads(result)["text"]
try:
processed_text = subprocess.check_output(
'python recasepunc/recasepunc.py predict recasepunc/checkpoint', shell=True, text=True, input=recognized_text)
except subprocess.CalledProcessError as e:
processed_text = f"Error in recasepunc: {e.stderr}"
return jsonify({
"recognized_text": recognized_text,
"processed_text": processed_text
})
except Exception as e:
return jsonify({"error": str(e)}), 500
else:
return jsonify({"error": "No audio file provided"}), 400
if __name__ == "__main__":
app.debug = True
app.run(host="0.0.0.0", port=5000)
- Я подтвердил, что команда работает непосредственно в терминале:
Он возвращает ожидаемый результат: «Привет, как дела?».
Код: Выделить всё
echo "hello how are you" | python recasepunc/recasepunc.py predict recasepunc/checkpoint
- Я попробовал использовать subprocess.check_output(), как показано, но на выходе отображается сообщение «Ошибка в recasepunc: нет», что не дает никакой полезной информации для устранения неполадок.
- Python 3.10
- vosk 0.3.45
- torch 2.2 .2
- трансформеры 4.39.3
Подробнее здесь: https://stackoverflow.com/questions/792 ... n-recasepu