본문 바로가기

Python

(11)
간단한 웹소켓 부하 테스트 비교 FastAPI vs Golang 서론현재 근무 중인 회사에서 수행하는 프로젝트로 LAN을 구축한 후 셀러론 N4505 CPU로 구동되는 서버로부터 클라이언트와 웹소켓 통신을 하는 서비스가 있다. 이 서비스의 가장 중요한 목표는 서버에서 브로드캐스트를 진행할 때 모든 클라이언트가 싱크를 맞춰 "동시에" 반응해야 한다는 것이다. 이를 위해 FastAPI를 사용해 웹소켓 연결을 관리했었는데 문제는 필드 테스트에서 싱크가 깨지는 것으로 체감이 되었기 때문이다. 환경이 제한적이라 현장에서는 모니터링을 제대로 할 수 없었는데, 혹시 파이썬 자체의 한계일까 싶어서 go와 비교를 하기로 했다.스크립트 준비웹서버 부하를 위해선 많은 도구들이 제공되고 있지만 이 포스트에서는 도구 없이 스크립팅으로 측정을 해볼 것이다.FastAPI 코드먼저 이 포스트의 ..
[FastAPI] 웹소켓을 다룰 때 주의점 - 공식 예제 개선하기 이 포스트에서는 FastAPI 공식 문서에서 보여주는 웹소켓 연결 예제를 보고 이를 개선하도록 한다. 이 세상 어딘가에서는 분명 FastAPI로 여러 클라이언트로부터 웹소켓 연결을 하려는 경우가 있을 것이다. FastAPI 공식 문서에서는 웹소켓 연결 방법에 대해 이런 예제가 우릴 반겨준다.  그리고 여러 웹소켓 연결을 관리하기 위해서 아래와 같이 웹소켓 연결을 모아두는 ConnectionManager를 정의하고 있다.  하지만 이 코드에는 여러 문제가 있다. 문제가 있는 코드를 공식 문서에 걸어놓다니 참 야속할 따름이다. 어떤 문제가 있는지 보고 개선해 보도록 하자.Race Condition이 발생함내가 생각하는 ConnectionManager의 가장 큰 문제점이다. 클래스에서는 active_conne..
[Python] 외부 프로세스 실행시키기 파이썬의 subprocess 모듈을 활용하면 파이썬 코드가 실행되는 런타임에서 외부 프로세스를 실행할 수 있다.subprocess.Popen파이썬으로 실행 파일을 실행시키는 방법은 subprocess.run()이나 os.system()과 같이 여러 가지가 있는데, subprocess.run()은 이미 실행 중인 파일을 끝낼 때까지 기다리는 특징으로 인해 여러 프로세스를 비동기로 실행하는 목적에 적합하지 않고, os.system()은 공식문서에서 프로세스 실행 목적으로는 subprocess를 더 추천한다.  여러 개의 외부 프로세스를 비동기적으로 실행하기 위해서는 subprocess.Popen이 추천된다. import subprocesssubprocess.Popen("실행파일 경로", "실행파일 옵션") ..
F5-TTS로 초간단&초경량 TTS 개발하기 이 포스트에서는 2024년 10월 공개된 F5-TTS를 이용하여 가정용 컴퓨터에서도 손쉽게 구동할 수 있는 TTS 프로그램을 개발해 본다.F5-TTSF5-TTS는 E2-TTS에서 속도를 개선한 모델이라고 한다. 모델에 대한 논문과 코드 리포를 공개하고 있고, 영어와 중국어가 pretrained 된 상태이기 때문에 영어와 중국어 목소리 생성에 바로 이용할 수 있다. 또한 이 모델은 GPU 자원을 상당히 적게 쓴다.  모델을 불러올 때 최대 VRAM 3gb를 잡아먹는데 대부분의 컴퓨터에서는 문제가 없을 수준이다. 논문 - https://arxiv.org/pdf/2410.06885 코드 - https://github.com/SWivid/F5-TTS GitHub - SWivid/F5-TTS: Official c..
나만의 STT 서버 만들기 feat. OpenAI Whisper 이 포스트에서는 OpenAI에서 제공하는 STT 모델인 whisper를 사용하여 FastAPI로 작성된 서버로 오디오 파일을 받아 STT 작업을 수행해 본다. Whisper Whisper는 Chat-GPT를 만든 OpenAI에서 오픈소스로 공개하는 STT 라이브러리이다. 오픈소스지만 OpenAI에서 만들어서 그런지 상당히 훌륭한 성능을 보여주고 있다.  https://github.com/rtzr/Awesome-Korean-Speech-Recognition GitHub - rtzr/Awesome-Korean-Speech-Recognition: 한국어 음성인식 STT API 리스트. 각 성능 벤치마크.한국어 음성인식 STT API 리스트. 각 성능 벤치마크. Contribute to rtzr/Awesome-..