maolin.liu commited on
Commit ·
2278032
1
Parent(s): 705afb7
[feature]Support choose audio file path.
Browse files
server.py
CHANGED
|
@@ -2,6 +2,7 @@ import base64
|
|
| 2 |
import io
|
| 3 |
import logging
|
| 4 |
import os
|
|
|
|
| 5 |
import typing
|
| 6 |
from contextlib import asynccontextmanager
|
| 7 |
|
|
@@ -10,7 +11,7 @@ from fastapi import FastAPI, Request, UploadFile, File, WebSocket
|
|
| 10 |
from fastapi.middleware.cors import CORSMiddleware
|
| 11 |
from fastapi.middleware.gzip import GZipMiddleware
|
| 12 |
from faster_whisper import WhisperModel
|
| 13 |
-
from pydantic import BaseModel, Field, ValidationError
|
| 14 |
from starlette.websockets import WebSocketState
|
| 15 |
|
| 16 |
|
|
@@ -69,6 +70,15 @@ class TranscribeRequestParams(BaseModel):
|
|
| 69 |
uuid: str = Field(title='Request Unique Id.')
|
| 70 |
audio_file: str
|
| 71 |
language: typing.Literal['en', 'zh',]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 72 |
|
| 73 |
|
| 74 |
@app.post('/transcribe')
|
|
@@ -77,7 +87,9 @@ async def transcribe_api(
|
|
| 77 |
obj: TranscribeRequestParams
|
| 78 |
):
|
| 79 |
try:
|
| 80 |
-
audio_file =
|
|
|
|
|
|
|
| 81 |
|
| 82 |
segments, _ = asr_model.transcribe(audio_file, language=obj.language)
|
| 83 |
|
|
@@ -153,7 +165,10 @@ async def transcribe_ws_api(
|
|
| 153 |
continue
|
| 154 |
|
| 155 |
try:
|
| 156 |
-
|
|
|
|
|
|
|
|
|
|
| 157 |
|
| 158 |
segments, _ = asr_model.transcribe(audio_file, language=form.language)
|
| 159 |
|
|
|
|
| 2 |
import io
|
| 3 |
import logging
|
| 4 |
import os
|
| 5 |
+
import pathlib
|
| 6 |
import typing
|
| 7 |
from contextlib import asynccontextmanager
|
| 8 |
|
|
|
|
| 11 |
from fastapi.middleware.cors import CORSMiddleware
|
| 12 |
from fastapi.middleware.gzip import GZipMiddleware
|
| 13 |
from faster_whisper import WhisperModel
|
| 14 |
+
from pydantic import BaseModel, Field, ValidationError, model_validator, ValidationInfo
|
| 15 |
from starlette.websockets import WebSocketState
|
| 16 |
|
| 17 |
|
|
|
|
| 70 |
uuid: str = Field(title='Request Unique Id.')
|
| 71 |
audio_file: str
|
| 72 |
language: typing.Literal['en', 'zh',]
|
| 73 |
+
using_file_content: bool
|
| 74 |
+
|
| 75 |
+
@model_validator(mode='after')
|
| 76 |
+
def check_audio_file(self):
|
| 77 |
+
if self.using_file_content:
|
| 78 |
+
return self
|
| 79 |
+
|
| 80 |
+
if not pathlib.Path(self.audio_file).exists():
|
| 81 |
+
raise FileNotFoundError(f'Audio file not exists.')
|
| 82 |
|
| 83 |
|
| 84 |
@app.post('/transcribe')
|
|
|
|
| 87 |
obj: TranscribeRequestParams
|
| 88 |
):
|
| 89 |
try:
|
| 90 |
+
audio_file = obj.audio_file
|
| 91 |
+
if obj.using_file_content:
|
| 92 |
+
audio_file = io.BytesIO(base64.b64decode(obj.audio_file))
|
| 93 |
|
| 94 |
segments, _ = asr_model.transcribe(audio_file, language=obj.language)
|
| 95 |
|
|
|
|
| 165 |
continue
|
| 166 |
|
| 167 |
try:
|
| 168 |
+
|
| 169 |
+
audio_file = form.audio_file
|
| 170 |
+
if form.using_file_content:
|
| 171 |
+
audio_file = io.BytesIO(base64.b64decode(form.audio_file))
|
| 172 |
|
| 173 |
segments, _ = asr_model.transcribe(audio_file, language=form.language)
|
| 174 |
|