import struct from datetime import datetime import numpy as np import socketio from voice_changer.VoiceChangerManager import VoiceChangerManager import asyncio class MMVC_Namespace(socketio.AsyncNamespace): sid: int = 0 async def emitTo(self, data): timestamp = 0 audio1 = np.zeros(1).astype(np.int16) bin = struct.pack("<%sh" % len(audio1), *audio1) perf = data await self.emit("response", [timestamp, bin, perf], to=self.sid) def emit_coroutine(self, data): asyncio.run(self.emitTo(data)) def __init__(self, namespace: str, voiceChangerManager: VoiceChangerManager): super().__init__(namespace) self.voiceChangerManager = voiceChangerManager self.voiceChangerManager.voiceChanger.emitTo = self.emit_coroutine @classmethod def get_instance(cls, voiceChangerManager: VoiceChangerManager): if not hasattr(cls, "_instance"): cls._instance = cls("/test", voiceChangerManager) return cls._instance def on_connect(self, sid, environ): self.sid = sid print( "[{}] connet sid : {}".format( datetime.now().strftime("%Y-%m-%d %H:%M:%S"), sid ) ) pass async def on_request_message(self, sid, msg): self.sid = sid timestamp = int(msg[0]) data = msg[1] if isinstance(data, str): print(type(data)) print(data) await self.emit("response", [timestamp, 0], to=sid) else: unpackedData = np.array( struct.unpack("<%sh" % (len(data) // struct.calcsize("