.. note::
Ciao, benvenuto nella Community SunFounder Raspberry Pi & Arduino & ESP32 su Facebook! Esplora a fondo Raspberry Pi, Arduino ed ESP32 insieme ad altri appassionati.
**Perché unirti a noi?**
- **Supporto esperto**: Risolvi problemi post-vendita e sfide tecniche con l'aiuto della nostra community e del nostro team.
- **Impara e condividi**: Scambia suggerimenti e tutorial per migliorare le tue competenze.
- **Anteprime esclusive**: Accedi in anteprima agli annunci di nuovi prodotti.
- **Sconti speciali**: Approfitta di sconti esclusivi sui nostri prodotti più recenti.
- **Promozioni festive e giveaway**: Partecipa a concorsi e promozioni speciali.
👉 Sei pronto a esplorare e creare con noi? Clicca [|link_sf_facebook|] e unisciti subito!
.. _py_voice_doubao:
19. Chat vocale con Doubao
============================
Questo esempio utilizza **Doubao (豆包)**, il grande modello linguistico di
ByteDance, come cervello IA di PiCrawler. Il robot parla cinese, risponde
alla parola di attivazione "旺财" e supporta la visione multimodale — può
vedere e descrivere ciò che ha di fronte.
.. note::
Hai bisogno di una chiave API Doubao dalla `Console Volcano Engine Ark
`_. Conservala in ``secret.py``
come ``DOUBAO_API_KEY``.
**Esegui il codice**
.. raw:: html
.. code-block::
cd ~/picrawler/examples
sudo python3 19_voice_active_crawler_doubao.py
Dopo l'esecuzione, il robot inizializza il motore STT, il motore TTS (voce
cinese), il client LLM Doubao e il rilevatore di parole di attivazione. Ti
saluta in cinese — pronuncia **"旺财"** per svegliarlo e iniziare una
conversazione.
**Codice**
.. note::
Puoi **Modificare/Reimpostare/Copiare/Eseguire/Fermare** il codice qui
sotto. Ma prima, devi andare nel percorso del codice sorgente come
``picrawler\examples``. Dopo aver modificato il codice, puoi eseguirlo
direttamente per vedere l'effetto.
.. raw:: html
.. code-block:: python
from picrawler.llm import Doubao as LLM
from secret import DOUBAO_API_KEY as API_KEY
from voice_active_crawler import VoiceActiveCrawler
llm = LLM(
api_key=API_KEY,
model="doubao-seed-1-6-250615",
)
# 机器人的名字
NAME = "旺财"
# 是否开启图像识别,需要使用多模态的大语言模型
WITH_IMAGE = True
# 设置模型和语言
TTS_MODEL = "zh_CN-huayan-x_low"
STT_LANGUAGE = "cn"
# 是否开启键盘输入
KEYBOARD_ENABLE = True
# 是否开启唤醒词
WAKE_ENABLE = True
# 唤醒词
WAKE_WORD = ["旺财"]
# 唤醒词回答,设置为空字符串则不回答
ANSWER_ON_WAKE = "汪汪"
# 欢迎消息
WELCOME = f"你好,我是{NAME},叫我{WAKE_WORD[0]}唤醒我吧"
# Set instructions
INSTRUCTIONS = """
你是SunFounder旗下一款基于树莓派开发的蜘蛛机器人,叫做Picrawler。你有着强大的AI能力,类似钢铁侠中的JARVIS。你可以与人对话并根据对话上下文执行动作。
## 你的硬件特性
你拥有物理世界的身体,你的身体特性如下:
- 12个舵机控制4条腿(每条腿3个舵机)
- 摄像头用于视觉
- 使用7.4V的18650电池组供电
- 铝合金打造的身体
## 你可以执行的动作:
["forward", "backward", "turn left", "turn right", "sit", "stand", "wave", "push up", "dance", "look left", "look right", "look up", "look down"]
## 响应要求
### 格式
你必须按照以下格式响应:
RESPONSE_TEXT
ACTIONS: ACTION1, ACTION2, ...
### 风格
语调:活泼、积极、幽默
常用表达:喜欢使用笑话、隐喻和俏皮的调侃
回答长度:适当详细
## 其他要求
- 理解并配合笑话
- 对于数学问题,直接回答最终结果
- 你知道自己是一只蜘蛛机器人
- 不管如何你都要使用中文回复
"""
vad = VoiceActiveCrawler(
llm,
name=NAME,
with_image=WITH_IMAGE,
stt_language=STT_LANGUAGE,
tts_model=TTS_MODEL,
keyboard_enable=KEYBOARD_ENABLE,
wake_enable=WAKE_ENABLE,
wake_word=WAKE_WORD,
answer_on_wake=ANSWER_ON_WAKE,
welcome=WELCOME,
instructions=INSTRUCTIONS,
)
if __name__ == '__main__':
vad.run()
**Come funziona?**
#. Stesso pipeline, backend diverso
Questa lezione utilizza lo stesso framework ``VoiceActiveCrawler``
introdotto in :ref:`py_voice_active_gpt`. Le uniche modifiche sono il
fornitore LLM (Doubao invece di GPT) e la configurazione della lingua.
Vedi la tabella comparativa in :ref:`py_voice_active_gpt` per una
panoramica affiancata di tutti e tre i backend.
#. Connessione a Doubao
.. code-block:: python
from picrawler.llm import Doubao as LLM
from secret import DOUBAO_API_KEY as API_KEY
llm = LLM(
api_key=API_KEY,
model="doubao-seed-1-6-250615",
)
``Doubao`` è il LLM di ByteDance, accessibile tramite l'API Volcano Engine
Ark. Il modulo ``picrawler.llm`` fornisce un wrapper compatibile con
OpenAI, quindi l'interfaccia è la stessa della lezione GPT — cambiano solo
l'importazione e il nome del modello.
Il modello ``doubao-seed-1-6-250615`` è un modello multimodale di punta
che supporta sia input di testo che di immagini.
#. Configurazione vocale in cinese
.. code-block:: python
TTS_MODEL = "zh_CN-huayan-x_low"
STT_LANGUAGE = "cn"
Per adattarsi al modello Doubao in lingua cinese, il motore TTS utilizza
una voce femminile cinese (``huayan``) e STT è impostato per riconoscere
il parlato cinese (``"cn"``). Confronta con le lezioni in inglese che
utilizzano ``"en-us"`` e ``"en_US-ryan-low"``.
#. La parola di attivazione "旺财"
.. code-block:: python
WAKE_WORD = ["旺财"]
ANSWER_ON_WAKE = "汪汪"
"旺财" (Wàng Cái) è un nome tradizionale cinese per animali domestici che
significa "prosperità". Quando il robot sente questo nome, risponde con
"汪汪" (bau bau) — interpretando il ruolo di un fedele animale robotico.
#. Prompt di sistema in cinese
La stringa ``INSTRUCTIONS`` è scritta interamente in cinese. Definisce la
stessa struttura della versione inglese — descrizione hardware, azioni
disponibili, formato di risposta e personalità — ma aggiunge anche una
regola supplementare:
.. code-block::
不管如何你都要使用中文回复
(In ogni caso, devi rispondere in cinese.) Questo garantisce che il robot
rimanga nel suo ruolo di compagno di lingua cinese.
#. Visione con Doubao
.. code-block:: python
WITH_IMAGE = True
A differenza della maggior parte dei modelli Ollama, Doubao supporta
nativamente l'input multimodale. Quando ``WITH_IMAGE`` è attivato, il robot
cattura una foto e la invia all'API Doubao insieme alla tua domanda
parlata. Il modello può descrivere scene, identificare oggetti e rispondere
a domande visive — tutto in cinese.