0%

关键交互时序

sequenceDiagram
    participant User
    participant ASR
    participant LLM
    participant TTS

    User->>ASR: 说话
    ASR->>ASR: 实时识别
    ASR->>Main: 触发asr_callback
    Main->>ASR: 暂停识别
    Main->>LLM: 发送问题
    LLM->>TTS: 流式返回响应
    TTS->>TTS: 合成语音队列
    TTS->>Audio: 播放音频
    loop 等待播放完成
        Main->>TTS: 检查缓冲区状态
        TTS-->>Main: 状态反馈
    end
    Main->>ASR: 恢复识别

大语言模型测试的基本流程

graph TD
    A[程序启动] --> B[注册信号处理]
    B --> C[初始化PortAudio音频管理]
    C --> D[初始化LLM服务器]
    D --> E[设置LLM回调函数]
    E --> F[初始化ASR模块]
    F --> G[设置ASR回调函数]
    G --> H[启动ASR录音]
    H --> I[进入主循环休眠10分钟]

    subgraph 语音识别流程
        H --> J[ASR持续采集音频]
        J --> K{检测到有效语音?}
        K -- 是 --> L[暂停ASR录音]
        L --> M[发送文本到LLM服务器]
        K -- 否 --> J
    end

    subgraph LLM处理流程
        M --> N[LLM处理请求]
        N --> O[处理完成调用llm_server_callback]
        O --> P[记录响应内容]
        P --> Q[恢复ASR录音]
    end

    subgraph 信号处理流程
        R[用户按下Ctrl+C] --> S[触发signalHandler]
        S --> T[停止ASR服务]
        T --> U[释放资源]
        U --> V[退出程序]
    end

    I --> R
    Q --> J

前言

目前接手了llm大语言模型和语音合成和识别的工作这边需要查看之前编写的代码。

目前需要加入的功能是:

  1. 添加方言普通话修正环节:在语音识别将句子发送给大语言模型时先将原始识别句子送给大语言模型进行分析得到标准普通话结果后返回给大语言模型。

  2. 对于大语言模型医学问题不专业的问题,我尝试了华佗gpt后我发现还是没有很大的改变,因为医学问题十分的复杂不是三言两句和有限信息可以准确分析的。我这边的构想是涉及到医学专业问题减少类似与多少这样量词的使用,尽量以通识建议的口吻进行,而且一定要声明以医生诊断为准的免责声明。

  3. 我需要添加一段对固定内容的宣讲,这是死板的内容难度是不大的应该。

为了实现这些功能我需要学习和接手llm的代码目前看起来问题不算少,祝我好运!

目前运行问题总揽

无匹配输入设备

本来想用自己的耳机来进行测试发现这个错误

对deepseek.h的分析

类的定义
让我来瞅瞅DeepseekServer类里有什么。

其中定义了一个名为 DeepseekServer 的类,继承它自 LlmBase 类

然后定义静态成员变量和函数

其他都看看的差不多了补充个之前的知识盲点,其中的public:和private:是什么意思有什么作用说实话我还不太明白。

公开和私有

public:

  • 含义:

    1. public 表示类中的成员是公开的,可以在类的外部被访问。
  • 作用:

    1. 允许外部代码调用类中的 public 成员函数。
    2. 允许外部代码直接访问和修改类中的 public 成员变量。

private:

  • 含义:
    1. private 表示类中的成员是私有的,不能在类的外部直接访问。
  • 作用
    1. 隐藏类的内部实现细节,保护成员变量和函数不被外部代码随意访问和修改。
    2. 实现封装,确保类的内部状态的一致性和完整性,防止外部代码对类的内部机制产生依赖。

前言

为什么要写这个博客,因为在fastai课程中看到其中的一个观点:

开始写作吧!

我们的学生发现最有帮助巩固对这一材料的理解的事情之一是把它写下来。尝试教给别人是对你对一个主题的理解的最好测试。即使你从不向任何人展示你的写作,这也是有帮助的,但如果你分享了,那就更好了!因此,我们建议,如果你还没有开始写博客,那么现在就开始吧。现在你已经完成了这一章并学会了如何训练和部署模型,你已经可以写下你的第一篇关于深度学习之旅的博客文章了。你有什么惊讶?你在你的领域看到了深度学习的机会?你看到了什么障碍?

fast.ai 的联合创始人 Rachel Thomas 在文章“为什么你(是的,你)应该写博客”中写道:

我会给年轻的自己的最重要建议是尽早开始写博客。以下是一些写博客的理由:

  • 这就像一份简历,只不过更好。我知道有几个人因为写博客文章而得到了工作机会!
  • 帮助你学习。组织知识总是帮助我整合自己的想法。是否理解某事的一个测试是你是否能够向别人解释它。博客文章是一个很好的方式。
  • 我通过我的博客文章收到了参加会议的邀请和演讲邀请。我因为写了一篇关于我不喜欢 TensorFlow 的博客文章而被邀请参加 TensorFlow Dev Summit(太棒了!)。
  • 结识新朋友。我认识了几个回复我写的博客文章的人。
  • 节省时间。每当你通过电子邮件多次回答同一个问题时,你应该把它变成一篇博客文章,这样下次有人问起时你就更容易分享了。

也许她最重要的建议是:

你最适合帮助比你落后一步的人。这些材料仍然新鲜在你的脑海中。许多专家已经忘记了作为初学者(或中级学习者)时的感受,忘记了当你第一次听到这个话题时为什么难以理解。你特定背景、风格和知识水平的背景将为你所写的内容带来不同的视角。

我们已经提供了如何在附录 A 中设置博客的详细信息。如果你还没有博客,现在就看看吧,因为我们有一个非常好的方法让你免费开始写博客,没有广告,甚至可以使用 Jupyter Notebook!

上传blog方法

在md文件中写好了文档之后保存并放置在C:\Users\song\Desktop\blog\diary\source_posts文件夹中然后依次输入下列指令上传

1
$ hexo clean
1
$ hexo generate
1
$ hexo deploy

即可将文档上传到github

本地查看方法

1
$ hexo serve

神奇的我让ai帮我写了一个bat现在可以一键部署了
您别说别的还挺好用,倍地道,嘀嘀嘀地道到…………..

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
call hexo clean
if %errorlevel% neq 0 (
echo error:%errorlevel%
goto error
)

echo.
echo generate...
call hexo generate
if %errorlevel% neq 0 (
echo error:%errorlevel%
goto error
)

echo.
echo deploy...
call hexo deploy
if %errorlevel% neq 0 (
echo error:%errorlevel%
goto error
)

echo.
echo [Success] all Success!!
pause
exit /b 0

:error
echo.
echo ******************************
echo * fatal error! pls check log *
echo ******************************
pause
exit /b 1

有一说一其实应该再搞一个.sh的给linux用,但是无所谓了等要用的时候再让ai写吧。