1
This commit is contained in:
@@ -6,18 +6,17 @@ use axum::{
|
||||
ws::{Message as ClientWsMessage, WebSocket, WebSocketUpgrade},
|
||||
},
|
||||
http::{HeaderValue, StatusCode, header},
|
||||
response::{IntoResponse, Response},
|
||||
response::Response,
|
||||
};
|
||||
use futures_util::{SinkExt, StreamExt, TryStreamExt};
|
||||
use platform_speech::{
|
||||
AsrAudioConfig, AsrFrameKind, PublicSpeechConfig, PublicSpeechEndpoints, SpeechError,
|
||||
TtsAudioParams, TtsBidirectionClientEvent, TtsSseRequest, VolcengineSpeechClient,
|
||||
VolcengineSpeechConfig, build_asr_frame, build_asr_full_client_request,
|
||||
TtsAudioParams, TtsBidirectionClientEvent, TtsSseRequest, UpstreamWsError, UpstreamWsMessage,
|
||||
VolcengineSpeechClient, VolcengineSpeechConfig, build_asr_frame, build_asr_full_client_request,
|
||||
build_tts_bidirection_frame_from_client_event, default_asr_request_payload,
|
||||
parse_asr_response_frame, parse_tts_response_frame, tts_response_to_client_value,
|
||||
};
|
||||
use serde_json::{Value, json};
|
||||
use tokio_tungstenite::tungstenite::Message as UpstreamWsMessage;
|
||||
use tracing::{info, warn};
|
||||
|
||||
use crate::{
|
||||
@@ -249,12 +248,12 @@ async fn proxy_asr_websocket(socket: WebSocket, client: VolcengineSpeechClient,
|
||||
}
|
||||
Ok(UpstreamWsMessage::Text(text)) => {
|
||||
browser_sender
|
||||
.send(ClientWsMessage::Text(text))
|
||||
.send(ClientWsMessage::Text(text.to_string().into()))
|
||||
.await
|
||||
.map_err(map_client_ws_send_error)?;
|
||||
}
|
||||
Ok(UpstreamWsMessage::Close(close)) => {
|
||||
let _ = browser_sender.send(ClientWsMessage::Close(close)).await;
|
||||
Ok(UpstreamWsMessage::Close(_)) => {
|
||||
let _ = browser_sender.send(ClientWsMessage::Close(None)).await;
|
||||
break;
|
||||
}
|
||||
Ok(UpstreamWsMessage::Ping(bytes)) => {
|
||||
@@ -363,12 +362,12 @@ async fn proxy_tts_bidirection_websocket(socket: WebSocket, client: VolcengineSp
|
||||
}
|
||||
Ok(UpstreamWsMessage::Text(text)) => {
|
||||
browser_sender
|
||||
.send(ClientWsMessage::Text(text))
|
||||
.send(ClientWsMessage::Text(text.to_string().into()))
|
||||
.await
|
||||
.map_err(map_client_ws_send_error)?;
|
||||
}
|
||||
Ok(UpstreamWsMessage::Close(close)) => {
|
||||
let _ = browser_sender.send(ClientWsMessage::Close(close)).await;
|
||||
Ok(UpstreamWsMessage::Close(_)) => {
|
||||
let _ = browser_sender.send(ClientWsMessage::Close(None)).await;
|
||||
break;
|
||||
}
|
||||
Ok(UpstreamWsMessage::Ping(bytes)) => {
|
||||
@@ -451,7 +450,7 @@ fn map_speech_error(error: SpeechError) -> AppError {
|
||||
}
|
||||
}
|
||||
|
||||
fn map_ws_send_error(error: tokio_tungstenite::tungstenite::Error) -> SpeechError {
|
||||
fn map_ws_send_error(error: UpstreamWsError) -> SpeechError {
|
||||
SpeechError::Upstream(format!("发送火山语音 WebSocket 帧失败:{error}"))
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user