mirror of
https://github.com/w-okada/voice-changer.git
synced 2025-02-09 03:37:51 +03:00
WIP: refactoring
This commit is contained in:
parent
15686caf50
commit
6b78c57204
@ -261,14 +261,7 @@ export class VoiceChangerClient {
|
|||||||
|
|
||||||
// configure worklet
|
// configure worklet
|
||||||
configureWorklet = (setting: WorkletSetting) => {
|
configureWorklet = (setting: WorkletSetting) => {
|
||||||
// const req: VoiceChangerWorkletProcessorRequest = {
|
console.log("configureWorklet", setting)
|
||||||
// requestType: "config",
|
|
||||||
// voice: new ArrayBuffer(1),
|
|
||||||
// numTrancateTreshold: setting.numTrancateTreshold,
|
|
||||||
// volTrancateThreshold: setting.volTrancateThreshold,
|
|
||||||
// volTrancateLength: setting.volTrancateLength
|
|
||||||
// }
|
|
||||||
// this.vcNode.postReceivedVoice(req)
|
|
||||||
this.vcNode.configure(setting)
|
this.vcNode.configure(setting)
|
||||||
}
|
}
|
||||||
startOutputRecordingWorklet = () => {
|
startOutputRecordingWorklet = () => {
|
||||||
|
@ -10,16 +10,20 @@ export type UseClientProps = {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export type ClientState = {
|
export type ClientState = {
|
||||||
|
// 各種設定I/Fへの参照
|
||||||
workletSetting: WorkletSettingState
|
workletSetting: WorkletSettingState
|
||||||
clientSetting: ClientSettingState
|
clientSetting: ClientSettingState
|
||||||
serverSetting: ServerSettingState
|
serverSetting: ServerSettingState
|
||||||
|
|
||||||
|
// モニタリングデータ
|
||||||
bufferingTime: number;
|
bufferingTime: number;
|
||||||
responseTime: number;
|
responseTime: number;
|
||||||
volume: number;
|
volume: number;
|
||||||
outputRecordData: Float32Array[] | null;
|
outputRecordData: Float32Array[] | null; // Serverから帰ってきたデータをレコードしたもの
|
||||||
|
|
||||||
|
// 情報取得
|
||||||
getInfo: () => Promise<void>
|
getInfo: () => Promise<void>
|
||||||
|
// 設定クリア
|
||||||
clearSetting: () => Promise<void>
|
clearSetting: () => Promise<void>
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -39,22 +43,20 @@ export const useClient = (props: UseClientProps): ClientState => {
|
|||||||
}, [])
|
}, [])
|
||||||
|
|
||||||
|
|
||||||
// (1-2) 各種設定
|
// (1-2) 各種設定I/F
|
||||||
const clientSetting = useClientSetting({ voiceChangerClient, audioContext: props.audioContext })
|
const clientSetting = useClientSetting({ voiceChangerClient, audioContext: props.audioContext })
|
||||||
const workletSetting = useWorkletSetting({ voiceChangerClient })
|
const workletSetting = useWorkletSetting({ voiceChangerClient })
|
||||||
const serverSetting = useServerSetting({ voiceChangerClient })
|
const serverSetting = useServerSetting({ voiceChangerClient })
|
||||||
|
|
||||||
// (1-3) ステータス
|
// (1-3) モニタリングデータ
|
||||||
const [bufferingTime, setBufferingTime] = useState<number>(0)
|
const [bufferingTime, setBufferingTime] = useState<number>(0)
|
||||||
const [responseTime, setResponseTime] = useState<number>(0)
|
const [responseTime, setResponseTime] = useState<number>(0)
|
||||||
const [volume, setVolume] = useState<number>(0)
|
const [volume, setVolume] = useState<number>(0)
|
||||||
const [outputRecordData, setOutputRecordData] = useState<Float32Array[] | null>(null)
|
const [outputRecordData, setOutputRecordData] = useState<Float32Array[] | null>(null)
|
||||||
|
|
||||||
|
|
||||||
// (1-4) エラーステータス
|
// (1-4) エラーステータス
|
||||||
const errorCountRef = useRef<number>(0)
|
const errorCountRef = useRef<number>(0)
|
||||||
|
|
||||||
|
|
||||||
// (2-1) 初期化処理
|
// (2-1) 初期化処理
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
const initialized = async () => {
|
const initialized = async () => {
|
||||||
@ -118,16 +120,21 @@ export const useClient = (props: UseClientProps): ClientState => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
return {
|
return {
|
||||||
|
// 各種設定I/Fへの参照
|
||||||
|
clientSetting,
|
||||||
|
workletSetting,
|
||||||
|
serverSetting,
|
||||||
|
|
||||||
|
// モニタリングデータ
|
||||||
bufferingTime,
|
bufferingTime,
|
||||||
responseTime,
|
responseTime,
|
||||||
volume,
|
volume,
|
||||||
outputRecordData,
|
outputRecordData,
|
||||||
|
|
||||||
|
// 情報取得
|
||||||
getInfo,
|
getInfo,
|
||||||
|
|
||||||
clientSetting,
|
// 設定クリア
|
||||||
workletSetting,
|
|
||||||
serverSetting,
|
|
||||||
clearSetting,
|
clearSetting,
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -316,52 +316,6 @@ export const useServerSetting = (props: UseServerSettingProps): ServerSettingSta
|
|||||||
}
|
}
|
||||||
}, [fileUploadSetting, props.voiceChangerClient])
|
}, [fileUploadSetting, props.voiceChangerClient])
|
||||||
|
|
||||||
// const _uploadFile = useMemo(() => {
|
|
||||||
// return async (file: File, onprogress: (progress: number, end: boolean) => void) => {
|
|
||||||
// if (!props.voiceChangerClient) return
|
|
||||||
// const num = await props.voiceChangerClient.uploadFile(file, onprogress)
|
|
||||||
// const res = await props.voiceChangerClient.concatUploadedFile(file, num)
|
|
||||||
// console.log("uploaded", num, res)
|
|
||||||
// }
|
|
||||||
// }, [props.voiceChangerClient])
|
|
||||||
// const loadModel = useMemo(() => {
|
|
||||||
// return async () => {
|
|
||||||
// if (!fileUploadSetting.pyTorchModel && !fileUploadSetting.onnxModel) {
|
|
||||||
// alert("PyTorchモデルとONNXモデルのどちらか一つ以上指定する必要があります。")
|
|
||||||
// return
|
|
||||||
// }
|
|
||||||
// if (!fileUploadSetting.configFile) {
|
|
||||||
// alert("Configファイルを指定する必要があります。")
|
|
||||||
// return
|
|
||||||
// }
|
|
||||||
// if (!props.voiceChangerClient) return
|
|
||||||
|
|
||||||
|
|
||||||
// setUploadProgress(0)
|
|
||||||
// setIsUploading(true)
|
|
||||||
// const models = [fileUploadSetting.pyTorchModel, fileUploadSetting.onnxModel].filter(x => { return x != null }) as File[]
|
|
||||||
// for (let i = 0; i < models.length; i++) {
|
|
||||||
// const progRate = 1 / models.length
|
|
||||||
// const progOffset = 100 * i * progRate
|
|
||||||
// await _uploadFile(models[i], (progress: number, _end: boolean) => {
|
|
||||||
// // console.log(progress * progRate + progOffset, end, progRate,)
|
|
||||||
// setUploadProgress(progress * progRate + progOffset)
|
|
||||||
// })
|
|
||||||
// }
|
|
||||||
|
|
||||||
// await _uploadFile(fileUploadSetting.configFile, (progress: number, end: boolean) => {
|
|
||||||
// console.log(progress, end)
|
|
||||||
// })
|
|
||||||
|
|
||||||
// await props.voiceChangerClient.loadModel(fileUploadSetting.configFile, fileUploadSetting.pyTorchModel, fileUploadSetting.onnxModel)
|
|
||||||
// setUploadProgress(0)
|
|
||||||
// setIsUploading(false)
|
|
||||||
// reloadServerInfo()
|
|
||||||
// }
|
|
||||||
// }, [fileUploadSetting, props.voiceChangerClient])
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
const reloadServerInfo = useMemo(() => {
|
const reloadServerInfo = useMemo(() => {
|
||||||
return async () => {
|
return async () => {
|
||||||
if (!props.voiceChangerClient) return
|
if (!props.voiceChangerClient) return
|
||||||
|
@ -48,21 +48,22 @@ export const useWorkletSetting = (props: UseWorkletSettingProps): WorkletSetting
|
|||||||
loadCache()
|
loadCache()
|
||||||
}, [])
|
}, [])
|
||||||
|
|
||||||
// 初期化 その2 クライアントに設定
|
// クライアントに設定 初期化, 設定変更
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (!props.voiceChangerClient) return
|
if (!props.voiceChangerClient) return
|
||||||
props.voiceChangerClient.configureWorklet(setting)
|
props.voiceChangerClient.configureWorklet(setting)
|
||||||
}, [props.voiceChangerClient, setting])
|
}, [props.voiceChangerClient, setting])
|
||||||
|
|
||||||
|
// 設定 _setSettingがトリガでuseEffectが呼ばれて、workletに設定が飛ぶ
|
||||||
const setSetting = useMemo(() => {
|
const setSetting = useMemo(() => {
|
||||||
return (setting: WorkletSetting) => {
|
return (setting: WorkletSetting) => {
|
||||||
if (!props.voiceChangerClient) return
|
if (!props.voiceChangerClient) return
|
||||||
props.voiceChangerClient.configureWorklet(setting)
|
|
||||||
_setSetting(setting)
|
_setSetting(setting)
|
||||||
setItem(INDEXEDDB_KEY_WORKLET, setting)
|
setItem(INDEXEDDB_KEY_WORKLET, setting)
|
||||||
}
|
}
|
||||||
}, [props.voiceChangerClient])
|
}, [props.voiceChangerClient])
|
||||||
|
|
||||||
|
// その他 オペレーション
|
||||||
const clearSetting = async () => {
|
const clearSetting = async () => {
|
||||||
await removeItem(INDEXEDDB_KEY_WORKLET)
|
await removeItem(INDEXEDDB_KEY_WORKLET)
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user