From 4744258c38d6389547acecadc0f4b16caf4a428c Mon Sep 17 00:00:00 2001 From: tarepan Date: Sat, 29 Jun 2024 04:59:25 +0000 Subject: [PATCH 01/11] =?UTF-8?q?refactor:=20`.start=5Fnew=5Fproc()`=20?= =?UTF-8?q?=E3=83=A1=E3=82=BD=E3=83=83=E3=83=89=E5=90=8D=E3=83=BB=E5=A4=89?= =?UTF-8?q?=E6=95=B0=E5=90=8D=E3=82=92=E3=83=AA=E3=83=8D=E3=83=BC=E3=83=A0?= =?UTF-8?q?=E3=81=97=20docstring=20=E3=82=92=E7=B0=A1=E7=95=A5=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- voicevox_engine/cancellable_engine.py | 29 +++++++++------------------ 1 file changed, 9 insertions(+), 20 deletions(-) diff --git a/voicevox_engine/cancellable_engine.py b/voicevox_engine/cancellable_engine.py index a812892f3..fe9dc376c 100644 --- a/voicevox_engine/cancellable_engine.py +++ b/voicevox_engine/cancellable_engine.py @@ -74,24 +74,13 @@ def __init__( procs_and_cons: queue.Queue[tuple[Process, ConnectionType]] = queue.Queue() for _ in range(init_processes): - procs_and_cons.put(self.start_new_proc()) + procs_and_cons.put(self.start_new_process()) self.procs_and_cons = procs_and_cons - def start_new_proc( - self, - ) -> tuple[Process, ConnectionType]: - """ - 新しく開始したプロセスを返す関数 - - Returns - ------- - ret_proc: Process - 新規のプロセス - sub_proc_con1: ConnectionType - ret_procのプロセスと通信するためのPipe - """ - sub_proc_con1, sub_proc_con2 = Pipe(True) - ret_proc = Process( + def start_new_process(self) -> tuple[Process, ConnectionType]: + """音声合成可能な新しいプロセスを開始し、そのプロセスとそこへのコネクションを返す。""" + connection_outer, connection_inner = Pipe(True) + new_process = Process( target=start_synthesis_subprocess, kwargs={ "use_gpu": self.use_gpu, @@ -100,12 +89,12 @@ def start_new_proc( "runtime_dirs": self.runtime_dirs, "cpu_num_threads": self.cpu_num_threads, "enable_mock": self.enable_mock, - "sub_proc_con": sub_proc_con2, + "sub_proc_con": connection_inner, }, daemon=True, ) - ret_proc.start() - return ret_proc, sub_proc_con1 + new_process.start() + return new_process, connection_outer def finalize_con( self, @@ -142,7 +131,7 @@ def finalize_con( self.procs_and_cons.put((proc, sub_proc_con)) except ValueError: # プロセスが死んでいるので新しく作り直す - self.procs_and_cons.put(self.start_new_proc()) + self.procs_and_cons.put(self.start_new_process()) def _synthesis_impl( self, From 3db03ee7706900e53c281ef1693b95082f2e48f8 Mon Sep 17 00:00:00 2001 From: tarepan Date: Sat, 29 Jun 2024 05:00:31 +0000 Subject: [PATCH 02/11] =?UTF-8?q?refactor:=20`Queue`=20=E3=81=AE=20import?= =?UTF-8?q?=20=E5=BD=A2=E5=BC=8F=E3=82=92=E7=B0=A1=E7=95=A5=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- voicevox_engine/cancellable_engine.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/voicevox_engine/cancellable_engine.py b/voicevox_engine/cancellable_engine.py index fe9dc376c..bdaa0e6d5 100644 --- a/voicevox_engine/cancellable_engine.py +++ b/voicevox_engine/cancellable_engine.py @@ -1,7 +1,7 @@ """キャンセル可能な音声合成""" import asyncio -import queue +from queue import Queue import sys from multiprocessing import Pipe, Process @@ -43,7 +43,7 @@ class CancellableEngine: Requestは接続の監視に使用され、Processは通信切断時のプロセスキルに使用される クライアントから接続があるとlistにtupleが追加される 接続が切断、もしくは音声合成が終了すると削除される - procs_and_cons: queue.Queue[tuple[Process, ConnectionType]] + procs_and_cons: Queue[tuple[Process, ConnectionType]] 音声合成の準備が終わっているプロセスのList (音声合成中のプロセスは入っていない) """ @@ -72,7 +72,8 @@ def __init__( self.watch_con_list: list[tuple[Request, Process]] = [] - procs_and_cons: queue.Queue[tuple[Process, ConnectionType]] = queue.Queue() + # 音声合成用のサブプロセスと、それと通信できるコネクション + procs_and_cons: Queue[tuple[Process, ConnectionType]] = Queue() for _ in range(init_processes): procs_and_cons.put(self.start_new_process()) self.procs_and_cons = procs_and_cons From aca061409bc5b0c1de9b841d38fae2906d6adb26 Mon Sep 17 00:00:00 2001 From: tarepan Date: Sat, 29 Jun 2024 05:02:20 +0000 Subject: [PATCH 03/11] =?UTF-8?q?refactor:=20`.=5Fsynthesis=5Fimpl()`=20?= =?UTF-8?q?=E3=82=92=E3=83=AA=E3=83=8D=E3=83=BC=E3=83=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- voicevox_engine/app/routers/tts_pipeline.py | 2 +- voicevox_engine/cancellable_engine.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/voicevox_engine/app/routers/tts_pipeline.py b/voicevox_engine/app/routers/tts_pipeline.py index 6555c844c..54d225ad1 100644 --- a/voicevox_engine/app/routers/tts_pipeline.py +++ b/voicevox_engine/app/routers/tts_pipeline.py @@ -295,7 +295,7 @@ def cancellable_synthesis( ) try: version = core_version or LATEST_VERSION - f_name = cancellable_engine._synthesis_impl( + f_name = cancellable_engine.synthesize_wave( query, style_id, request, version=version ) except CancellableEngineInternalError as e: diff --git a/voicevox_engine/cancellable_engine.py b/voicevox_engine/cancellable_engine.py index bdaa0e6d5..7cecf4727 100644 --- a/voicevox_engine/cancellable_engine.py +++ b/voicevox_engine/cancellable_engine.py @@ -134,7 +134,7 @@ def finalize_con( # プロセスが死んでいるので新しく作り直す self.procs_and_cons.put(self.start_new_process()) - def _synthesis_impl( + def synthesize_wave( self, query: AudioQuery, style_id: StyleId, From 058c000a92fd79a535daff0226996efa5abf77bd Mon Sep 17 00:00:00 2001 From: tarepan Date: Sat, 29 Jun 2024 05:02:58 +0000 Subject: [PATCH 04/11] =?UTF-8?q?refactor:=20`start=5Fnew=5Fprocess()`=20?= =?UTF-8?q?=E3=82=92=E3=83=97=E3=83=A9=E3=82=A4=E3=83=99=E3=83=BC=E3=83=88?= =?UTF-8?q?=E3=81=AB=E3=83=AA=E3=83=8D=E3=83=BC=E3=83=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- voicevox_engine/cancellable_engine.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/voicevox_engine/cancellable_engine.py b/voicevox_engine/cancellable_engine.py index 7cecf4727..35cb495bb 100644 --- a/voicevox_engine/cancellable_engine.py +++ b/voicevox_engine/cancellable_engine.py @@ -75,10 +75,10 @@ def __init__( # 音声合成用のサブプロセスと、それと通信できるコネクション procs_and_cons: Queue[tuple[Process, ConnectionType]] = Queue() for _ in range(init_processes): - procs_and_cons.put(self.start_new_process()) + procs_and_cons.put(self._start_new_process()) self.procs_and_cons = procs_and_cons - def start_new_process(self) -> tuple[Process, ConnectionType]: + def _start_new_process(self) -> tuple[Process, ConnectionType]: """音声合成可能な新しいプロセスを開始し、そのプロセスとそこへのコネクションを返す。""" connection_outer, connection_inner = Pipe(True) new_process = Process( @@ -132,7 +132,7 @@ def finalize_con( self.procs_and_cons.put((proc, sub_proc_con)) except ValueError: # プロセスが死んでいるので新しく作り直す - self.procs_and_cons.put(self.start_new_process()) + self.procs_and_cons.put(self._start_new_process()) def synthesize_wave( self, From b489bac63b21d9cf9aeb2dbb8f78a825d3d2cd3a Mon Sep 17 00:00:00 2001 From: tarepan Date: Sat, 29 Jun 2024 05:03:40 +0000 Subject: [PATCH 05/11] =?UTF-8?q?refactor:=20`.finalize=5Fcon()`=20?= =?UTF-8?q?=E3=82=92=E3=83=97=E3=83=A9=E3=82=A4=E3=83=99=E3=83=BC=E3=83=88?= =?UTF-8?q?=E3=81=AB=E3=83=AA=E3=83=8D=E3=83=BC=E3=83=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- voicevox_engine/cancellable_engine.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/voicevox_engine/cancellable_engine.py b/voicevox_engine/cancellable_engine.py index 35cb495bb..5b21f174b 100644 --- a/voicevox_engine/cancellable_engine.py +++ b/voicevox_engine/cancellable_engine.py @@ -97,7 +97,7 @@ def _start_new_process(self) -> tuple[Process, ConnectionType]: new_process.start() return new_process, connection_outer - def finalize_con( + def _finalize_con( self, req: Request, proc: Process, @@ -173,10 +173,10 @@ def synthesize_wave( except EOFError: raise CancellableEngineInternalError("既にサブプロセスは終了されています") except Exception: - self.finalize_con(request, proc, sub_proc_con1) + self._finalize_con(request, proc, sub_proc_con1) raise - self.finalize_con(request, proc, sub_proc_con1) + self._finalize_con(request, proc, sub_proc_con1) return audio_file_name async def catch_disconnection(self) -> None: @@ -196,7 +196,7 @@ async def catch_disconnection(self) -> None: except ValueError: pass finally: - self.finalize_con(req, proc, None) + self._finalize_con(req, proc, None) def start_synthesis_subprocess( From e03976207ccefd399e234b0141668f236d82f47e Mon Sep 17 00:00:00 2001 From: tarepan Date: Sat, 29 Jun 2024 05:14:27 +0000 Subject: [PATCH 06/11] fix: lint --- voicevox_engine/cancellable_engine.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/voicevox_engine/cancellable_engine.py b/voicevox_engine/cancellable_engine.py index 5b21f174b..4ef926138 100644 --- a/voicevox_engine/cancellable_engine.py +++ b/voicevox_engine/cancellable_engine.py @@ -1,9 +1,9 @@ """キャンセル可能な音声合成""" import asyncio -from queue import Queue import sys from multiprocessing import Pipe, Process +from queue import Queue if sys.platform == "win32": from multiprocessing.connection import PipeConnection as ConnectionType From fe1efcc0b805d455700a0fed6d6127585f92d9da Mon Sep 17 00:00:00 2001 From: tarepan Date: Sat, 29 Jun 2024 05:28:35 +0000 Subject: [PATCH 07/11] =?UTF-8?q?refactor:=20`.synthesize=5Fwave()`=20?= =?UTF-8?q?=E3=82=92=E6=95=B4=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- voicevox_engine/cancellable_engine.py | 39 +++++++++++---------------- 1 file changed, 16 insertions(+), 23 deletions(-) diff --git a/voicevox_engine/cancellable_engine.py b/voicevox_engine/cancellable_engine.py index 4ef926138..d91e2bd05 100644 --- a/voicevox_engine/cancellable_engine.py +++ b/voicevox_engine/cancellable_engine.py @@ -142,41 +142,34 @@ def synthesize_wave( version: str | LatestVersion, ) -> str: """ - 音声合成を行う関数 - 通常エンジンの引数に比べ、requestが必要になっている - また、返り値がファイル名になっている + サブプロセス上において、音声合成用のクエリ・スタイルIDに基づいて音声波形を生成し、音声ファイル名を返す。 Parameters ---------- - query: AudioQuery - style_id: StyleId - request: fastapi.Request - 接続確立時に受け取ったものをそのまま渡せばよい - https://fastapi.tiangolo.com/advanced/using-request-directly/ - version - - Returns - ------- - f_name: str - 生成された音声ファイルの名前 + request: + HTTP 接続状態に関するオブジェクト + version: + 合成に用いる TTSEngine のバージョン """ - proc, sub_proc_con1 = self.procs_and_cons.get() - self.watch_con_list.append((request, proc)) + # 待機中のプロセスとそのコネクションを取得し、監視対象リストへ登録する + synth_process, synth_connection = self.procs_and_cons.get() + self.watch_con_list.append((request, synth_process)) + + # サブプロセスへ入力を渡して音声を合成する try: - sub_proc_con1.send((query, style_id, version)) - f_name = sub_proc_con1.recv() - if isinstance(f_name, str): - audio_file_name = f_name - else: + synth_connection.send((query, style_id, version)) + audio_file_name = synth_connection.recv() + + if not isinstance(audio_file_name, str): # ここには来ないはず raise CancellableEngineInternalError("不正な値が生成されました") except EOFError: raise CancellableEngineInternalError("既にサブプロセスは終了されています") except Exception: - self._finalize_con(request, proc, sub_proc_con1) + self._finalize_con(request, synth_process, synth_connection) raise + self._finalize_con(request, synth_process, synth_connection) - self._finalize_con(request, proc, sub_proc_con1) return audio_file_name async def catch_disconnection(self) -> None: From 1909524674fd6f36492cac29db9a6e210ee5c5e3 Mon Sep 17 00:00:00 2001 From: tarepan Date: Sat, 29 Jun 2024 05:36:05 +0000 Subject: [PATCH 08/11] =?UTF-8?q?refactor:=20`.=5Ffinalize=5Fcon()`=20?= =?UTF-8?q?=E3=82=92=E6=95=B4=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- voicevox_engine/cancellable_engine.py | 24 ++++++++++-------------- 1 file changed, 10 insertions(+), 14 deletions(-) diff --git a/voicevox_engine/cancellable_engine.py b/voicevox_engine/cancellable_engine.py index d91e2bd05..6fb014077 100644 --- a/voicevox_engine/cancellable_engine.py +++ b/voicevox_engine/cancellable_engine.py @@ -98,32 +98,28 @@ def _start_new_process(self) -> tuple[Process, ConnectionType]: return new_process, connection_outer def _finalize_con( - self, - req: Request, - proc: Process, - sub_proc_con: ConnectionType | None, + self, req: Request, proc: Process, sub_proc_con: ConnectionType | None ) -> None: """ - 接続が切断された時の処理を行う関数 - watch_con_listからの削除、プロセスの後処理を行う - プロセスが生きている場合はそのままprocs_and_consに加える - 死んでいる場合は新しく生成したものをprocs_and_consに加える + 合成の後処理をおこなう。 Parameters ---------- - req: fastapi.Request - 接続確立時に受け取ったものをそのまま渡せばよい - https://fastapi.tiangolo.com/advanced/using-request-directly/ - proc: Process + req: + HTTP 接続状態に関するオブジェクト + proc: 音声合成を行っていたプロセス - sub_proc_con: ConnectionType, optional - 音声合成を行っていたプロセスとのPipe + sub_proc_con: + 音声合成を行っていたプロセスとのコネクション 指定されていない場合、プロセスは再利用されず終了される """ + # 監視対象リストから除外する try: self.watch_con_list.remove((req, proc)) except ValueError: pass + + # 待機中リストへ再登録する try: if not proc.is_alive() or sub_proc_con is None: proc.close() From f1c0388fddd019639ae001bd574d665b68874201 Mon Sep 17 00:00:00 2001 From: tarepan Date: Sat, 29 Jun 2024 06:08:04 +0000 Subject: [PATCH 09/11] =?UTF-8?q?refactor:=20`.start=5Fsynthesis=5Fsubproc?= =?UTF-8?q?ess()`=20=E3=82=92=E6=95=B4=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- voicevox_engine/cancellable_engine.py | 31 ++++++++++++++++----------- 1 file changed, 19 insertions(+), 12 deletions(-) diff --git a/voicevox_engine/cancellable_engine.py b/voicevox_engine/cancellable_engine.py index 6fb014077..2ebdf08cb 100644 --- a/voicevox_engine/cancellable_engine.py +++ b/voicevox_engine/cancellable_engine.py @@ -188,6 +188,7 @@ async def catch_disconnection(self) -> None: self._finalize_con(req, proc, None) +# NOTE: pickle化の関係でグローバルに書いている def start_synthesis_subprocess( use_gpu: bool, voicelib_dirs: list[Path] | None, @@ -195,21 +196,20 @@ def start_synthesis_subprocess( runtime_dirs: list[Path] | None, cpu_num_threads: int | None, enable_mock: bool, - sub_proc_con: ConnectionType, + connection: ConnectionType, ) -> None: """ - 音声合成を行うサブプロセスで行うための関数 - pickle化の関係でグローバルに書いている + コネクションへの入力に応答して音声合成をおこなうループを実行する 引数 use_gpu, voicelib_dirs, voicevox_dir, runtime_dirs, cpu_num_threads, enable_mock は、 core_initializer を参照 Parameters ---------- - sub_proc_con: ConnectionType - メインプロセスと通信するためのPipe + connection: + メインプロセスと通信するためのコネクション """ - + # 音声合成エンジンを用意する core_manager = initialize_cores( use_gpu=use_gpu, voicelib_dirs=voicelib_dirs, @@ -219,16 +219,20 @@ def start_synthesis_subprocess( enable_mock=enable_mock, ) tts_engines = make_tts_engines_from_cores(core_manager) - assert len(tts_engines.versions()) != 0, "音声合成エンジンがありません。" + + # 「キュー入力待機 → キュー入力受付 → 音声合成 → ファイル名送信」をループする while True: try: - query, style_id, version = sub_proc_con.recv() + # キューへ入力が来たらそれを受け取る + query, style_id, version = connection.recv() + + # 音声を合成しファイルへ保存する try: _engine = tts_engines.get_engine(version) except Exception: - # バージョンが見つからないエラー - sub_proc_con.send("") + # コネクションを介して「バージョンが見つからないエラー」を送信する + connection.send("") # `""` をエラーして扱う continue # FIXME: enable_interrogative_upspeakフラグをWebAPIから受け渡してくる wave = _engine.synthesize_wave( @@ -238,7 +242,10 @@ def start_synthesis_subprocess( soundfile.write( file=f, data=wave, samplerate=query.outputSamplingRate, format="WAV" ) - sub_proc_con.send(f.name) + + # コネクションを介してファイル名を送信する + connection.send(f.name) + except Exception: - sub_proc_con.close() + connection.close() raise From 7742d4365c4531e1d1ec0db213f3ae5e62389fe7 Mon Sep 17 00:00:00 2001 From: tarepan Date: Sat, 29 Jun 2024 06:13:32 +0000 Subject: [PATCH 10/11] =?UTF-8?q?refactor:=20=E3=82=A4=E3=83=B3=E3=82=B9?= =?UTF-8?q?=E3=82=BF=E3=83=B3=E3=82=B9=E5=B1=9E=E6=80=A7=E3=82=92=E3=83=AA?= =?UTF-8?q?=E3=83=8D=E3=83=BC=E3=83=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- voicevox_engine/cancellable_engine.py | 42 ++++++++++----------------- 1 file changed, 15 insertions(+), 27 deletions(-) diff --git a/voicevox_engine/cancellable_engine.py b/voicevox_engine/cancellable_engine.py index 2ebdf08cb..0b5e8337d 100644 --- a/voicevox_engine/cancellable_engine.py +++ b/voicevox_engine/cancellable_engine.py @@ -29,24 +29,7 @@ class CancellableEngineInternalError(Exception): class CancellableEngine: - """ - 音声合成のキャンセル機能に関するクラス - 初期化後は、synthesis関数で音声合成できる - (オリジナルと比べ引数が増えているので注意) - - パラメータ use_gpu, voicelib_dirs, voicevox_dir, - runtime_dirs, cpu_num_threads, enable_mock は、 core_initializer を参照 - - Attributes - ---------- - watch_con_list: list[tuple[Request, Process]] - Requestは接続の監視に使用され、Processは通信切断時のプロセスキルに使用される - クライアントから接続があるとlistにtupleが追加される - 接続が切断、もしくは音声合成が終了すると削除される - procs_and_cons: Queue[tuple[Process, ConnectionType]] - 音声合成の準備が終わっているプロセスのList - (音声合成中のプロセスは入っていない) - """ + """音声合成のキャンセル機能に関するクラス""" def __init__( self, @@ -60,6 +43,8 @@ def __init__( ) -> None: """ 変数の初期化を行う + パラメータ use_gpu, voicelib_dirs, voicevox_dir, + runtime_dirs, cpu_num_threads, enable_mock は、 core_initializer を参照 また、init_processesの数だけプロセスを起動し、procs_and_consに格納する """ @@ -70,13 +55,16 @@ def __init__( self.cpu_num_threads = cpu_num_threads self.enable_mock = enable_mock - self.watch_con_list: list[tuple[Request, Process]] = [] + # Requestは接続の監視に使用され、Processは通信切断時のプロセスキルに使用される + # クライアントから接続があるとlistにtupleが追加される + # 接続が切断、もしくは音声合成が終了すると削除される + self._watching_reqs_and_procs: list[tuple[Request, Process]] = [] - # 音声合成用のサブプロセスと、それと通信できるコネクション + # 待機しているサブプロセスと、それと通信できるコネクション procs_and_cons: Queue[tuple[Process, ConnectionType]] = Queue() for _ in range(init_processes): procs_and_cons.put(self._start_new_process()) - self.procs_and_cons = procs_and_cons + self._waiting_procs_and_cons = procs_and_cons def _start_new_process(self) -> tuple[Process, ConnectionType]: """音声合成可能な新しいプロセスを開始し、そのプロセスとそこへのコネクションを返す。""" @@ -115,7 +103,7 @@ def _finalize_con( """ # 監視対象リストから除外する try: - self.watch_con_list.remove((req, proc)) + self._watching_reqs_and_procs.remove((req, proc)) except ValueError: pass @@ -125,10 +113,10 @@ def _finalize_con( proc.close() raise ValueError # プロセスが死んでいない場合は再利用する - self.procs_and_cons.put((proc, sub_proc_con)) + self._waiting_procs_and_cons.put((proc, sub_proc_con)) except ValueError: # プロセスが死んでいるので新しく作り直す - self.procs_and_cons.put(self._start_new_process()) + self._waiting_procs_and_cons.put(self._start_new_process()) def synthesize_wave( self, @@ -148,8 +136,8 @@ def synthesize_wave( 合成に用いる TTSEngine のバージョン """ # 待機中のプロセスとそのコネクションを取得し、監視対象リストへ登録する - synth_process, synth_connection = self.procs_and_cons.get() - self.watch_con_list.append((request, synth_process)) + synth_process, synth_connection = self._waiting_procs_and_cons.get() + self._watching_reqs_and_procs.append((request, synth_process)) # サブプロセスへ入力を渡して音声を合成する try: @@ -174,7 +162,7 @@ async def catch_disconnection(self) -> None: """ while True: await asyncio.sleep(1) - for con in self.watch_con_list: + for con in self._watching_reqs_and_procs: req, proc = con if await req.is_disconnected(): try: From c3bbaea517df72cb580e8b3115d416dcbd3801b4 Mon Sep 17 00:00:00 2001 From: tarepan Date: Sat, 29 Jun 2024 06:15:56 +0000 Subject: [PATCH 11/11] =?UTF-8?q?refactor:=20docstring=20=E3=82=92?= =?UTF-8?q?=E6=98=8E=E7=A2=BA=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- voicevox_engine/cancellable_engine.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/voicevox_engine/cancellable_engine.py b/voicevox_engine/cancellable_engine.py index 0b5e8337d..d15146fd7 100644 --- a/voicevox_engine/cancellable_engine.py +++ b/voicevox_engine/cancellable_engine.py @@ -29,7 +29,7 @@ class CancellableEngineInternalError(Exception): class CancellableEngine: - """音声合成のキャンセル機能に関するクラス""" + """マルチプロセスでの合成・キャンセル可能な合成をサポートする音声合成エンジン""" def __init__( self, @@ -45,7 +45,7 @@ def __init__( 変数の初期化を行う パラメータ use_gpu, voicelib_dirs, voicevox_dir, runtime_dirs, cpu_num_threads, enable_mock は、 core_initializer を参照 - また、init_processesの数だけプロセスを起動し、procs_and_consに格納する + init_processesの数だけプロセスを起動し、procs_and_consに格納する """ self.use_gpu = use_gpu