ferrazzipietro commited on
Commit
769f550
·
1 Parent(s): 73cbe81
.gitignore ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
 
1
+ .vscode/settings.json
2
+ __pycache__/
3
+ *.pt
4
+ *.model
5
+ venv/
6
+ .DS_Store
7
+ *.DS_Store
8
+ seamless_server/.DS_Store
9
+ seamless_server/models/.DS_Store
seamless_server/.DS_Store CHANGED
Binary files a/seamless_server/.DS_Store and b/seamless_server/.DS_Store differ
 
seamless_server/models/.DS_Store CHANGED
Binary files a/seamless_server/models/.DS_Store and b/seamless_server/models/.DS_Store differ
 
streaming-react-app/index.html CHANGED
@@ -2,9 +2,9 @@
2
  <html lang="en">
3
  <head>
4
  <meta charset="UTF-8" />
5
- <link rel="icon" type="image/svg+xml" href="/src/assets/illy.svg"/>
6
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
7
- <title>Illy's translator</title>
8
  </head>
9
  <body>
10
  <div id="root"></div>
 
2
  <html lang="en">
3
  <head>
4
  <meta charset="UTF-8" />
5
+ <link rel="icon" type="image/svg+xml" href="/src/assets/seamless.svg" />
6
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
7
+ <title>Seamless Translation</title>
8
  </head>
9
  <body>
10
  <div id="root"></div>
streaming-react-app/src/react-xr/ARButton 2.tsx ADDED
@@ -0,0 +1,89 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import * as THREE from 'three';
2
+ import {Button} from '@mui/material';
3
+ import {useCallback, useEffect, useState} from 'react';
4
+ import {BufferedSpeechPlayer} from '../createBufferedSpeechPlayer';
5
+
6
+ type Props = {
7
+ bufferedSpeechPlayer: BufferedSpeechPlayer;
8
+ renderer: THREE.WebGLRenderer | null;
9
+ onARVisible?: () => void;
10
+ onARHidden?: () => void;
11
+ };
12
+
13
+ export default function ARButton({
14
+ bufferedSpeechPlayer,
15
+ renderer,
16
+ onARVisible,
17
+ onARHidden,
18
+ }: Props) {
19
+ const [session, setSession] = useState<XRSession | null>(null);
20
+ const [supported, setSupported] = useState<boolean>(true);
21
+
22
+ useEffect(() => {
23
+ if (!navigator.xr) {
24
+ setSupported(false);
25
+ return;
26
+ }
27
+ navigator.xr.isSessionSupported('immersive-ar').then((supported) => {
28
+ setSupported(supported);
29
+ });
30
+ }, []);
31
+
32
+ const resetBuffers = useCallback(
33
+ (event: XRSessionEvent) => {
34
+ const session = event.target;
35
+ if (!(session instanceof XRSession)) {
36
+ return;
37
+ }
38
+ switch (session.visibilityState) {
39
+ case 'visible':
40
+ console.log('Restarting speech player, device is visible');
41
+ bufferedSpeechPlayer.stop();
42
+ bufferedSpeechPlayer.start();
43
+ onARVisible?.();
44
+ break;
45
+ case 'hidden':
46
+ console.log('Stopping speech player, device is hidden');
47
+ bufferedSpeechPlayer.stop();
48
+ bufferedSpeechPlayer.start();
49
+ onARHidden?.();
50
+ break;
51
+ }
52
+ },
53
+ [bufferedSpeechPlayer],
54
+ );
55
+
56
+ async function onSessionStarted(session: XRSession) {
57
+ setSession(session);
58
+
59
+ session.onvisibilitychange = resetBuffers;
60
+ session.onend = onSessionEnded;
61
+
62
+ await renderer.xr.setSession(session);
63
+ }
64
+
65
+ function onSessionEnded() {
66
+ setSession(null);
67
+ }
68
+
69
+ const onClick = () => {
70
+ if (session === null) {
71
+ navigator.xr!.requestSession('immersive-ar').then(onSessionStarted);
72
+ } else {
73
+ session.end();
74
+ }
75
+ };
76
+ return (
77
+ <Button
78
+ variant="contained"
79
+ onClick={onClick}
80
+ disabled={!supported || renderer == null}
81
+ sx={{mt: 1}}>
82
+ {supported
83
+ ? renderer != null
84
+ ? 'Enter AR'
85
+ : 'Initializing AR...'
86
+ : 'AR Not Supported'}
87
+ </Button>
88
+ );
89
+ }
streaming-react-app/src/types/RoomState 2.ts ADDED
@@ -0,0 +1,16 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ export type MemberID = string;
2
+
3
+ export type Member = {
4
+ client_id: MemberID;
5
+ session_id: string;
6
+ name: string;
7
+ connection_status: 'connected' | 'disconnected';
8
+ };
9
+
10
+ export type RoomState = {
11
+ activeTranscoders: number;
12
+ room_id: string;
13
+ members: Array<Member>;
14
+ listeners: Array<MemberID>;
15
+ speakers: Array<MemberID>;
16
+ };