Saiyaswanth007 commited on
Commit
ffa6f25
·
1 Parent(s): d3215d5

audio_processor

Browse files
Files changed (2) hide show
  1. shared.py +1 -1
  2. test_websocket.py +20 -75
shared.py CHANGED
@@ -578,7 +578,7 @@ class RealtimeSpeakerDiarization:
578
  speaker_id = self.speaker_detector.current_speaker
579
  similarity = 1.0
580
 
581
- if len(self.audio_processor.audio_buffer) % (SAMPLE_RATE // 2) == 0: # Every 0.5 seconds
582
  embedding = self.audio_processor.extract_embedding_from_buffer()
583
  if embedding is not None:
584
  speaker_id, similarity = self.speaker_detector.add_embedding(embedding)
 
578
  speaker_id = self.speaker_detector.current_speaker
579
  similarity = 1.0
580
 
581
+ if len(self.audio_processor.audio_buffer) >= SAMPLE_RATE and (len(self.audio_processor.audio_buffer) - SAMPLE_RATE) % (SAMPLE_RATE // 2)==0:
582
  embedding = self.audio_processor.extract_embedding_from_buffer()
583
  if embedding is not None:
584
  speaker_id, similarity = self.speaker_detector.add_embedding(embedding)
test_websocket.py CHANGED
@@ -1,81 +1,26 @@
 
1
  import asyncio
2
  import websockets
3
  import json
4
- import numpy as np
5
- import time
6
 
7
- # Configuration
8
- HF_SPACE_URL = "https://androidguy-speaker-diarization.hf.space"
9
- RENDER_SIGNAL_URL = "wss://render-signal-audio.onrender.com/stream"
10
- WS_INFERENCE_ENDPOINT = f"wss://{HF_SPACE_URL.replace('https://', '')}/ws_inference"
11
- WS_RELAY_ENDPOINT = "wss://render-signal-audio.onrender.com/ws_relay"
 
 
 
 
 
 
 
12
 
13
- async def test_websocket_connections():
14
- print(f"Testing WebSocket connections...")
15
-
16
- # Test HF Space /ws_inference connection
17
- print(f"Connecting to {WS_INFERENCE_ENDPOINT}...")
18
- try:
19
- async with websockets.connect(WS_INFERENCE_ENDPOINT, ping_interval=30) as ws:
20
- print("Connected to HF Space inference WebSocket!")
21
-
22
- # Send test data (simulated audio)
23
- test_audio = np.zeros(1600, dtype=np.float32).tobytes()
24
- await ws.send(test_audio)
25
- print(f"Sent test audio data: {len(test_audio)} bytes")
26
-
27
- # Wait for response
28
- for _ in range(5): # Try to get 5 responses
29
- try:
30
- response = await asyncio.wait_for(ws.recv(), timeout=3.0)
31
- if isinstance(response, str):
32
- try:
33
- json_data = json.loads(response)
34
- print(f"Received JSON response: {json.dumps(json_data, indent=2)}")
35
- except json.JSONDecodeError:
36
- print(f"Received non-JSON response: {response[:500]}...")
37
- else:
38
- print(f"Received binary data: {len(response)} bytes")
39
- except asyncio.TimeoutError:
40
- print("No response received within timeout")
41
- break
42
-
43
- except Exception as e:
44
- print(f"Error connecting to HF Space WebSocket: {e}")
45
-
46
- # Test Render Signal WebSocket relay connection
47
- print(f"\nConnecting to {WS_RELAY_ENDPOINT}...")
48
- try:
49
- async with websockets.connect(WS_RELAY_ENDPOINT) as ws:
50
- print("Connected to Render Signal WebSocket relay!")
51
-
52
- # Send test configuration message
53
- test_config = {
54
- "type": "config",
55
- "client_id": f"test_client_{time.time()}",
56
- "test": True
57
- }
58
- await ws.send(json.dumps(test_config))
59
- print(f"Sent test config: {test_config}")
60
-
61
- # Wait for responses
62
- for _ in range(5): # Try to get 5 responses
63
- try:
64
- response = await asyncio.wait_for(ws.recv(), timeout=3.0)
65
- if isinstance(response, str):
66
- try:
67
- json_data = json.loads(response)
68
- print(f"Received JSON response: {json.dumps(json_data, indent=2)}")
69
- except json.JSONDecodeError:
70
- print(f"Received non-JSON response: {response[:500]}...")
71
- else:
72
- print(f"Received binary data: {len(response)} bytes")
73
- except asyncio.TimeoutError:
74
- print("No response received within timeout")
75
- break
76
- except Exception as e:
77
- print(f"Error connecting to Render Signal WebSocket: {e}")
78
 
79
- # Run tests for direct WebSocket communication
80
- if __name__ == "__main__":
81
- asyncio.run(test_websocket_connections())
 
1
+ import numpy as np
2
  import asyncio
3
  import websockets
4
  import json
 
 
5
 
6
+ async def test_ws():
7
+ uri = "wss://androidguy-speaker-diarization.hf.space/ws_inference"
8
+ async with websockets.connect(uri) as websocket:
9
+ print("Connected")
10
+
11
+ print(await websocket.recv()) # connection_established
12
+
13
+ for i in range(20):
14
+ # Generate random "noise" audio instead of silence
15
+ audio = (np.random.randn(3200) * 3000).astype(np.int16)
16
+ await websocket.send(audio.tobytes())
17
+ print(f"Sent audio chunk {i+1}/20")
18
 
19
+ try:
20
+ while True:
21
+ res = await asyncio.wait_for(websocket.recv(), timeout=10)
22
+ print("Received:", json.dumps(json.loads(res), indent=2))
23
+ except asyncio.TimeoutError:
24
+ print("[ERROR] No more responses (timeout)")
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
25
 
26
+ asyncio.run(test_ws())