first commit

This commit is contained in:
Serge Zaigraeff
2025-03-01 19:24:03 +03:00
commit 3f8b28730f
8 changed files with 1215 additions and 0 deletions
+115
View File
@@ -0,0 +1,115 @@
#!/usr/bin/env python3
"""
Клиент для взаимодействия с сервисом распознавания речи через REST API.
"""
import argparse
import json
import os
import requests
import sys
class TranscribeClient:
"""
Класс для взаимодействия с сервисом распознавания речи через REST API.
"""
def __init__(self, server_url="http://localhost:5000"):
"""
Инициализация клиента.
Args:
server_url: URL сервера распознавания.
"""
self.server_url = server_url
def health(self):
"""
Проверка статуса сервиса.
Returns:
Словарь с информацией о статусе сервиса или None при ошибке.
"""
endpoint = f"{self.server_url}/health"
try:
response = requests.get(endpoint, timeout=10)
if response.status_code == 200:
return response.json()
else:
print(f"Ошибка health check: {response.status_code}")
return None
except requests.exceptions.RequestException as e:
print(f"Ошибка при выполнении health check: {e}")
return None
def transcribe(self, file_path):
"""
Отправка файла на транскрибацию.
Args:
file_path: Путь к аудиофайлу.
Returns:
Словарь с результатом транскрибации или None при ошибке.
"""
# Проверка существования файла
if not os.path.exists(file_path):
print(f"Ошибка: Файл '{file_path}' не найден")
return None
# Формирование абсолютного пути к файлу
absolute_path = os.path.abspath(file_path)
# Подготовка данных для запроса
payload = {"file_path": absolute_path}
# Запрос на транскрибацию
endpoint = f"{self.server_url}/local/transcriptions"
try:
# Отправка запроса
response = requests.post(endpoint, json=payload, timeout=600) # Таймаут 10 минут
# Обработка ответа
if response.status_code == 200:
result = response.json()
return result
else:
print(f"Ошибка запроса: {response.status_code}")
if response.headers.get('content-type') == 'application/json':
print(json.dumps(response.json(), indent=2, ensure_ascii=False))
else:
print(response.text)
return None
except requests.exceptions.RequestException as e:
print(f"Ошибка при отправке запроса: {e}")
return None
def main():
"""Основная функция клиента."""
parser = argparse.ArgumentParser(description="Клиент для сервиса распознавания речи")
parser.add_argument("file_path", help="Путь к аудиофайлу для транскрибации")
parser.add_argument("--server", help="URL сервера распознавания", default="http://localhost:5042")
args = parser.parse_args()
# Создание экземпляра клиента
client = TranscribeClient(args.server)
# Запуск транскрибации
result = client.transcribe(args.file_path)
if result:
print(json.dumps(result, indent=2, ensure_ascii=False))
return result
else:
print("Что-то пошло не так 🤔")
return None
if __name__ == "__main__":
main()