Spaces:
Sleeping
Sleeping
matrix
commited on
Commit
·
8727fc5
1
Parent(s):
e0fee6e
fix: message form
Browse files- src/lib.rs +14 -7
src/lib.rs
CHANGED
@@ -40,13 +40,15 @@ impl Context {
|
|
40 |
}
|
41 |
}
|
42 |
|
|
|
43 |
#[derive(Serialize, Deserialize, Debug)]
|
|
|
44 |
pub enum SingleEvent {
|
45 |
#[serde(rename = "original")]
|
46 |
Transcription {
|
47 |
content: String,
|
48 |
#[serde(rename = "isFinal")]
|
49 |
-
is_final: bool
|
50 |
},
|
51 |
#[serde(rename = "translated")]
|
52 |
Translation { content: String },
|
@@ -71,7 +73,7 @@ pub enum LiveLessonTextEvent {
|
|
71 |
Transcription {
|
72 |
content: String,
|
73 |
#[serde(rename = "isFinal")]
|
74 |
-
is_final: bool
|
75 |
},
|
76 |
Translation { content: String },
|
77 |
LipSync { visemes: Vec<Viseme> },
|
@@ -105,7 +107,7 @@ async fn stream_speaker(
|
|
105 |
let _ = socket
|
106 |
.send(Message::Text(format!("invalid language code: {}", query.language)))
|
107 |
.await;
|
108 |
-
return
|
109 |
};
|
110 |
let lesson = lessons_manager
|
111 |
.create_lesson(
|
@@ -254,8 +256,13 @@ async fn stream_listener(
|
|
254 |
})
|
255 |
}
|
256 |
|
|
|
|
|
|
|
|
|
257 |
#[derive(Deserialize, Debug)]
|
258 |
pub struct SingleQuery {
|
|
|
259 |
id: LessonID,
|
260 |
from: String,
|
261 |
to: String,
|
@@ -267,7 +274,7 @@ pub struct SingleQuery {
|
|
267 |
pub async fn stream_single(
|
268 |
ctx: Data<&Context>,
|
269 |
query: Query<SingleQuery>,
|
270 |
-
ws: WebSocket
|
271 |
) -> impl IntoResponse {
|
272 |
let lessons_manager = ctx.lessons_manager.clone();
|
273 |
ws.on_upgrade(|mut socket| async move {
|
@@ -275,7 +282,7 @@ pub async fn stream_single(
|
|
275 |
let _ = socket
|
276 |
.send(Message::Text(format!("invalid language code: {}", query.from)))
|
277 |
.await;
|
278 |
-
return
|
279 |
};
|
280 |
let lesson = lessons_manager
|
281 |
.create_lesson(
|
@@ -292,7 +299,7 @@ pub async fn stream_single(
|
|
292 |
let _ = socket
|
293 |
.send(Message::Text(format!("invalid voice id: {:?}", query.voice)))
|
294 |
.await;
|
295 |
-
return
|
296 |
};
|
297 |
let mut voice_lesson = lang_lesson.get_or_init(voice_id).await;
|
298 |
let mut voice_rx = voice_lesson.voice_channel();
|
@@ -334,7 +341,7 @@ pub async fn stream_single(
|
|
334 |
|
335 |
let Ok(json) = serde_json::to_string(&evt) else {
|
336 |
tracing::warn!("failed to serialize json: {:?}", evt);
|
337 |
-
continue
|
338 |
};
|
339 |
socket.send(Message::Text(json)).await?
|
340 |
}
|
|
|
40 |
}
|
41 |
}
|
42 |
|
43 |
+
|
44 |
#[derive(Serialize, Deserialize, Debug)]
|
45 |
+
#[serde(tag = "type")]
|
46 |
pub enum SingleEvent {
|
47 |
#[serde(rename = "original")]
|
48 |
Transcription {
|
49 |
content: String,
|
50 |
#[serde(rename = "isFinal")]
|
51 |
+
is_final: bool,
|
52 |
},
|
53 |
#[serde(rename = "translated")]
|
54 |
Translation { content: String },
|
|
|
73 |
Transcription {
|
74 |
content: String,
|
75 |
#[serde(rename = "isFinal")]
|
76 |
+
is_final: bool,
|
77 |
},
|
78 |
Translation { content: String },
|
79 |
LipSync { visemes: Vec<Viseme> },
|
|
|
107 |
let _ = socket
|
108 |
.send(Message::Text(format!("invalid language code: {}", query.language)))
|
109 |
.await;
|
110 |
+
return;
|
111 |
};
|
112 |
let lesson = lessons_manager
|
113 |
.create_lesson(
|
|
|
256 |
})
|
257 |
}
|
258 |
|
259 |
+
fn default_lesson_id() -> String {
|
260 |
+
String::from("1")
|
261 |
+
}
|
262 |
+
|
263 |
#[derive(Deserialize, Debug)]
|
264 |
pub struct SingleQuery {
|
265 |
+
#[serde(default = "default_lesson_id")]
|
266 |
id: LessonID,
|
267 |
from: String,
|
268 |
to: String,
|
|
|
274 |
pub async fn stream_single(
|
275 |
ctx: Data<&Context>,
|
276 |
query: Query<SingleQuery>,
|
277 |
+
ws: WebSocket,
|
278 |
) -> impl IntoResponse {
|
279 |
let lessons_manager = ctx.lessons_manager.clone();
|
280 |
ws.on_upgrade(|mut socket| async move {
|
|
|
282 |
let _ = socket
|
283 |
.send(Message::Text(format!("invalid language code: {}", query.from)))
|
284 |
.await;
|
285 |
+
return;
|
286 |
};
|
287 |
let lesson = lessons_manager
|
288 |
.create_lesson(
|
|
|
299 |
let _ = socket
|
300 |
.send(Message::Text(format!("invalid voice id: {:?}", query.voice)))
|
301 |
.await;
|
302 |
+
return;
|
303 |
};
|
304 |
let mut voice_lesson = lang_lesson.get_or_init(voice_id).await;
|
305 |
let mut voice_rx = voice_lesson.voice_channel();
|
|
|
341 |
|
342 |
let Ok(json) = serde_json::to_string(&evt) else {
|
343 |
tracing::warn!("failed to serialize json: {:?}", evt);
|
344 |
+
continue;
|
345 |
};
|
346 |
socket.send(Message::Text(json)).await?
|
347 |
}
|