WIP: DDSP

This commit is contained in:
wataru 2023-05-09 05:04:34 +09:00
parent 0723913a3b
commit 1d91356268
26 changed files with 295 additions and 135 deletions

View File

@ -118,25 +118,26 @@
], ],
"speakerSetting": [ "speakerSetting": [
{ {
"name": "dstId2", "name": "dstId",
"options": { "options": {
"selectableIds": [1, 2] "dstIdDisplayType": "ddspsvc",
"staticIds": [1]
} }
}, },
{ {
"name": "tune", "name": "tune",
"options": {} "options": {}
}, },
{
"name": "indexRatio",
"options": {}
},
{ {
"name": "silentThreshold", "name": "silentThreshold",
"options": {} "options": {}
}, },
{ {
"name": "enableEnhancer", "name": "diffEnablerRow",
"options": {}
},
{
"name": "diffSettingRow",
"options": {} "options": {}
} }
], ],

View File

@ -105,7 +105,8 @@
"name": "dstId", "name": "dstId",
"options": { "options": {
"showF0": false, "showF0": false,
"useServerInfo": false "useServerInfo": false,
"dstIdDisplayType": "MMVCv13"
} }
}, },
{ {

View File

@ -113,7 +113,8 @@
"name": "dstId", "name": "dstId",
"options": { "options": {
"showF0": true, "showF0": true,
"useServerInfo": false "useServerInfo": false,
"dstIdDisplayType": "MMVCv15"
} }
}, },
{ {

View File

@ -133,8 +133,8 @@
{ {
"name": "dstId", "name": "dstId",
"options": { "options": {
"showF0": true, "dstIdDisplayType": "ddspsvc",
"useServerInfo": false "staticIds": [1]
} }
}, },
{ {

View File

@ -103,7 +103,8 @@
"name": "dstId", "name": "dstId",
"options": { "options": {
"showF0": false, "showF0": false,
"useServerInfo": true "useServerInfo": true,
"dstIdDisplayType": "sovitsvc40"
} }
}, },
{ {

View File

@ -103,7 +103,8 @@
"name": "dstId", "name": "dstId",
"options": { "options": {
"showF0": false, "showF0": false,
"useServerInfo": true "useServerInfo": true,
"dstIdDisplayType": "sovitsvc40v2"
} }
}, },
{ {

File diff suppressed because one or more lines are too long

View File

@ -118,25 +118,26 @@
], ],
"speakerSetting": [ "speakerSetting": [
{ {
"name": "dstId2", "name": "dstId",
"options": { "options": {
"selectableIds": [1, 2] "dstIdDisplayType": "ddspsvc",
"staticIds": [1]
} }
}, },
{ {
"name": "tune", "name": "tune",
"options": {} "options": {}
}, },
{
"name": "indexRatio",
"options": {}
},
{ {
"name": "silentThreshold", "name": "silentThreshold",
"options": {} "options": {}
}, },
{ {
"name": "enableEnhancer", "name": "diffEnablerRow",
"options": {}
},
{
"name": "diffSettingRow",
"options": {} "options": {}
} }
], ],

View File

@ -105,7 +105,8 @@
"name": "dstId", "name": "dstId",
"options": { "options": {
"showF0": false, "showF0": false,
"useServerInfo": false "useServerInfo": false,
"dstIdDisplayType": "MMVCv13"
} }
}, },
{ {

View File

@ -113,7 +113,8 @@
"name": "dstId", "name": "dstId",
"options": { "options": {
"showF0": true, "showF0": true,
"useServerInfo": false "useServerInfo": false,
"dstIdDisplayType": "MMVCv15"
} }
}, },
{ {

View File

@ -133,8 +133,8 @@
{ {
"name": "dstId", "name": "dstId",
"options": { "options": {
"showF0": true, "dstIdDisplayType": "ddspsvc",
"useServerInfo": false "staticIds": [1]
} }
}, },
{ {

View File

@ -103,7 +103,8 @@
"name": "dstId", "name": "dstId",
"options": { "options": {
"showF0": false, "showF0": false,
"useServerInfo": true "useServerInfo": true,
"dstIdDisplayType": "sovitsvc40"
} }
}, },
{ {

View File

@ -103,7 +103,8 @@
"name": "dstId", "name": "dstId",
"options": { "options": {
"showF0": false, "showF0": false,
"useServerInfo": true "useServerInfo": true,
"dstIdDisplayType": "sovitsvc40v2"
} }
}, },
{ {

View File

@ -35,11 +35,8 @@ import { TrancateNumTresholdRow, TrancateNumTresholdRowProps } from "./component
import { IndexRatioRow, IndexRatioRowProps } from "./components/609_IndexRatioRow" import { IndexRatioRow, IndexRatioRowProps } from "./components/609_IndexRatioRow"
import { RVCQualityRow, RVCQualityRowProps } from "./components/810_RVCQualityRow" import { RVCQualityRow, RVCQualityRowProps } from "./components/810_RVCQualityRow"
import { ModelSamplingRateRow, ModelSamplingRateRowProps } from "./components/303_ModelSamplingRateRow" import { ModelSamplingRateRow, ModelSamplingRateRowProps } from "./components/303_ModelSamplingRateRow"
// import { OnnxExportRow, OnnxExportRowProps } from "./components/304_OnnxExportRow"
import { EnableEnhancerRow, EnableEnhancerRowProps } from "./components/610_EnableEnhancerRow"
import { DstIdRow2, DstIdRow2Props } from "./components/602v2_DstIdRow2" import { DstIdRow2, DstIdRow2Props } from "./components/602v2_DstIdRow2"
import { SilenceFrontRow, SilenceFrontRowProps } from "./components/812_SilenceFrontRow" import { SilenceFrontRow, SilenceFrontRowProps } from "./components/812_SilenceFrontRow"
// import { ModelSwitchRow, ModelSwitchRowProps } from "./components/204_ModelSwitchRow"
import { ONNXExportRow, ONNXExportRowProps } from "./components/205_ONNXExportRow" import { ONNXExportRow, ONNXExportRowProps } from "./components/205_ONNXExportRow"
import { ONNXExecutorRow, ONNXExecutorRowProps } from "./components/206_ONNXExecutorRow" import { ONNXExecutorRow, ONNXExecutorRowProps } from "./components/206_ONNXExecutorRow"
import { MergeLabRow, MergeLabRowProps } from "./components/a01_MergeLab.Row" import { MergeLabRow, MergeLabRowProps } from "./components/a01_MergeLab.Row"
@ -53,6 +50,8 @@ import { ModelUploaderRowv2, ModelUploaderRowv2Props } from "./components/301_Mo
import { CorrespondenceSelectRow2, CorrespondenceSelectRow2Props } from "./components/301-g_CorrespondenceSelectRow2" import { CorrespondenceSelectRow2, CorrespondenceSelectRow2Props } from "./components/301-g_CorrespondenceSelectRow2"
import { ModelSlotRow2, ModelSlotRow2Props } from "./components/301-h_ModelSlotRowv2" import { ModelSlotRow2, ModelSlotRow2Props } from "./components/301-h_ModelSlotRowv2"
import { DefaultTuneRow2, DefaultTuneRow2Props } from "./components/301-i_DefaultTuneRowv2" import { DefaultTuneRow2, DefaultTuneRow2Props } from "./components/301-i_DefaultTuneRowv2"
import { DiffEnablerRow, DiffEnablerRowProps } from "./components/611_DiffEnablerRow"
import { DiffSettingRow, DiffSettingRowProps } from "./components/612_DiffSettingRow"
export const catalog: { [key: string]: (props: any) => JSX.Element } = {} export const catalog: { [key: string]: (props: any) => JSX.Element } = {}
@ -115,7 +114,8 @@ const initialize = () => {
addToCatalog("noiseScale", (props: NoiseScaleRowProps) => { return <NoiseScaleRow {...props} /> }) addToCatalog("noiseScale", (props: NoiseScaleRowProps) => { return <NoiseScaleRow {...props} /> })
addToCatalog("silentThreshold", (props: SilentThresholdRowProps) => { return <SilentThresholdRow {...props} /> }) addToCatalog("silentThreshold", (props: SilentThresholdRowProps) => { return <SilentThresholdRow {...props} /> })
addToCatalog("indexRatio", (props: IndexRatioRowProps) => { return <IndexRatioRow {...props} /> }) addToCatalog("indexRatio", (props: IndexRatioRowProps) => { return <IndexRatioRow {...props} /> })
addToCatalog("enableEnhancer", (props: EnableEnhancerRowProps) => { return <EnableEnhancerRow {...props} /> }) addToCatalog("diffEnablerRow", (props: DiffEnablerRowProps) => { return <DiffEnablerRow {...props} /> })
addToCatalog("diffSettingRow", (props: DiffSettingRowProps) => { return <DiffSettingRow {...props} /> })

View File

@ -9,6 +9,14 @@ export const PerformanceRow = (_props: PerformanceRowProps) => {
const [showPerformanceDetail, setShowPerformanceDetail] = useState<boolean>(false) const [showPerformanceDetail, setShowPerformanceDetail] = useState<boolean>(false)
const performanceRow = useMemo(() => { const performanceRow = useMemo(() => {
if (appState.serverSetting.serverSetting.enableServerAudio) {
return (
<div className="body-row split-3-7 left-padding-1 guided">
<div className="body-item-title left-padding-1">monitor:</div>
<div className="body-item-text">server device mode. refer console.</div>
</div>
)
}
const performanceDetailLabel = showPerformanceDetail ? "[pre, main, post] <<" : "more >>" const performanceDetailLabel = showPerformanceDetail ? "[pre, main, post] <<" : "more >>"
const performanceData = showPerformanceDetail ? `[${appState.performance.preprocessTime}, ${appState.performance.mainprocessTime},${appState.performance.postprocessTime}]` : "" const performanceData = showPerformanceDetail ? `[${appState.performance.preprocessTime}, ${appState.performance.mainprocessTime},${appState.performance.postprocessTime}]` : ""
return ( return (

View File

@ -9,7 +9,7 @@ export const AnalyzerRow = (_props: AnalyzerRowProps) => {
const analyzerRow = useMemo(() => { const analyzerRow = useMemo(() => {
return ( return (
<div className="body-row split-3-7 left-padding-1 guided"> <div className="body-row split-3-7 left-padding-1 guided">
<div className="body-item-title left-padding-1 ">Analyzer(Experimental)</div> <div className="body-item-title left-padding-1 ">Analyzer</div>
<div className="body-button-container"> <div className="body-button-container">
</div> </div>
</div> </div>

View File

@ -5,20 +5,27 @@ import { ServerInfoSoVitsSVC } from "@dannadori/voice-changer-client-js";
export type DstIdRowProps = { export type DstIdRowProps = {
showF0: boolean showF0: boolean
useServerInfo: boolean useServerInfo: boolean
dstIdDisplayType: DstIdDisplayType
staticIds: number[]
} }
export const DstIdDisplayType = {
"MMVCv13": "MMVCv13",
"MMVCv15": "MMVCv15",
"sovitsvc40": "sovitsvc40",
"sovitsvc40v2": "sovitsvc40v2",
"rvc": "rvc",
"ddspsvc": "ddspsvc",
} as const
export type DstIdDisplayType = typeof DstIdDisplayType[keyof typeof DstIdDisplayType]
export const DstIdRow = (props: DstIdRowProps) => { export const DstIdRow = (props: DstIdRowProps) => {
const appState = useAppState() const appState = useAppState()
const dstIdRow = useMemo(() => { const dstIdRow = useMemo(() => {
if (!props.showF0 && !props.useServerInfo) { if (props.dstIdDisplayType != "MMVCv13") {
// mmvc v.1.3ではない
// noop
} else {
// mmvc v.1.3ではない
return <></> return <></>
} }
return ( return (
<div className="body-row split-3-2-1-4 left-padding-1 guided"> <div className="body-row split-3-2-1-4 left-padding-1 guided">
<div className="body-item-title left-padding-1">Destination Speaker Id</div> <div className="body-item-title left-padding-1">Destination Speaker Id</div>
@ -42,11 +49,7 @@ export const DstIdRow = (props: DstIdRowProps) => {
}, [appState.serverSetting.serverSetting, appState.clientSetting.clientSetting.speakers, appState.serverSetting.updateServerSettings]) }, [appState.serverSetting.serverSetting, appState.clientSetting.clientSetting.speakers, appState.serverSetting.updateServerSettings])
const dstIdRowWithF0 = useMemo(() => { const dstIdRowWithF0 = useMemo(() => {
if (props.showF0) { if (props.dstIdDisplayType != "MMVCv15") {
// mmvc v.15
// noop
} else {
// mmvc v.1.5ではない
return <></> return <></>
} }
@ -79,11 +82,7 @@ export const DstIdRow = (props: DstIdRowProps) => {
}, [appState.serverSetting.serverSetting, appState.serverSetting.updateServerSettings, appState.clientSetting.clientSetting.correspondences]) }, [appState.serverSetting.serverSetting, appState.serverSetting.updateServerSettings, appState.clientSetting.clientSetting.correspondences])
const dstIdRowFromServer = useMemo(() => { const dstIdRowFromServer = useMemo(() => {
if (props.useServerInfo) { if (props.dstIdDisplayType != "sovitsvc40" && props.dstIdDisplayType != "sovitsvc40v2") {
// not mmvc v1.3 or v.15
// noop
} else {
// mmvc v1.3 or v.15
return <></> return <></>
} }
@ -118,11 +117,50 @@ export const DstIdRow = (props: DstIdRowProps) => {
) )
}, [appState.serverSetting.serverSetting, appState.serverSetting.updateServerSettings, appState.clientSetting.clientSetting.correspondences]) }, [appState.serverSetting.serverSetting, appState.serverSetting.updateServerSettings, appState.clientSetting.clientSetting.correspondences])
const dstIdRowStatic = useMemo(() => {
if (props.dstIdDisplayType != "rvc" && props.dstIdDisplayType != "ddspsvc") {
return <></>
}
// const settings = appState.serverSetting.serverSetting as ServerInfoSoVitsSVC
// const speakers = settings.speakers
// if (!speakers) {
// return <></>
// }
const currentValue = Object.values(props.staticIds).includes(appState.serverSetting.serverSetting.dstId) ? appState.serverSetting.serverSetting.dstId : -1
return (
<div className="body-row split-3-2-1-4 left-padding-1 guided">
<div className="body-item-title left-padding-1">Destination Speaker Id</div>
<div className="body-select-container">
<select className="body-select" value={currentValue} onChange={(e) => {
appState.serverSetting.updateServerSettings({ ...appState.serverSetting.serverSetting, dstId: Number(e.target.value) })
}}>
<option key="unknown" value={0}>default(0)</option>
{
Object.keys(props.staticIds).map(x => {
return <option key={x} value={x}>{x}</option>
})
}
</select>
</div>
<div className="body-item-text">
</div>
<div className="body-item-text"></div>
</div>
)
}, [appState.serverSetting.serverSetting, appState.serverSetting.updateServerSettings])
return ( return (
<> <>
{dstIdRow} {dstIdRow}
{dstIdRowWithF0} {dstIdRowWithF0}
{dstIdRowFromServer} {dstIdRowFromServer}
{dstIdRowStatic}
</> </>
) )
} }

View File

@ -1,45 +0,0 @@
import React, { useMemo } from "react"
import { useAppState } from "../../../001_provider/001_AppStateProvider"
export type EnableEnhancerRowProps = {
}
export const EnableEnhancerRow = (_props: EnableEnhancerRowProps) => {
const appState = useAppState()
const clusterRatioRow = useMemo(() => {
return (
<>
<div className="body-row split-3-7 left-padding-1 guided">
<div className="body-item-title left-padding-1 ">Enhancer</div>
<div className="body-input-container">
<select value={appState.serverSetting.serverSetting.enableEnhancer} onChange={(e) => {
appState.serverSetting.updateServerSettings({ ...appState.serverSetting.serverSetting, enableEnhancer: Number(e.target.value) })
}}>
<option value="0" >disable</option>
<option value="1" >enable</option>
</select>
</div>
</div>
{/* <div className="body-row split-3-3-4 left-padding-1 guided">
<div className="body-item-title left-padding-1 ">Enhancer Tune</div>
<div>
<input type="range" className="body-item-input-slider" min="0" max="10" step="1" value={appState.serverSetting.serverSetting.enhancerTune || 0} onChange={(e) => {
appState.serverSetting.updateServerSettings({ ...appState.serverSetting.serverSetting, enhancerTune: Number(e.target.value) })
}}></input>
<span className="body-item-input-slider-val">{appState.serverSetting.serverSetting.enhancerTune}</span>
</div>
<div className="body-button-container">
</div>
</div> */}
</>
)
}, [
appState.serverSetting.serverSetting,
appState.serverSetting.updateServerSettings
])
return clusterRatioRow
}

View File

@ -0,0 +1,46 @@
import React, { useMemo } from "react"
import { useAppState } from "../../../001_provider/001_AppStateProvider"
export type DiffEnablerRowProps = {
}
export const DiffEnablerRow = (_props: DiffEnablerRowProps) => {
const appState = useAppState()
const diffEnablerRow = useMemo(() => {
return (
<div className="body-row split-3-2-2-2-1 left-padding-1 guided">
<div className="body-item-title left-padding-1 ">DDSP Setting</div>
<div>
<input type="checkbox" checked={appState.serverSetting.serverSetting.useEnhancer == 1} onChange={(e) => {
appState.serverSetting.updateServerSettings({ ...appState.serverSetting.serverSetting, useEnhancer: e.target.checked ? 1 : 0 })
}} /> Enhancer
</div>
<div>
<input type="checkbox" checked={appState.serverSetting.serverSetting.useDiff == 1} onChange={(e) => {
appState.serverSetting.updateServerSettings({ ...appState.serverSetting.serverSetting, useDiff: e.target.checked ? 1 : 0 })
}} /> Diff
</div>
<div>
<input type="checkbox" checked={appState.serverSetting.serverSetting.useDiffDpm == 1} onChange={(e) => {
appState.serverSetting.updateServerSettings({ ...appState.serverSetting.serverSetting, useDiffDpm: e.target.checked ? 1 : 0 })
}} /> DiffDpm
</div>
<div>
<input type="checkbox" checked={appState.serverSetting.serverSetting.useDiffSilence == 1} onChange={(e) => {
appState.serverSetting.updateServerSettings({ ...appState.serverSetting.serverSetting, useDiffSilence: e.target.checked ? 1 : 0 })
}} /> Silence
</div>
</div>
)
}, [
appState.serverSetting.serverSetting,
appState.serverSetting.updateServerSettings
])
return diffEnablerRow
}

View File

@ -0,0 +1,42 @@
import React, { useMemo } from "react"
import { useAppState } from "../../../001_provider/001_AppStateProvider"
export type DiffSettingRowProps = {
}
export const DiffSettingRow = (_props: DiffSettingRowProps) => {
const appState = useAppState()
const diffSettingRow = useMemo(() => {
return (
<div className="body-row split-3-2-2-3 left-padding-1 guided">
<div className="body-item-title left-padding-1 ">Diff Setting</div>
<div>
<span className="body-item-input-slider-label">Acc</span>
<input type="range" className="body-item-input-slider" min="1" max="20" step="1" value={appState.serverSetting.serverSetting.diffAcc} onChange={(e) => {
appState.serverSetting.updateServerSettings({ ...appState.serverSetting.serverSetting, diffAcc: Number(e.target.value) })
}}></input>
<span className="body-item-input-slider-val">{appState.serverSetting.serverSetting.diffAcc}</span>
</div>
<div>
<span className="body-item-input-slider-label">kstep</span>
<input type="range" className="body-item-input-slider" min="21" max="300" step="1" value={appState.serverSetting.serverSetting.kStep} onChange={(e) => {
appState.serverSetting.updateServerSettings({ ...appState.serverSetting.serverSetting, kStep: Number(e.target.value) })
}}></input>
<span className="body-item-input-slider-val">{appState.serverSetting.serverSetting.kStep}</span>
</div>
<div className="body-button-container">
</div>
</div>
)
}, [
appState.serverSetting.serverSetting,
appState.serverSetting.updateServerSettings
])
return diffSettingRow
}

View File

@ -15,7 +15,7 @@ export const InputChunkNumRow = (props: InputChunkNumRowProps) => {
nums = props.nums nums = props.nums
} }
return ( return (
<div className="body-row split-3-2-1-4 left-padding-1 guided"> <div className="body-row split-3-2-2-3 left-padding-1 guided">
<div className="body-item-title left-padding-1">Input Chunk Num(128sample/chunk)</div> <div className="body-item-title left-padding-1">Input Chunk Num(128sample/chunk)</div>
<div className="body-input-container"> <div className="body-input-container">
<select className="body-select" value={appState.workletNodeSetting.workletNodeSetting.inputChunkNum} onChange={(e) => { <select className="body-select" value={appState.workletNodeSetting.workletNodeSetting.inputChunkNum} onChange={(e) => {
@ -33,7 +33,9 @@ export const InputChunkNumRow = (props: InputChunkNumRowProps) => {
<div className="body-item-text"> <div className="body-item-text">
<div>buff: {(appState.workletNodeSetting.workletNodeSetting.inputChunkNum * 128 * 1000 / 48000).toFixed(1)}ms</div> <div>buff: {(appState.workletNodeSetting.workletNodeSetting.inputChunkNum * 128 * 1000 / 48000).toFixed(1)}ms</div>
</div> </div>
<div className="body-item-text"></div> <div className="body-item-text">
<div>sample: {(appState.workletNodeSetting.workletNodeSetting.inputChunkNum * 128)}</div>
</div>
</div> </div>
) )

View File

@ -151,7 +151,20 @@ body {
width: 40%; width: 40%;
} }
} }
.split-5-5 {
display: flex;
width: 100%;
justify-content: center;
margin: 1px 0px 1px 0px;
& > div:nth-child(1) {
left: 0px;
width: 50%;
}
& > div:nth-child(2) {
left: 50%;
width: 50%;
}
}
.split-4-6 { .split-4-6 {
display: flex; display: flex;
width: 100%; width: 100%;

View File

@ -105,11 +105,16 @@ export const ServerSettingKey = {
"silenceFront": "silenceFront", "silenceFront": "silenceFront",
"modelSlotIndex": "modelSlotIndex", "modelSlotIndex": "modelSlotIndex",
"enableEnhancer": "enableEnhancer", "useEnhancer": "useEnhancer",
"enhancerTune": "enhancerTune", "useDiff": "useDiff",
"useDiffDpm": "useDiffDpm",
"useDiffSilence": "useDiffSilence",
"diffAcc": "diffAcc",
"diffSpkId": "diffSpkId",
"kStep": "kStep",
"threshold": "threshold",
"inputSampleRate": "inputSampleRate", "inputSampleRate": "inputSampleRate",
"enableDirectML": "enableDirectML", "enableDirectML": "enableDirectML",
} as const } as const
export type ServerSettingKey = typeof ServerSettingKey[keyof typeof ServerSettingKey] export type ServerSettingKey = typeof ServerSettingKey[keyof typeof ServerSettingKey]
@ -155,8 +160,14 @@ export type VoiceChangerServerSetting = {
modelSamplingRate: ModelSamplingRate // 32000,40000,48000 modelSamplingRate: ModelSamplingRate // 32000,40000,48000
modelSlotIndex: number, modelSlotIndex: number,
enableEnhancer: number // DDSP-SVC useEnhancer: number// DDSP-SVC
enhancerTune: number // DDSP-SVC useDiff: number// DDSP-SVC
useDiffDpm: number// DDSP-SVC
useDiffSilence: number// DDSP-SVC
diffAcc: number// DDSP-SVC
diffSpkId: number// DDSP-SVC
kStep: number// DDSP-SVC
threshold: number// DDSP-SVC
inputSampleRate: InputSampleRate inputSampleRate: InputSampleRate
enableDirectML: number enableDirectML: number
@ -243,8 +254,14 @@ export const DefaultServerSetting: ServerInfo = {
silenceFront: 1, silenceFront: 1,
modelSlotIndex: 0, modelSlotIndex: 0,
enableEnhancer: 0, useEnhancer: 0,
enhancerTune: 0, useDiff: 1,
useDiffDpm: 0,
useDiffSilence: 0,
diffAcc: 20,
diffSpkId: 1,
kStep: 120,
threshold: -45,
enableDirectML: 0, enableDirectML: 0,
// //
@ -276,7 +293,7 @@ export const DefaultServerSetting_so_vits_svc_40v2: ServerInfo = {
} }
export const DefaultServerSetting_DDSP_SVC: ServerInfo = { export const DefaultServerSetting_DDSP_SVC: ServerInfo = {
...DefaultServerSetting, dstId: 1, tran: 10, extraConvertSize: 1024 * 32, clusterInferRatio: 0.1, enableEnhancer: 1 ...DefaultServerSetting, dstId: 1, tran: 10, extraConvertSize: 1024 * 32
} }

View File

@ -177,12 +177,12 @@ class DDSP_SVC:
_audio, _model_sr = self.svc_model.infer( _audio, _model_sr = self.svc_model.infer(
input_wav, input_wav,
self.svc_model.args.data.sampling_rate, self.svc_model.args.data.sampling_rate,
spk_id=1, spk_id=self.settings.dstId,
threhold=-45, threhold=self.settings.threshold,
pitch_adjust=self.settings.tran, pitch_adjust=self.settings.tran,
use_spk_mix=False, use_spk_mix=False,
spk_mix_dict=None, spk_mix_dict=None,
use_enhancer=False, use_enhancer=True if self.settings.useEnhancer == 1 else False,
pitch_extractor_type=self.settings.f0Detector, pitch_extractor_type=self.settings.f0Detector,
f0_min=50, f0_min=50,
f0_max=1100, f0_max=1100,
@ -190,12 +190,14 @@ class DDSP_SVC:
safe_prefix_pad_length=self.settings.extraConvertSize safe_prefix_pad_length=self.settings.extraConvertSize
/ self.svc_model.args.data.sampling_rate, / self.svc_model.args.data.sampling_rate,
diff_model=self.diff_model, diff_model=self.diff_model,
diff_acc=20, # TBD なにこれ? diff_acc=self.settings.diffAcc, # TBD なにこれ?
diff_spk_id=1, diff_spk_id=self.settings.diffSpkId,
diff_use=True, diff_use=True if self.settings.useDiff == 1 else False,
diff_use_dpm=False, # TBD なにこれ? diff_use_dpm=True if self.settings.useDiffDpm == 1 else False, # TBD なにこれ?
k_step=120, # TBD なにこれ? k_step=self.settings.kStep, # TBD なにこれ?
diff_silence=False, # TBD なにこれ? diff_silence=True
if self.settings.useDiffSilence == 1
else False, # TBD なにこれ?
) )
return _audio.cpu().numpy() * 32768.0 return _audio.cpu().numpy() * 32768.0

View File

@ -13,8 +13,14 @@ class DDSP_SVCSettings:
silentThreshold: float = 0.00001 silentThreshold: float = 0.00001
extraConvertSize: int = 1024 * 32 extraConvertSize: int = 1024 * 32
enableEnhancer: int = 0 useEnhancer: int = 0
enhancerTune: int = 0 useDiff: int = 1
useDiffDpm: int = 0
useDiffSilence: int = 0
diffAcc: int = 20
diffSpkId: int = 1
kStep: int = 120
threshold: int = -45
framework: str = "PyTorch" # PyTorch or ONNX framework: str = "PyTorch" # PyTorch or ONNX
pyTorchModelFile: str = "" pyTorchModelFile: str = ""
@ -30,8 +36,13 @@ class DDSP_SVCSettings:
"dstId", "dstId",
"tran", "tran",
"extraConvertSize", "extraConvertSize",
"enableEnhancer", "useEnhancer",
"enhancerTune", "useDiff",
"useDiffDpm",
"useDiffSilence",
"diffAcc",
"diffSpkId",
"kStep",
] ]
floatData = ["silentThreshold"] floatData = ["silentThreshold"]
strData = ["framework", "f0Detector"] strData = ["framework", "f0Detector"]

View File

@ -125,6 +125,7 @@ def serverLocal(_vc):
audio_input_stream = None audio_input_stream = None
audio_output_stream = None audio_output_stream = None
showPerformanceTime = 0
while True: while True:
if ( if (
vc.settings.enableServerAudio == 0 vc.settings.enableServerAudio == 0
@ -165,19 +166,23 @@ def serverLocal(_vc):
currentOutputSampleRate, currentOutputSampleRate,
currentOutputBufferSize, currentOutputBufferSize,
) )
sampleNum = vc.settings.serverReadChunkSize * 128
in_wav = audio_input_stream.read( in_wav = audio_input_stream.read(sampleNum, exception_on_overflow=False)
vc.settings.serverReadChunkSize * 128, exception_on_overflow=False readNum = len(in_wav) // struct.calcsize("<h")
unpackedData = np.array(struct.unpack("<%sh" % readNum, in_wav)).astype(
np.int16
) )
unpackedData = np.array(
struct.unpack("<%sh" % (len(in_wav) // struct.calcsize("<h")), in_wav)
).astype(np.int16)
with Timer("all_inference_time") as t: with Timer("all_inference_time") as t:
out_wav, times = vc.on_request(unpackedData) out_wav, times = vc.on_request(unpackedData)
all_inference_time = t.secs all_inference_time = t.secs
performance = [all_inference_time] + times performance = [all_inference_time] + times
performance = [round(x, 2) * 1000 for x in performance] performance = [round(x * 1000) for x in performance]
vc.settings.performance = performance vc.settings.performance = performance
currentTime = time.time()
if currentTime - showPerformanceTime > 5:
print(sampleNum, readNum, performance)
showPerformanceTime = currentTime
audio_output_stream.write(out_wav.tobytes()) audio_output_stream.write(out_wav.tobytes())