mirror of
https://github.com/JefferyHcool/BiliNote.git
synced 2026-09-05 07:36:45 +08:00
feat(backend): 添加 Groq供应商支持并优化笔记生成流程- 在 builtin_providers.json 中添加 Groq 供应商信息
- 实现 GroqTranscriber 类以支持 Groq 语音转录服务 - 新增异常处理中间件以提高系统稳定性 - 优化笔记生成流程,增加错误处理和日志记录 - 添加思维导图功能和相关组件 -重构 Markdown 查看器以支持切换视图模式
This commit is contained in:
@@ -0,0 +1,52 @@
|
||||
from abc import ABC
|
||||
import os
|
||||
|
||||
from app.decorators.timeit import timeit
|
||||
from app.models.transcriber_model import TranscriptResult, TranscriptSegment
|
||||
from app.services.provider import ProviderService
|
||||
from app.transcriber.base import Transcriber
|
||||
from openai import OpenAI
|
||||
from dotenv import load_dotenv
|
||||
load_dotenv()
|
||||
|
||||
class GroqTranscriber(Transcriber, ABC):
|
||||
|
||||
|
||||
@timeit
|
||||
def transcript(self, file_path: str) -> TranscriptResult:
|
||||
provider = ProviderService.get_provider_by_id('groq')
|
||||
if not provider:
|
||||
raise Exception("Groq 供应商未配置,请配置以后使用。")
|
||||
client = OpenAI(
|
||||
api_key=provider.get('api_key'),
|
||||
base_url=provider.get('base_url')
|
||||
)
|
||||
filename = file_path
|
||||
|
||||
with open(filename, "rb") as file:
|
||||
transcription = client.audio.transcriptions.create(
|
||||
file=(filename, file.read()),
|
||||
model=os.getenv('GROQ_TRANSCRIBER_MODEL'),
|
||||
response_format="verbose_json",
|
||||
)
|
||||
print(transcription.text)
|
||||
print(transcription)
|
||||
segments = []
|
||||
full_text = ""
|
||||
|
||||
for seg in transcription.segments:
|
||||
text = seg.text.strip()
|
||||
full_text += text + " "
|
||||
segments.append(TranscriptSegment(
|
||||
start=seg.start,
|
||||
end=seg.end,
|
||||
text=text
|
||||
))
|
||||
|
||||
result = TranscriptResult(
|
||||
language=transcription.language,
|
||||
full_text=full_text.strip(),
|
||||
segments=segments,
|
||||
raw=transcription.to_dict()
|
||||
)
|
||||
return result
|
||||
Reference in New Issue
Block a user