Skip to content

Commit 2dc43de

Browse files
committed
add reload labels and fix bug
1 parent 70fd328 commit 2dc43de

File tree

3 files changed

+39
-16
lines changed

3 files changed

+39
-16
lines changed

src/audiokit/refinement/refinement.py

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -38,16 +38,22 @@ def _save_file(file_path: str, labels: dict[str, Labeling]):
3838
f.write(f"{value.source_file_path}|{value.language}|{value.text_content}\n")
3939

4040
def submit_text(self, source_file_path: str, language: str, text_content: str):
41+
"""submit text to refinements.list"""
4142
self.source_file_content[source_file_path] = Labeling(source_file_path, language, text_content)
4243
self._save_file(self.output_file_path, self.source_file_content)
4344

4445
def load_text(self) -> dict[str, Labeling]:
46+
"""load current source content from refinements.list"""
47+
self.source_file_content = self._load_file(self.output_file_path)
48+
return self.source_file_content
49+
50+
def reload_text(self):
51+
"""reload source file content from asr.list"""
4552
self.source_file_content = self._load_file(self.source_file_path)
53+
self._save_file(self.output_file_path, self.source_file_content)
4654
return self.source_file_content
4755

4856
def delete_text(self, source_file_path: str):
57+
"""delete source file content from refinements.list"""
4958
self.source_file_content.pop(source_file_path)
5059
self._save_file(self.output_file_path, self.source_file_content)
51-
52-
def save_file(self):
53-
self._save_file(self.output_file_path, self.source_file_content)

src/rest/rest.py

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,8 @@
2121
)
2222
from src.logger import logger
2323
from src.rest.types import TaskType, TaskCMD
24-
from src.service.audio import AudioUVR5Params, AudioSlicerParams, AudioASRParams, AudioService, AudioDenoiseParams, AudioRefinementSubmitParams, AudioRefinementDeleteParams
24+
from src.service.audio import AudioUVR5Params, AudioSlicerParams, AudioASRParams, AudioService, AudioDenoiseParams, AudioRefinementSubmitParams, AudioRefinementDeleteParams, \
25+
AudioRefinementReloadParams
2526
from src.service.file import FileService
2627
from src.service.namespace import NamespaceService
2728
from src.service.normalize import NormalizeParams
@@ -60,6 +61,7 @@ async def serve_asset(self, file_path: str) -> Response:
6061
# Return the file
6162
return FileResponse(asset_path)
6263

64+
6365
class FrontendIndexAPI:
6466
"""Class to handle serving index.html for the root path."""
6567

@@ -72,7 +74,7 @@ def _register_routes(self):
7274
"""Register routes to serve index.html."""
7375
# Serve index.html for any route that is not `/assets`
7476
self.router.add_api_route("/", self.serve_index, methods=["GET"])
75-
#self.router.add_api_route("/{path:path}", self.serve_index, methods=["GET"])
77+
# self.router.add_api_route("/{path:path}", self.serve_index, methods=["GET"])
7678

7779
async def serve_index(self, path: str = "") -> Response:
7880
"""Serve index.html for any request (except /assets)."""
@@ -469,6 +471,7 @@ def _register_routes(self):
469471
self.router.get("/audio/refinement")(self.list_audio_refinement)
470472
self.router.post("/audio/refinement")(self.update_audio_refinement)
471473
self.router.delete("/audio/refinement")(self.delete_audio_refinement)
474+
self.router.post("/audio/refinement/reload")(self.reload_audio_refinement)
472475

473476
async def audio_uvr5(self, request: AudioUVR5Params):
474477
if session_manager.exist_running_session():
@@ -532,7 +535,7 @@ async def audio_asr_stop(self, uid: str):
532535

533536
def list_audio_refinement(self, input_dir: str, output_dir: str):
534537
service = AudioService(source_dir=input_dir, output_dir=output_dir)
535-
result = service.refinement_reload()
538+
result = service.refinement_load_source()
536539
if isinstance(result, EaseVoiceResponse):
537540
return result
538541
logger.error(f"failed to list audio refinement: {result}")
@@ -554,6 +557,14 @@ def delete_audio_refinement(self, params: AudioRefinementDeleteParams):
554557
logger.error(f"failed to delete audio refinement: {result}")
555558
raise HTTPException(status_code=HTTPStatus.INTERNAL_SERVER_ERROR, detail=result)
556559

560+
def reload_audio_refinement(self, params: AudioRefinementReloadParams):
561+
service = AudioService(source_dir=params.source_dir, output_dir=params.output_dir)
562+
result = service.refinement_reload_source()
563+
if isinstance(result, EaseVoiceResponse):
564+
return result
565+
logger.error(f"failed to reload audio refinement: {result}")
566+
raise HTTPException(status_code=HTTPStatus.INTERNAL_SERVER_ERROR, detail=result)
567+
557568

558569
class EaseVoiceAPI:
559570
def __init__(self):
@@ -608,7 +619,6 @@ async def lifespan_context(app: FastAPI) -> AsyncGenerator[None, None]:
608619
frontend_index_api = FrontendIndexAPI(frontend_dir)
609620
app.include_router(frontend_index_api.router)
610621

611-
612622
tensorboard_service = TensorBoardService()
613623
tensorboard_api = TensorBoardAPI()
614624
app.include_router(tensorboard_api.router)
@@ -639,7 +649,6 @@ async def lifespan_context(app: FastAPI) -> AsyncGenerator[None, None]:
639649
easevoice_api = EaseVoiceAPI()
640650
app.include_router(easevoice_api.router, prefix="/apis/v1")
641651

642-
643652
# Function to print all routing information
644653
# def print_routes(app: FastAPI):
645654
# for route in app.routes:
@@ -649,4 +658,4 @@ async def lifespan_context(app: FastAPI) -> AsyncGenerator[None, None]:
649658
# print("-" * 40)
650659
#
651660
# # Call the function to print all routes
652-
# print_routes(app)
661+
# print_routes(app)

src/service/audio.py

Lines changed: 15 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,11 @@ class AudioRefinementDeleteParams:
7171
output_dir: str
7272
source_file_path: str
7373

74+
@dataclass
75+
class AudioRefinementReloadParams:
76+
source_dir: str
77+
output_dir: str
78+
7479

7580
class AudioService(object):
7681
def __init__(self, source_dir: str, output_dir: str):
@@ -177,7 +182,6 @@ def slicer(
177182
EaseVoiceResponse(ResponseStatus.FAILED, "Slice Failed", {"file_name": name})
178183
return EaseVoiceResponse(ResponseStatus.SUCCESS, "Slice Success", data)
179184

180-
181185
def denoise(self) -> EaseVoiceResponse:
182186
os.makedirs(os.path.join(self.output_dir, denoises_output), exist_ok=True)
183187
trace_data = {}
@@ -221,22 +225,26 @@ def _get_files(self, output_path: str):
221225
files.append(file_path)
222226
return files
223227

228+
def refinement_reload_source(self) -> EaseVoiceResponse:
229+
try:
230+
resp = self.refinement.reload_text()
231+
return EaseVoiceResponse(ResponseStatus.SUCCESS, "Reload Source Success", resp)
232+
except Exception as e:
233+
return EaseVoiceResponse(ResponseStatus.FAILED, "Reload Source Failed", {
234+
"error": str(e)
235+
})
236+
224237
def refinement_load_source(self) -> EaseVoiceResponse:
225238
os.makedirs(os.path.join(self.output_dir, refinements_output), exist_ok=True)
226239
if len(self.refinement.source_file_content) == 0:
227240
self.refinement.load_text()
228-
self.refinement.save_file()
229241
resp = self.refinement.source_file_content
230242
return EaseVoiceResponse(ResponseStatus.SUCCESS, "Load Source Success", resp)
231243

232244
def refinement_submit_text(self, index: str, language: str, text_content: str) -> EaseVoiceResponse:
233-
self.refinement.submit_text(index, language.upper(), text_content)
245+
self.refinement.submit_text(index, language.lower(), text_content)
234246
return EaseVoiceResponse(ResponseStatus.SUCCESS, "Submit Text Success", self.refinement.source_file_content)
235247

236248
def refinement_delete_text(self, file_index: str):
237249
self.refinement.delete_text(file_index)
238250
return EaseVoiceResponse(ResponseStatus.SUCCESS, "Delete Text Success", self.refinement.source_file_content)
239-
240-
def refinement_reload(self):
241-
self.refinement.load_text()
242-
return EaseVoiceResponse(ResponseStatus.SUCCESS, "Reload Success", self.refinement.source_file_content)

0 commit comments

Comments
 (0)