diff --git a/backend/tts_asr.py b/backend/tts_asr.py
index f0ffe8d..c3d3a9d 100644
--- a/backend/tts_asr.py
+++ b/backend/tts_asr.py
@@ -214,10 +214,17 @@ async def tts_endpoint(req: TTSRequest):
# 编码 WAV 到内存
try:
+ import tempfile
import soundfile as sf
- bio = BytesIO()
- sf.write(bio, wav_data, sr, format="WAV")
- audio_bytes = bio.getvalue()
+ # soundfile 不支持直接写入 BytesIO,需要用临时文件
+ with tempfile.NamedTemporaryFile(suffix=".wav", delete=False) as tmp:
+ tmp_path = tmp.name
+ sf.write(tmp_path, wav_data, sr, format="WAV")
+ with open(tmp_path, "rb") as f:
+ audio_bytes = f.read()
+ # 清理临时文件
+ import os as _os
+ _os.unlink(tmp_path)
except Exception as e:
logger.exception("音频编码失败")
raise HTTPException(status_code=500, detail=f"音频编码失败: {e}")
diff --git a/src/components/UniverPreview.vue b/src/components/UniverPreview.vue
index e3fcdab..a724dc3 100644
--- a/src/components/UniverPreview.vue
+++ b/src/components/UniverPreview.vue
@@ -39,17 +39,18 @@
-
-
+
+
+
正在初始化 Univer 引擎...
+
提示:当前为空白预览模式
+
+
⚠
预览初始化失败
{{ error }}
-
提示:纯前端模式下仅支持空白文档创建。如需加载实际的 Office 文件内容,请确保后端服务已配置导入功能。
+
提示:当前为空白文档预览模式,Univer 开源版本不支持直接加载 Office 文件内容。
@@ -129,32 +130,35 @@ const loadDocumentIntoUniver = async (instance, blob, fileName, fmt) => {
const lowerFmt = (fmt || '').toLowerCase();
console.log(`[Univer] 开始加载文档: ${fileName}, 格式: ${lowerFmt}`);
- // 重要提示:Univer 纯前端模式不支持直接加载 DOCX/XLSX/PPTX 文件
- // 这些格式需要后端服务进行转换
+ // 重要说明:
+ // Univer 开源版本不支持直接导入 DOCX/XLSX/PPTX 文件
+ // 导入功能需要 @univerjs-pro/exchange-client(Pro 版本)
// 当前实现创建空白文档作为预览占位符
-
+
+ console.warn('[Univer] 开源版本不支持导入 Office 文件,创建空白文档');
+ console.warn('[Univer] 如需导入功能,请使用 Univer Pro 版本');
+
+ // Fallback: 创建空白文档
try {
- // 尝试创建对应格式的空白文档
if (lowerFmt === 'xlsx') {
await univerAPI.createWorkbook({});
console.log('[Univer] 创建空白 Excel 工作簿');
} else if (lowerFmt === 'pptx') {
- // PPTX: 尝试使用 Slides API,如果不可用则降级到 Docs
+ // 尝试 Slides API
if (typeof univerAPI.createUniverSlide === 'function') {
await univerAPI.createUniverSlide({});
console.log('[Univer] 创建空白 PPT 演示文稿');
} else {
await univerAPI.createUniverDoc({});
- console.log('[Univer] Slides API 不可用,创建空白文档');
+ console.log('[Univer] 创建空白文档(Slides API 不可用)');
}
} else {
- // DOCX 和默认情况
await univerAPI.createUniverDoc({});
console.log('[Univer] 创建空白 Word 文档');
}
} catch (e) {
console.error('[Univer] 创建文档失败:', e);
- throw new Error(`无法创建 ${lowerFmt.toUpperCase()} 文档: ${e.message}`);
+ throw new Error(`无法创建文档: ${e.message}`);
}
};