remove old gui 3

This commit is contained in:
wataru 2023-06-24 11:52:37 +09:00
parent 6b4fe5a349
commit 767dfc520c
10 changed files with 22 additions and 255 deletions

File diff suppressed because one or more lines are too long

View File

@ -40,28 +40,7 @@ export const AppStateProvider = ({ children }: Props) => {
if (clientState.clientState.initialized) {
initializedRef.current = true
clientState.clientState.clientSetting.updateClientSetting({
...clientState.clientState.clientSetting.clientSetting, speakers: [
{
"id": 107,
"name": "user"
},
{
"id": 100,
"name": "ずんだもん"
},
{
"id": 101,
"name": "そら"
},
{
"id": 102,
"name": "めたん"
},
{
"id": 103,
"name": "つむぎ"
}
]
...clientState.clientState.clientSetting.clientSetting
})
}
}, [clientState.clientState.initialized])

View File

@ -1,40 +0,0 @@
export type LicenseInfo = {
name: string,
url: string
license: string,
licenseUrl: string
description: string
}
export const getLicenceInfo = (): LicenseInfo[] => {
return [
{
name: "VC Helper",
url: "https://github.com/w-okada/voice-changer",
license: "MIT",
licenseUrl: "https://raw.githubusercontent.com/w-okada/voice-changer/master/LICENSE",
description: ""
},
{
name: "MMVC",
url: "https://github.com/isletennos/MMVC_Trainer",
license: "MIT",
licenseUrl: "https://raw.githubusercontent.com/isletennos/MMVC_Trainer/main/LICENSE",
description: ""
},
{
name: "so-vits-svc",
url: "https://github.com/svc-develop-team/so-vits-svc",
license: "MIT",
licenseUrl: "https://github.com/svc-develop-team/so-vits-svc/blob/4.0/LICENSE",
description: ""
},
{
name: "ContentVec",
url: "https://github.com/auspicious3000/contentvec",
license: "MIT",
licenseUrl: "https://raw.githubusercontent.com/auspicious3000/contentvec/main/LICENSE",
description: ""
},
]
}

View File

@ -459,17 +459,6 @@ export const DefaultWorkletNodeSetting: WorkletNodeSetting = {
downSamplingMode: "average"
}
export const DefaultWorkletNodeSetting_so_vits_svc_40: WorkletNodeSetting = {
...DefaultWorkletNodeSetting, inputChunkNum: 128,
}
export const DefaultWorkletNodeSetting_DDSP_SVC: WorkletNodeSetting = {
...DefaultWorkletNodeSetting, inputChunkNum: 256,
}
export const DefaultWorkletNodeSetting_RVC: WorkletNodeSetting = {
...DefaultWorkletNodeSetting, inputChunkNum: 256,
}
///////////////////////
// クライアントセッティング
@ -479,15 +468,6 @@ export const SampleRate = {
} as const
export type SampleRate = typeof SampleRate[keyof typeof SampleRate]
export type Speaker = {
"id": number,
"name": string,
}
export type Correspondence = {
"sid": number,
"correspondence": number,
"dirname": string
}
export type VoiceChangerClientSetting = {
audioInput: string | MediaStream | null,
sampleRate: SampleRate, // 48000Hz
@ -495,8 +475,6 @@ export type VoiceChangerClientSetting = {
noiseSuppression: boolean,
noiseSuppression2: boolean
speakers: Speaker[],
correspondences: Correspondence[],
inputGain: number
outputGain: number
}
@ -504,29 +482,6 @@ export type VoiceChangerClientSetting = {
export const DefaultVoiceChangerClientSetting: VoiceChangerClientSetting = {
audioInput: null,
sampleRate: 48000,
speakers: [
{
"id": 0,
"name": "user"
},
{
"id": 101,
"name": "ずんだもん"
},
{
"id": 102,
"name": "そら"
},
{
"id": 103,
"name": "めたん"
},
{
"id": 104,
"name": "つむぎ"
}
],
correspondences: [],
echoCancel: false,
noiseSuppression: false,
noiseSuppression2: false,
@ -555,9 +510,7 @@ export const INDEXEDDB_DB_APP_NAME = "INDEXEDDB_KEY_VOICE_CHANGER"
export const INDEXEDDB_DB_NAME = "INDEXEDDB_KEY_VOICE_CHANGER_DB"
export const INDEXEDDB_KEY_CLIENT = "INDEXEDDB_KEY_VOICE_CHANGER_LIB_CLIENT"
export const INDEXEDDB_KEY_SERVER = "INDEXEDDB_KEY_VOICE_CHANGER_LIB_SERVER"
export const INDEXEDDB_KEY_WORKLETNODE = "INDEXEDDB_KEY_VOICE_CHANGER_LIB_WORKLETNODE"
export const INDEXEDDB_KEY_MODEL_DATA = "INDEXEDDB_KEY_VOICE_CHANGER_LIB_MODEL_DATA"
export const INDEXEDDB_KEY_WORKLET = "INDEXEDDB_KEY_VOICE_CHANGER_LIB_WORKLET"
// ONNX
@ -567,9 +520,6 @@ export type OnnxExporterInfo = {
"filename": string
}
export const MAX_MODEL_SLOT_NUM = 4
// Merge
export type MergeElement = {
filename: string

View File

@ -5,6 +5,7 @@ import { IndexedDBStateAndMethod, useIndexedDB } from "./useIndexedDB"
import { ServerSettingState, useServerSetting } from "./useServerSetting"
import { useWorkletNodeSetting, WorkletNodeSettingState } from "./useWorkletNodeSetting"
import { useWorkletSetting, WorkletSettingState } from "./useWorkletSetting"
import { DefaultVoiceChangerClientSetting, DefaultWorkletNodeSetting, DefaultWorkletSetting } from "../const"
export type UseClientProps = {
audioContext: AudioContext | null
@ -67,9 +68,9 @@ export const useClient = (props: UseClientProps): ClientState => {
// (1-2) 各種設定I/F
const clientSetting = useClientSetting({ voiceChangerClient, audioContext: props.audioContext })
const workletNodeSetting = useWorkletNodeSetting({ voiceChangerClient: voiceChangerClient })
const workletSetting = useWorkletSetting({ voiceChangerClient })
const clientSetting = useClientSetting({ voiceChangerClient, audioContext: props.audioContext, defaultVoiceChangerClientSetting: DefaultVoiceChangerClientSetting })
const workletNodeSetting = useWorkletNodeSetting({ voiceChangerClient: voiceChangerClient, defaultWorkletNodeSetting: DefaultWorkletNodeSetting })
const workletSetting = useWorkletSetting({ voiceChangerClient, defaultWorkletSetting: DefaultWorkletSetting })
const serverSetting = useServerSetting({ voiceChangerClient })
const indexedDBState = useIndexedDB({ clientType: null })
@ -179,9 +180,7 @@ export const useClient = (props: UseClientProps): ClientState => {
const clearSetting = async () => {
await clientSetting.clearSetting()
await workletNodeSetting.clearSetting()
await workletSetting.clearSetting()
// TBD
}
return {
@ -199,8 +198,6 @@ export const useClient = (props: UseClientProps): ClientState => {
performance,
updatePerformance,
// setClientType,
// 情報取得
getInfo,

View File

@ -1,17 +1,16 @@
import { useState, useMemo, useEffect } from "react"
import { useState, useMemo } from "react"
import { VoiceChangerClientSetting, DefaultVoiceChangerClientSetting, INDEXEDDB_KEY_CLIENT } from "../const"
import { VoiceChangerClientSetting } from "../const"
import { VoiceChangerClient } from "../VoiceChangerClient"
import { useIndexedDB } from "./useIndexedDB"
export type UseClientSettingProps = {
voiceChangerClient: VoiceChangerClient | null
audioContext: AudioContext | null
defaultVoiceChangerClientSetting: VoiceChangerClientSetting
}
export type ClientSettingState = {
clientSetting: VoiceChangerClientSetting;
clearSetting: () => Promise<void>
setServerUrl: (url: string) => void;
updateClientSetting: (clientSetting: VoiceChangerClientSetting) => void
@ -21,53 +20,7 @@ export type ClientSettingState = {
}
export const useClientSetting = (props: UseClientSettingProps): ClientSettingState => {
const [clientSetting, setClientSetting] = useState<VoiceChangerClientSetting>(DefaultVoiceChangerClientSetting)
const { setItem, getItem, removeItem } = useIndexedDB({ clientType: null })
// 初期化 その1 DBから取得
useEffect(() => {
const loadCache = async () => {
const setting = await getItem(INDEXEDDB_KEY_CLIENT) as VoiceChangerClientSetting
if (!setting) {
return
}
console.log("[ClientSetting] Load Setting from db", setting)
if (setting.audioInput == "null") {
setting.audioInput = null
}
if (setting) {
setClientSetting({ ...setting })
}
}
loadCache()
}, [])
// 初期化 その2 クライアントに設定
useEffect(() => {
const initialSetup = async () => {
if (!props.voiceChangerClient) return
try {
await props.voiceChangerClient.updateClientSetting(clientSetting)
} catch (e) {
console.error(e)
}
}
initialSetup()
}, [props.voiceChangerClient])
const storeSetting = async (setting: VoiceChangerClientSetting) => {
const storeData = { ...setting }
if (typeof storeData.audioInput != "string") {
storeData.audioInput = null
}
setItem(INDEXEDDB_KEY_CLIENT, storeData)
setClientSetting(setting)
}
const clearSetting = async () => {
await removeItem(INDEXEDDB_KEY_CLIENT)
}
const [clientSetting, setClientSetting] = useState<VoiceChangerClientSetting>(props.defaultVoiceChangerClientSetting)
//////////////
// 設定
@ -79,7 +32,7 @@ export const useClientSetting = (props: UseClientSettingProps): ClientSettingSta
const cur_v = clientSetting[k as keyof VoiceChangerClientSetting]
const new_v = _clientSetting[k as keyof VoiceChangerClientSetting]
if (cur_v != new_v) {
storeSetting(_clientSetting)
setClientSetting(_clientSetting)
await props.voiceChangerClient.updateClientSetting(_clientSetting)
break
}
@ -122,7 +75,6 @@ export const useClientSetting = (props: UseClientSettingProps): ClientSettingSta
return {
clientSetting,
clearSetting,
setServerUrl,
updateClientSetting,

View File

@ -1,16 +1,16 @@
import { useState, useMemo, useEffect } from "react"
import { useState, useMemo } from "react"
import { DefaultWorkletNodeSetting, INDEXEDDB_KEY_WORKLETNODE, WorkletNodeSetting } from "../const"
import { WorkletNodeSetting } from "../const"
import { VoiceChangerClient } from "../VoiceChangerClient"
import { useIndexedDB } from "./useIndexedDB"
export type UseWorkletNodeSettingProps = {
voiceChangerClient: VoiceChangerClient | null
defaultWorkletNodeSetting: WorkletNodeSetting
}
export type WorkletNodeSettingState = {
workletNodeSetting: WorkletNodeSetting;
clearSetting: () => Promise<void>
updateWorkletNodeSetting: (setting: WorkletNodeSetting) => void
startOutputRecording: () => void
stopOutputRecording: () => Promise<Float32Array>
@ -18,36 +18,8 @@ export type WorkletNodeSettingState = {
}
export const useWorkletNodeSetting = (props: UseWorkletNodeSettingProps): WorkletNodeSettingState => {
const defaultWorkletNodeSetting = useMemo(() => {
return DefaultWorkletNodeSetting
}, [])
const [workletNodeSetting, _setWorkletNodeSetting] = useState<WorkletNodeSetting>(defaultWorkletNodeSetting)
const { setItem, getItem, removeItem } = useIndexedDB({ clientType: null })
// 初期化 その1 DBから取得
useEffect(() => {
const loadCache = async () => {
const setting = await getItem(INDEXEDDB_KEY_WORKLETNODE) as WorkletNodeSetting
if (setting) {
_setWorkletNodeSetting({ ...setting, sendingSampleRate: 48000 }) // sample rateは時限措置
}
}
loadCache()
}, [])
// 初期化 その2 クライアントに設定
useEffect(() => {
if (!props.voiceChangerClient) return
props.voiceChangerClient.setServerUrl(workletNodeSetting.serverUrl)
props.voiceChangerClient.updateWorkletNodeSetting(workletNodeSetting)
}, [props.voiceChangerClient])
const clearSetting = async () => {
await removeItem(INDEXEDDB_KEY_WORKLETNODE)
}
const [workletNodeSetting, _setWorkletNodeSetting] = useState<WorkletNodeSetting>(props.defaultWorkletNodeSetting)
//////////////
// 設定
@ -61,7 +33,6 @@ export const useWorkletNodeSetting = (props: UseWorkletNodeSettingProps): Workle
const new_v = _workletNodeSetting[k as keyof WorkletNodeSetting]
if (cur_v != new_v) {
_setWorkletNodeSetting(_workletNodeSetting)
setItem(INDEXEDDB_KEY_WORKLETNODE, _workletNodeSetting)
props.voiceChangerClient.updateWorkletNodeSetting(_workletNodeSetting)
break
}
@ -92,7 +63,6 @@ export const useWorkletNodeSetting = (props: UseWorkletNodeSettingProps): Workle
return {
workletNodeSetting,
clearSetting,
updateWorkletNodeSetting,
startOutputRecording,
stopOutputRecording,

View File

@ -1,51 +1,20 @@
import { useState, useMemo, useEffect } from "react"
import { WorkletSetting, DefaultWorkletSetting, INDEXEDDB_KEY_WORKLET } from "../const";
import { WorkletSetting } from "../const";
import { VoiceChangerClient } from "../VoiceChangerClient";
import { useIndexedDB } from "./useIndexedDB";
export type UseWorkletSettingProps = {
voiceChangerClient: VoiceChangerClient | null
defaultWorkletSetting: WorkletSetting
}
export type WorkletSettingState = {
setting: WorkletSetting;
clearSetting: () => Promise<void>
setSetting: (setting: WorkletSetting) => void;
}
export const useWorkletSetting = (props: UseWorkletSettingProps): WorkletSettingState => {
const [setting, _setSetting] = useState<WorkletSetting>(DefaultWorkletSetting)
const { setItem, getItem, removeItem } = useIndexedDB({ clientType: null })
// DBから設定取得キャッシュによる初期化
useEffect(() => {
const loadCache = async () => {
const setting = await getItem(INDEXEDDB_KEY_WORKLET)
if (!setting) {
// デフォルト設定
const params = new URLSearchParams(location.search);
const colab = params.get("colab")
if (colab == "true") {
_setSetting({
numTrancateTreshold: 300,
volTrancateThreshold: 0.0005,
volTrancateLength: 32,
})
} else {
_setSetting({
numTrancateTreshold: 100,
volTrancateThreshold: 0.0005,
volTrancateLength: 32,
})
}
} else {
_setSetting({
...(setting as WorkletSetting)
})
}
}
loadCache()
}, [])
const [setting, _setSetting] = useState<WorkletSetting>(props.defaultWorkletSetting)
// クライアントへ設定反映 初期化, 設定変更
useEffect(() => {
@ -58,20 +27,11 @@ export const useWorkletSetting = (props: UseWorkletSettingProps): WorkletSetting
return (setting: WorkletSetting) => {
if (!props.voiceChangerClient) return
_setSetting(setting)
setItem(INDEXEDDB_KEY_WORKLET, setting)
}
}, [props.voiceChangerClient])
// その他 オペレーション
const clearSetting = async () => {
await removeItem(INDEXEDDB_KEY_WORKLET)
}
return {
setting,
clearSetting,
setSetting,
}
}

View File

@ -4,5 +4,4 @@ export * from "./VoiceChangerClient"
export * from "./util"
export * from "./hooks/useClient"
export * from "./hooks/useIndexedDB"
export * from "./License"
export * from "./hooks/useServerSetting"

View File

@ -74,7 +74,7 @@ class VoiceChangerWorkletProcessor extends AudioWorkletProcessor {
this.numTrancateTreshold = request.numTrancateTreshold
// this.volTrancateLength = request.volTrancateLength
// this.volTrancateThreshold = request.volTrancateThreshold
console.log("[worklet] worklet configured", request)
// console.log("[worklet] worklet configured", request)
return
} else if (request.requestType === "start") {
if (this.isRecording) {