diff --git a/client/demo/src/101_server_setting.tsx b/client/demo/src/101_server_setting.tsx index 47fec51b..6e739580 100644 --- a/client/demo/src/101_server_setting.tsx +++ b/client/demo/src/101_server_setting.tsx @@ -1,4 +1,4 @@ -import { OnnxExecutionProvider, Protocol, Framework, fileSelector } from "@dannadori/voice-changer-client-js" +import { OnnxExecutionProvider, Framework, fileSelector } from "@dannadori/voice-changer-client-js" import React from "react" import { useMemo } from "react" import { ClientState } from "./hooks/useClient" diff --git a/client/demo/src/104_convert_setting.tsx b/client/demo/src/104_convert_setting.tsx index 4cbb35fd..200ffe57 100644 --- a/client/demo/src/104_convert_setting.tsx +++ b/client/demo/src/104_convert_setting.tsx @@ -1,5 +1,4 @@ -import { BufferSize } from "@dannadori/voice-changer-client-js" -import React, { useMemo, useState } from "react" +import React, { useMemo } from "react" import { ClientState } from "./hooks/useClient" export type UseConvertSettingProps = { diff --git a/client/demo/src/105_advanced_setting.tsx b/client/demo/src/105_advanced_setting.tsx index be13fd5f..28bd70c7 100644 --- a/client/demo/src/105_advanced_setting.tsx +++ b/client/demo/src/105_advanced_setting.tsx @@ -108,6 +108,20 @@ export const useAdvancedSetting = (props: UseAdvancedSettingProps): AdvancedSett ) }, [props.clientState.serverSetting.setting.convertChunkNum, props.clientState.serverSetting.setConvertChunkNum]) + const minConvertSizeRow = useMemo(() => { + return ( + +
+
Min Convert Size(byte)
+
+ { + props.clientState.serverSetting.setMinConvertSize(Number(e.target.value)) + }} /> +
+
+ ) + }, [props.clientState.serverSetting.setting.minConvertSize, props.clientState.serverSetting.setMinConvertSize]) + const crossFadeOverlapRateRow = useMemo(() => { return (
@@ -240,6 +254,7 @@ export const useAdvancedSetting = (props: UseAdvancedSettingProps): AdvancedSett
{convertChunkNumRow} + {minConvertSizeRow} {crossFadeOverlapRateRow} {crossFadeOffsetRateRow} {crossFadeEndRateRow} @@ -251,7 +266,7 @@ export const useAdvancedSetting = (props: UseAdvancedSettingProps): AdvancedSett
) - }, [showAdvancedSetting, mmvcServerUrlRow, protocolRow, sampleRateRow, bufferSizeRow, convertChunkNumRow, crossFadeOverlapRateRow, crossFadeOffsetRateRow, crossFadeEndRateRow, vfForceDisableRow, voiceChangeModeRow, workletSettingRow]) + }, [showAdvancedSetting, mmvcServerUrlRow, protocolRow, sampleRateRow, bufferSizeRow, convertChunkNumRow, minConvertSizeRow, crossFadeOverlapRateRow, crossFadeOffsetRateRow, crossFadeEndRateRow, vfForceDisableRow, voiceChangeModeRow, workletSettingRow]) const advancedSetting = useMemo(() => { diff --git a/client/demo/src/hooks/useServerSetting.ts b/client/demo/src/hooks/useServerSetting.ts index f1ffac7a..59c98ff9 100644 --- a/client/demo/src/hooks/useServerSetting.ts +++ b/client/demo/src/hooks/useServerSetting.ts @@ -25,6 +25,7 @@ export type ServerSettingState = { setSrcId: (num: number) => Promise; setDstId: (num: number) => Promise; setConvertChunkNum: (num: number) => Promise; + setMinConvertSize: (num: number) => Promise setGpu: (num: number) => Promise; setCrossFadeOffsetRate: (num: number) => Promise; setCrossFadeEndRate: (num: number) => Promise; @@ -56,6 +57,7 @@ export const useServerSetting = (props: UseServerSettingProps): ServerSettingSta _setSetting({ ...settingRef.current, convertChunkNum: res.convertChunkNum, + minConvertSize: res.minConvertSize, srcId: res.srcId, dstId: res.dstId, gpu: res.gpu, @@ -103,6 +105,13 @@ export const useServerSetting = (props: UseServerSettingProps): ServerSettingSta } }, [props.voiceChangerClient]) + const setMinConvertSize = useMemo(() => { + return async (num: number) => { + return await _set_and_store(ServerSettingKey.minConvertSize, "" + num) + } + }, [props.voiceChangerClient]) + + const setGpu = useMemo(() => { return async (num: number) => { return await _set_and_store(ServerSettingKey.gpu, "" + num) @@ -125,6 +134,8 @@ export const useServerSetting = (props: UseServerSettingProps): ServerSettingSta } }, [props.voiceChangerClient]) + + ////////////// // 操作 ///////////// @@ -218,6 +229,7 @@ export const useServerSetting = (props: UseServerSettingProps): ServerSettingSta setSrcId, setDstId, setConvertChunkNum, + setMinConvertSize, setGpu, setCrossFadeOffsetRate, setCrossFadeEndRate, diff --git a/client/lib/src/const.ts b/client/lib/src/const.ts index b20138fe..becbc567 100644 --- a/client/lib/src/const.ts +++ b/client/lib/src/const.ts @@ -7,6 +7,8 @@ // types export type VoiceChangerServerSetting = { convertChunkNum: number, // VITSに入力する変換サイズ。(入力データの2倍以上の大きさで指定。それより小さいものが指定された場合は、サーバ側で自動的に入力の2倍のサイズが設定される。) + minConvertSize: number, // この値より小さい場合にこの値に揃える。 + srcId: number, dstId: number, gpu: number, @@ -50,6 +52,7 @@ export type ServerInfo = { pyTorchModelFile: string, onnxModelFile: string, convertChunkNum: number, + minConvertSize: number, crossFadeOffsetRate: number, crossFadeEndRate: number, crossFadeOverlapRate: number, @@ -111,6 +114,7 @@ export const ServerSettingKey = { "srcId": "srcId", "dstId": "dstId", "convertChunkNum": "convertChunkNum", + "minConvertSize": "minConvertSize", "gpu": "gpu", "crossFadeOffsetRate": "crossFadeOffsetRate", "crossFadeEndRate": "crossFadeEndRate", @@ -123,6 +127,7 @@ export type ServerSettingKey = typeof ServerSettingKey[keyof typeof ServerSettin // Defaults export const DefaultVoiceChangerServerSetting: VoiceChangerServerSetting = { convertChunkNum: 32, //(★1) + minConvertSize: 0, srcId: 107, dstId: 100, gpu: 0, diff --git a/server/voice_changer/VoiceChanger.py b/server/voice_changer/VoiceChanger.py index aef7e56e..4c630423 100755 --- a/server/voice_changer/VoiceChanger.py +++ b/server/voice_changer/VoiceChanger.py @@ -26,12 +26,13 @@ class VocieChangerSettings(): crossFadeEndRate:float = 0.9 crossFadeOverlapRate:float = 0.9 convertChunkNum:int = 32 + minConvertSize:int = 0 framework:str = "PyTorch" # PyTorch or ONNX pyTorchModelFile:str = "" onnxModelFile:str = "" configFile:str = "" # ↓mutableな物だけ列挙 - intData = ["gpu","srcId", "dstId", "convertChunkNum"] + intData = ["gpu","srcId", "dstId", "convertChunkNum", "minConvertSize"] floatData = [ "crossFadeOffsetRate", "crossFadeEndRate", "crossFadeOverlapRate"] strData = ["framework"] @@ -298,8 +299,9 @@ class VoiceChanger(): if unpackedData.shape[0]*(1 + self.settings.crossFadeOverlapRate) + 1024 > convertSize: convertSize = int(unpackedData.shape[0]*(1 + self.settings.crossFadeOverlapRate)) + 1024 - - # print("convert Size", unpackedData.shape[0], unpackedData.shape[0]*(1 + self.settings.crossFadeOverlapRate), convertSize) + if convertSize < self.settings.minConvertSize: + convertSize = self.settings.minConvertSize + # print("convert Size", unpackedData.shape[0], unpackedData.shape[0]*(1 + self.settings.crossFadeOverlapRate), convertSize, self.settings.minConvertSize) self._generate_strength(unpackedData) data = self._generate_input(unpackedData, convertSize)