mirror of
https://github.com/w-okada/voice-changer.git
synced 2025-02-02 16:23:58 +03:00
remove old gui 3
This commit is contained in:
parent
6b4fe5a349
commit
767dfc520c
4
client/demo/dist/index.js
vendored
4
client/demo/dist/index.js
vendored
File diff suppressed because one or more lines are too long
@ -40,28 +40,7 @@ export const AppStateProvider = ({ children }: Props) => {
|
|||||||
if (clientState.clientState.initialized) {
|
if (clientState.clientState.initialized) {
|
||||||
initializedRef.current = true
|
initializedRef.current = true
|
||||||
clientState.clientState.clientSetting.updateClientSetting({
|
clientState.clientState.clientSetting.updateClientSetting({
|
||||||
...clientState.clientState.clientSetting.clientSetting, speakers: [
|
...clientState.clientState.clientSetting.clientSetting
|
||||||
{
|
|
||||||
"id": 107,
|
|
||||||
"name": "user"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": 100,
|
|
||||||
"name": "ずんだもん"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": 101,
|
|
||||||
"name": "そら"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": 102,
|
|
||||||
"name": "めたん"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": 103,
|
|
||||||
"name": "つむぎ"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}, [clientState.clientState.initialized])
|
}, [clientState.clientState.initialized])
|
||||||
|
@ -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: ""
|
|
||||||
},
|
|
||||||
]
|
|
||||||
}
|
|
@ -459,17 +459,6 @@ export const DefaultWorkletNodeSetting: WorkletNodeSetting = {
|
|||||||
downSamplingMode: "average"
|
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
|
} as const
|
||||||
export type SampleRate = typeof SampleRate[keyof typeof SampleRate]
|
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 = {
|
export type VoiceChangerClientSetting = {
|
||||||
audioInput: string | MediaStream | null,
|
audioInput: string | MediaStream | null,
|
||||||
sampleRate: SampleRate, // 48000Hz
|
sampleRate: SampleRate, // 48000Hz
|
||||||
@ -495,8 +475,6 @@ export type VoiceChangerClientSetting = {
|
|||||||
noiseSuppression: boolean,
|
noiseSuppression: boolean,
|
||||||
noiseSuppression2: boolean
|
noiseSuppression2: boolean
|
||||||
|
|
||||||
speakers: Speaker[],
|
|
||||||
correspondences: Correspondence[],
|
|
||||||
inputGain: number
|
inputGain: number
|
||||||
outputGain: number
|
outputGain: number
|
||||||
}
|
}
|
||||||
@ -504,29 +482,6 @@ export type VoiceChangerClientSetting = {
|
|||||||
export const DefaultVoiceChangerClientSetting: VoiceChangerClientSetting = {
|
export const DefaultVoiceChangerClientSetting: VoiceChangerClientSetting = {
|
||||||
audioInput: null,
|
audioInput: null,
|
||||||
sampleRate: 48000,
|
sampleRate: 48000,
|
||||||
speakers: [
|
|
||||||
{
|
|
||||||
"id": 0,
|
|
||||||
"name": "user"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": 101,
|
|
||||||
"name": "ずんだもん"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": 102,
|
|
||||||
"name": "そら"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": 103,
|
|
||||||
"name": "めたん"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": 104,
|
|
||||||
"name": "つむぎ"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
correspondences: [],
|
|
||||||
echoCancel: false,
|
echoCancel: false,
|
||||||
noiseSuppression: false,
|
noiseSuppression: false,
|
||||||
noiseSuppression2: 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_DB_NAME = "INDEXEDDB_KEY_VOICE_CHANGER_DB"
|
||||||
export const INDEXEDDB_KEY_CLIENT = "INDEXEDDB_KEY_VOICE_CHANGER_LIB_CLIENT"
|
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_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_MODEL_DATA = "INDEXEDDB_KEY_VOICE_CHANGER_LIB_MODEL_DATA"
|
||||||
export const INDEXEDDB_KEY_WORKLET = "INDEXEDDB_KEY_VOICE_CHANGER_LIB_WORKLET"
|
|
||||||
|
|
||||||
|
|
||||||
// ONNX
|
// ONNX
|
||||||
@ -567,9 +520,6 @@ export type OnnxExporterInfo = {
|
|||||||
"filename": string
|
"filename": string
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
export const MAX_MODEL_SLOT_NUM = 4
|
|
||||||
|
|
||||||
// Merge
|
// Merge
|
||||||
export type MergeElement = {
|
export type MergeElement = {
|
||||||
filename: string
|
filename: string
|
||||||
|
@ -5,6 +5,7 @@ import { IndexedDBStateAndMethod, useIndexedDB } from "./useIndexedDB"
|
|||||||
import { ServerSettingState, useServerSetting } from "./useServerSetting"
|
import { ServerSettingState, useServerSetting } from "./useServerSetting"
|
||||||
import { useWorkletNodeSetting, WorkletNodeSettingState } from "./useWorkletNodeSetting"
|
import { useWorkletNodeSetting, WorkletNodeSettingState } from "./useWorkletNodeSetting"
|
||||||
import { useWorkletSetting, WorkletSettingState } from "./useWorkletSetting"
|
import { useWorkletSetting, WorkletSettingState } from "./useWorkletSetting"
|
||||||
|
import { DefaultVoiceChangerClientSetting, DefaultWorkletNodeSetting, DefaultWorkletSetting } from "../const"
|
||||||
|
|
||||||
export type UseClientProps = {
|
export type UseClientProps = {
|
||||||
audioContext: AudioContext | null
|
audioContext: AudioContext | null
|
||||||
@ -67,9 +68,9 @@ export const useClient = (props: UseClientProps): ClientState => {
|
|||||||
|
|
||||||
|
|
||||||
// (1-2) 各種設定I/F
|
// (1-2) 各種設定I/F
|
||||||
const clientSetting = useClientSetting({ voiceChangerClient, audioContext: props.audioContext })
|
const clientSetting = useClientSetting({ voiceChangerClient, audioContext: props.audioContext, defaultVoiceChangerClientSetting: DefaultVoiceChangerClientSetting })
|
||||||
const workletNodeSetting = useWorkletNodeSetting({ voiceChangerClient: voiceChangerClient })
|
const workletNodeSetting = useWorkletNodeSetting({ voiceChangerClient: voiceChangerClient, defaultWorkletNodeSetting: DefaultWorkletNodeSetting })
|
||||||
const workletSetting = useWorkletSetting({ voiceChangerClient })
|
const workletSetting = useWorkletSetting({ voiceChangerClient, defaultWorkletSetting: DefaultWorkletSetting })
|
||||||
const serverSetting = useServerSetting({ voiceChangerClient })
|
const serverSetting = useServerSetting({ voiceChangerClient })
|
||||||
const indexedDBState = useIndexedDB({ clientType: null })
|
const indexedDBState = useIndexedDB({ clientType: null })
|
||||||
|
|
||||||
@ -179,9 +180,7 @@ export const useClient = (props: UseClientProps): ClientState => {
|
|||||||
|
|
||||||
|
|
||||||
const clearSetting = async () => {
|
const clearSetting = async () => {
|
||||||
await clientSetting.clearSetting()
|
// TBD
|
||||||
await workletNodeSetting.clearSetting()
|
|
||||||
await workletSetting.clearSetting()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return {
|
return {
|
||||||
@ -199,8 +198,6 @@ export const useClient = (props: UseClientProps): ClientState => {
|
|||||||
performance,
|
performance,
|
||||||
updatePerformance,
|
updatePerformance,
|
||||||
|
|
||||||
// setClientType,
|
|
||||||
|
|
||||||
// 情報取得
|
// 情報取得
|
||||||
getInfo,
|
getInfo,
|
||||||
|
|
||||||
|
@ -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 { VoiceChangerClient } from "../VoiceChangerClient"
|
||||||
import { useIndexedDB } from "./useIndexedDB"
|
|
||||||
|
|
||||||
export type UseClientSettingProps = {
|
export type UseClientSettingProps = {
|
||||||
voiceChangerClient: VoiceChangerClient | null
|
voiceChangerClient: VoiceChangerClient | null
|
||||||
audioContext: AudioContext | null
|
audioContext: AudioContext | null
|
||||||
|
defaultVoiceChangerClientSetting: VoiceChangerClientSetting
|
||||||
}
|
}
|
||||||
|
|
||||||
export type ClientSettingState = {
|
export type ClientSettingState = {
|
||||||
clientSetting: VoiceChangerClientSetting;
|
clientSetting: VoiceChangerClientSetting;
|
||||||
clearSetting: () => Promise<void>
|
|
||||||
setServerUrl: (url: string) => void;
|
setServerUrl: (url: string) => void;
|
||||||
updateClientSetting: (clientSetting: VoiceChangerClientSetting) => void
|
updateClientSetting: (clientSetting: VoiceChangerClientSetting) => void
|
||||||
|
|
||||||
@ -21,53 +20,7 @@ export type ClientSettingState = {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export const useClientSetting = (props: UseClientSettingProps): ClientSettingState => {
|
export const useClientSetting = (props: UseClientSettingProps): ClientSettingState => {
|
||||||
const [clientSetting, setClientSetting] = useState<VoiceChangerClientSetting>(DefaultVoiceChangerClientSetting)
|
const [clientSetting, setClientSetting] = useState<VoiceChangerClientSetting>(props.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)
|
|
||||||
}
|
|
||||||
|
|
||||||
//////////////
|
//////////////
|
||||||
// 設定
|
// 設定
|
||||||
@ -79,7 +32,7 @@ export const useClientSetting = (props: UseClientSettingProps): ClientSettingSta
|
|||||||
const cur_v = clientSetting[k as keyof VoiceChangerClientSetting]
|
const cur_v = clientSetting[k as keyof VoiceChangerClientSetting]
|
||||||
const new_v = _clientSetting[k as keyof VoiceChangerClientSetting]
|
const new_v = _clientSetting[k as keyof VoiceChangerClientSetting]
|
||||||
if (cur_v != new_v) {
|
if (cur_v != new_v) {
|
||||||
storeSetting(_clientSetting)
|
setClientSetting(_clientSetting)
|
||||||
await props.voiceChangerClient.updateClientSetting(_clientSetting)
|
await props.voiceChangerClient.updateClientSetting(_clientSetting)
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
@ -122,7 +75,6 @@ export const useClientSetting = (props: UseClientSettingProps): ClientSettingSta
|
|||||||
|
|
||||||
return {
|
return {
|
||||||
clientSetting,
|
clientSetting,
|
||||||
clearSetting,
|
|
||||||
setServerUrl,
|
setServerUrl,
|
||||||
updateClientSetting,
|
updateClientSetting,
|
||||||
|
|
||||||
|
@ -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 { VoiceChangerClient } from "../VoiceChangerClient"
|
||||||
import { useIndexedDB } from "./useIndexedDB"
|
|
||||||
|
|
||||||
export type UseWorkletNodeSettingProps = {
|
export type UseWorkletNodeSettingProps = {
|
||||||
voiceChangerClient: VoiceChangerClient | null
|
voiceChangerClient: VoiceChangerClient | null
|
||||||
|
defaultWorkletNodeSetting: WorkletNodeSetting
|
||||||
}
|
}
|
||||||
|
|
||||||
export type WorkletNodeSettingState = {
|
export type WorkletNodeSettingState = {
|
||||||
workletNodeSetting: WorkletNodeSetting;
|
workletNodeSetting: WorkletNodeSetting;
|
||||||
clearSetting: () => Promise<void>
|
|
||||||
updateWorkletNodeSetting: (setting: WorkletNodeSetting) => void
|
updateWorkletNodeSetting: (setting: WorkletNodeSetting) => void
|
||||||
startOutputRecording: () => void
|
startOutputRecording: () => void
|
||||||
stopOutputRecording: () => Promise<Float32Array>
|
stopOutputRecording: () => Promise<Float32Array>
|
||||||
@ -18,36 +18,8 @@ export type WorkletNodeSettingState = {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export const useWorkletNodeSetting = (props: UseWorkletNodeSettingProps): WorkletNodeSettingState => {
|
export const useWorkletNodeSetting = (props: UseWorkletNodeSettingProps): WorkletNodeSettingState => {
|
||||||
const defaultWorkletNodeSetting = useMemo(() => {
|
|
||||||
return DefaultWorkletNodeSetting
|
|
||||||
}, [])
|
|
||||||
|
|
||||||
const [workletNodeSetting, _setWorkletNodeSetting] = useState<WorkletNodeSetting>(defaultWorkletNodeSetting)
|
const [workletNodeSetting, _setWorkletNodeSetting] = useState<WorkletNodeSetting>(props.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)
|
|
||||||
}
|
|
||||||
|
|
||||||
//////////////
|
//////////////
|
||||||
// 設定
|
// 設定
|
||||||
@ -61,7 +33,6 @@ export const useWorkletNodeSetting = (props: UseWorkletNodeSettingProps): Workle
|
|||||||
const new_v = _workletNodeSetting[k as keyof WorkletNodeSetting]
|
const new_v = _workletNodeSetting[k as keyof WorkletNodeSetting]
|
||||||
if (cur_v != new_v) {
|
if (cur_v != new_v) {
|
||||||
_setWorkletNodeSetting(_workletNodeSetting)
|
_setWorkletNodeSetting(_workletNodeSetting)
|
||||||
setItem(INDEXEDDB_KEY_WORKLETNODE, _workletNodeSetting)
|
|
||||||
props.voiceChangerClient.updateWorkletNodeSetting(_workletNodeSetting)
|
props.voiceChangerClient.updateWorkletNodeSetting(_workletNodeSetting)
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
@ -92,7 +63,6 @@ export const useWorkletNodeSetting = (props: UseWorkletNodeSettingProps): Workle
|
|||||||
|
|
||||||
return {
|
return {
|
||||||
workletNodeSetting,
|
workletNodeSetting,
|
||||||
clearSetting,
|
|
||||||
updateWorkletNodeSetting,
|
updateWorkletNodeSetting,
|
||||||
startOutputRecording,
|
startOutputRecording,
|
||||||
stopOutputRecording,
|
stopOutputRecording,
|
||||||
|
@ -1,51 +1,20 @@
|
|||||||
import { useState, useMemo, useEffect } from "react"
|
import { useState, useMemo, useEffect } from "react"
|
||||||
import { WorkletSetting, DefaultWorkletSetting, INDEXEDDB_KEY_WORKLET } from "../const";
|
import { WorkletSetting } from "../const";
|
||||||
import { VoiceChangerClient } from "../VoiceChangerClient";
|
import { VoiceChangerClient } from "../VoiceChangerClient";
|
||||||
import { useIndexedDB } from "./useIndexedDB";
|
|
||||||
|
|
||||||
export type UseWorkletSettingProps = {
|
export type UseWorkletSettingProps = {
|
||||||
voiceChangerClient: VoiceChangerClient | null
|
voiceChangerClient: VoiceChangerClient | null
|
||||||
|
defaultWorkletSetting: WorkletSetting
|
||||||
}
|
}
|
||||||
|
|
||||||
export type WorkletSettingState = {
|
export type WorkletSettingState = {
|
||||||
setting: WorkletSetting;
|
setting: WorkletSetting;
|
||||||
clearSetting: () => Promise<void>
|
|
||||||
setSetting: (setting: WorkletSetting) => void;
|
setSetting: (setting: WorkletSetting) => void;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
export const useWorkletSetting = (props: UseWorkletSettingProps): WorkletSettingState => {
|
export const useWorkletSetting = (props: UseWorkletSettingProps): WorkletSettingState => {
|
||||||
const [setting, _setSetting] = useState<WorkletSetting>(DefaultWorkletSetting)
|
const [setting, _setSetting] = useState<WorkletSetting>(props.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()
|
|
||||||
}, [])
|
|
||||||
|
|
||||||
// クライアントへ設定反映 初期化, 設定変更
|
// クライアントへ設定反映 初期化, 設定変更
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
@ -58,20 +27,11 @@ export const useWorkletSetting = (props: UseWorkletSettingProps): WorkletSetting
|
|||||||
return (setting: WorkletSetting) => {
|
return (setting: WorkletSetting) => {
|
||||||
if (!props.voiceChangerClient) return
|
if (!props.voiceChangerClient) return
|
||||||
_setSetting(setting)
|
_setSetting(setting)
|
||||||
setItem(INDEXEDDB_KEY_WORKLET, setting)
|
|
||||||
}
|
}
|
||||||
}, [props.voiceChangerClient])
|
}, [props.voiceChangerClient])
|
||||||
|
|
||||||
// その他 オペレーション
|
|
||||||
const clearSetting = async () => {
|
|
||||||
await removeItem(INDEXEDDB_KEY_WORKLET)
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
return {
|
return {
|
||||||
setting,
|
setting,
|
||||||
clearSetting,
|
|
||||||
setSetting,
|
setSetting,
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -4,5 +4,4 @@ export * from "./VoiceChangerClient"
|
|||||||
export * from "./util"
|
export * from "./util"
|
||||||
export * from "./hooks/useClient"
|
export * from "./hooks/useClient"
|
||||||
export * from "./hooks/useIndexedDB"
|
export * from "./hooks/useIndexedDB"
|
||||||
export * from "./License"
|
|
||||||
export * from "./hooks/useServerSetting"
|
export * from "./hooks/useServerSetting"
|
@ -74,7 +74,7 @@ class VoiceChangerWorkletProcessor extends AudioWorkletProcessor {
|
|||||||
this.numTrancateTreshold = request.numTrancateTreshold
|
this.numTrancateTreshold = request.numTrancateTreshold
|
||||||
// this.volTrancateLength = request.volTrancateLength
|
// this.volTrancateLength = request.volTrancateLength
|
||||||
// this.volTrancateThreshold = request.volTrancateThreshold
|
// this.volTrancateThreshold = request.volTrancateThreshold
|
||||||
console.log("[worklet] worklet configured", request)
|
// console.log("[worklet] worklet configured", request)
|
||||||
return
|
return
|
||||||
} else if (request.requestType === "start") {
|
} else if (request.requestType === "start") {
|
||||||
if (this.isRecording) {
|
if (this.isRecording) {
|
||||||
|
Loading…
Reference in New Issue
Block a user