Instructions to use MoYoYoTech/VoiceDialogue with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use MoYoYoTech/VoiceDialogue with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("text-to-speech", model="MoYoYoTech/VoiceDialogue")# pip install -U transformers accelerate # Load model directly from transformers import AutoModel model = AutoModel.from_pretrained("MoYoYoTech/VoiceDialogue", device_map="auto") - Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- llama.cpp
How to use MoYoYoTech/VoiceDialogue with llama.cpp:
Install (macOS, Linux)
curl -LsSf https://llama.app/install.sh | sh # Start a local OpenAI-compatible server with a web UI: llama serve -hf MoYoYoTech/VoiceDialogue:Q6_K # Run inference directly in the terminal: llama cli -hf MoYoYoTech/VoiceDialogue:Q6_K
Install from WinGet (Windows)
winget install llama.cpp # Start a local OpenAI-compatible server with a web UI: llama serve -hf MoYoYoTech/VoiceDialogue:Q6_K # Run inference directly in the terminal: llama cli -hf MoYoYoTech/VoiceDialogue:Q6_K
Build from source code
git clone https://github.com/ggml-org/llama.cpp.git cd llama.cpp cmake -B build cmake --build build -j --target llama-app # Start a local OpenAI-compatible server with a web UI: ./build/bin/llama serve -hf MoYoYoTech/VoiceDialogue:Q6_K # Run inference directly in the terminal: ./build/bin/llama cli -hf MoYoYoTech/VoiceDialogue:Q6_K
Use Docker
docker model run hf.co/MoYoYoTech/VoiceDialogue:Q6_K
- Llama new
- LM Studio
- Jan
- Ollama
How to use MoYoYoTech/VoiceDialogue with Ollama:
ollama run hf.co/MoYoYoTech/VoiceDialogue:Q6_K
- Unsloth Desktop
- Pi
How to use MoYoYoTech/VoiceDialogue with Pi:
Start the llama.cpp server
# Install llama.cpp: brew install llama.cpp # Start a local OpenAI-compatible server: llama serve -hf MoYoYoTech/VoiceDialogue:Q6_K
Configure the model in Pi
# Install Pi: npm install -g @earendil-works/pi-coding-agent # Add to ~/.pi/agent/models.json: { "providers": { "llama-cpp": { "baseUrl": "http://localhost:8080/v1", "api": "openai-completions", "apiKey": "none", "models": [ { "id": "MoYoYoTech/VoiceDialogue:Q6_K" } ] } } }Run Pi
# Start Pi in your project directory: pi
- Docker Model Runner
How to use MoYoYoTech/VoiceDialogue with Docker Model Runner:
docker model run hf.co/MoYoYoTech/VoiceDialogue:Q6_K
- Lemonade
How to use MoYoYoTech/VoiceDialogue with Lemonade:
Pull the model
# Download Lemonade from https://lemonade-server.ai/ lemonade pull MoYoYoTech/VoiceDialogue:Q6_K
Run and chat with the model
lemonade run user.VoiceDialogue-Q6_K
List all available models
lemonade list
- Hermes Agent
How to use MoYoYoTech/VoiceDialogue with Hermes Agent:
Start the llama.cpp server
# Install llama.cpp: brew install llama.cpp # Start a local OpenAI-compatible server: llama serve -hf MoYoYoTech/VoiceDialogue:Q6_K
Configure Hermes
# Install Hermes: curl -fsSL https://hermes-agent.nousresearch.com/install.sh | bash hermes setup # Point Hermes at the local server: hermes config set model.provider custom hermes config set model.base_url http://127.0.0.1:8080/v1 hermes config set model.default MoYoYoTech/VoiceDialogue:Q6_K
Run Hermes
hermes
- Atomic Chat
- OpenClaw
How to use MoYoYoTech/VoiceDialogue with OpenClaw:
Start the llama.cpp server
# Install llama.cpp: brew install llama.cpp # Start a local OpenAI-compatible server: llama serve -hf MoYoYoTech/VoiceDialogue:Q6_K
Configure OpenClaw
# Install OpenClaw: npm install -g openclaw@latest # Register the local server and set it as the default model: openclaw onboard --non-interactive --mode local \ --auth-choice custom-api-key \ --custom-base-url http://127.0.0.1:8080/v1 \ --custom-model-id "MoYoYoTech/VoiceDialogue:Q6_K" \ --custom-provider-id llama-cpp \ --custom-compatibility openai \ --custom-text-input \ --accept-risk \ --skip-health
Run OpenClaw
openclaw agent --local --agent main --message "Hello from Hugging Face"
ASR: use auto language detection to reject non-speech (fixes hallucination)
Browse filesForcing a language makes Qwen3-ASR output transcription text
unconditionally, so silence/noise segments that slip through VAD
produce hallucinated words (FunASR/Whisper do this on every such
segment). In auto mode the model returns an empty string for
non-speech, which the pipeline already drops.
Verified: silence, low and medium noise -> '' ; zh/en speech unchanged.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
@@ -10,12 +10,6 @@ from voice_dialogue.asr.models.base import ASRInterface
|
|
| 10 |
from voice_dialogue.asr.utils import ensure_minimum_audio_duration
|
| 11 |
from voice_dialogue.utils.logger import logger
|
| 12 |
|
| 13 |
-
# Qwen3-ASR 的 language 参数使用语言全名
|
| 14 |
-
LANGUAGE_NAME_MAPPING = {
|
| 15 |
-
'zh': 'Chinese',
|
| 16 |
-
'en': 'English',
|
| 17 |
-
}
|
| 18 |
-
|
| 19 |
DEFAULT_MODEL = os.environ.get('QWEN_ASR_MODEL', 'Qwen/Qwen3-ASR-1.7B')
|
| 20 |
|
| 21 |
TARGET_SAMPLE_RATE = 16000
|
|
@@ -60,11 +54,11 @@ class QwenASRClient(ASRInterface):
|
|
| 60 |
def transcribe(self, audio_array: np.ndarray, language: str = None) -> str:
|
| 61 |
audio_array = ensure_minimum_audio_duration(audio_array)
|
| 62 |
|
| 63 |
-
#
|
| 64 |
-
|
| 65 |
-
|
| 66 |
results = self.model.transcribe(
|
| 67 |
audio=(audio_array, TARGET_SAMPLE_RATE),
|
| 68 |
-
language=
|
| 69 |
)
|
| 70 |
return ' '.join(result.text for result in results).strip()
|
|
|
|
| 10 |
from voice_dialogue.asr.utils import ensure_minimum_audio_duration
|
| 11 |
from voice_dialogue.utils.logger import logger
|
| 12 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 13 |
DEFAULT_MODEL = os.environ.get('QWEN_ASR_MODEL', 'Qwen/Qwen3-ASR-1.7B')
|
| 14 |
|
| 15 |
TARGET_SAMPLE_RATE = 16000
|
|
|
|
| 54 |
def transcribe(self, audio_array: np.ndarray, language: str = None) -> str:
|
| 55 |
audio_array = ensure_minimum_audio_duration(audio_array)
|
| 56 |
|
| 57 |
+
# 始终使用自动语种检测:指定语言会强制模型"只输出转写文本",
|
| 58 |
+
# 静音/噪声段会被迫编出幻听文字;自动模式下非语音段返回空串,
|
| 59 |
+
# 由上游丢弃,从根上消除幻听。
|
| 60 |
results = self.model.transcribe(
|
| 61 |
audio=(audio_array, TARGET_SAMPLE_RATE),
|
| 62 |
+
language=None,
|
| 63 |
)
|
| 64 |
return ' '.join(result.text for result in results).strip()
|