Text-to-Speech
Transformers
ONNX
GGUF
Chinese
English
voice-dialogue
speech-recognition
large-language-model
asr
tts
llm
chinese
english
real-time
conversational
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
Use pre-built binary
# Download pre-built binary from: # https://github.com/ggerganov/llama.cpp/releases # Start a local OpenAI-compatible server with a web UI: ./llama-server -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/ggerganov/llama.cpp.git cd llama.cpp cmake -B build cmake --build build -j --target llama-server llama-cli # Start a local OpenAI-compatible server with a web UI: ./build/bin/llama-server -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
- 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"
Commit History
-
Add audio output device (speaker) selection
hzeng412 +1: Claude Fable 5- devices.py: enumerate output devices, default lookup, validation - player.py: PyAudio playback path for an explicit output device with sample-rate fallback (soxr resample); default device keeps playsound - AudioPlayerService reads the saved output index per sentence, so a settings change applies to the next utterance without restart - API: /system/audio-devices now includes output devices; POST /system/audio-output-device persists immediately; /system/start accepts output_device_index - UI: speaker select in settings (main tab), persisted in store, sent on start Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>a3bf559 -
ASR: add Qwen3-ASR engine, default zh/en to it on this branch
hzeng412 +1: Claude Fable 5- New QwenASRClient (Qwen/Qwen3-ASR-1.7B via qwen-asr, transformers backend, MPS bf16) - Language mapping zh/en -> qwen; VOICE_DIALOGUE_ASR=legacy restores funasr/whisper - ASRService now passes session language to transcribe() Requires: uv pip install qwen-asr (upgrades transformers to 4.57) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>417ffa1
-
refactor(core): Architecturally decouple Audio, ASR, and TTS modules
liumaolinThis major refactoring decouples core functionalities from the services layer, establishing clearer architectural boundaries and improving modularity. The changes adhere to the principles of Separation of Concerns and single-responsibility, making the system more maintainable and extensible. Key changes include: 1. **Decoupled Audio Subsystem (Strategy Pattern)**: - The monolithic `AudioCapture` class has been split into multiple, single-responsibility components within the `audio/` directory. - `base_capture.py` introduces an abstract base class for all capture strategies. - `pyaudio_capture.py` and `aec_capture.py` provide concrete implementations for standard and echo-cancelled audio capture. - The main `capture.py` now acts as a Facade, selecting the appropriate capture strategy at runtime, hiding implementation details from the rest of the application. 2. **Introduced PlayerService to Separate Concerns**: - Resolved a reverse dependency where `audio/player…60f8238
-
简化LLM模型路径管理。
liumaolin2baeba2
-
为LLMResponseGenerator类添加TaskStatusMixin混入,以增强任务有效性检查功能,确保在生成回答时任务状态的有效性。
liumaolind205383
-
更新音频任务处理逻辑,使用模型副本替代原始任务对象,以确保数据一致性和完整性。
liumaolin2c7e742 -
重构处理LLM生成chunk内容的方法,以提高文本生成的准确性。
liumaoline3d17e2 -
去除对 LLM 输出的处理
liumaolin08fc60d
-
调整prompt的逻辑,确保展示的提示词中不包含/no_think指令
liumaolin22a06c4 -
添加设置相关的API路由
liumaolin- 支持用户自定义提示词的获取、更新和重置功能 - 同时更新应用数据存储路径的获取逻辑。15ab478 -
调整LLM prompt的存放位置
liumaolin310c0ba -
增强任务有效性检查,添加日志记录以便于调试。
liumaolinb7ae839 -
在生成TTS音频时始终记录生成信息。
liumaolin3a6b6fc -
在`SpeechStateMonitor`类的初始化过程中调用该方法,确保在创建新语音任务时中断任务ID被正确重置。
liumaolin259c23b
-
修复`PerformanceLogMixin`中的音频记录逻辑
liumaolin- 将`sf.write`方法中的音频源从`voice_task.audio`更改为`voice_task.user_voice`,确保正确记录用户的声音。 - 在`ASRWorker`类中,恢复`log_task_user_question`方法的调用,以记录用户提问。9bda9f9 -
修复`PerformanceLogMixin`中的调试模式检查逻辑
liumaolin- 修改`log_task_performance`和`log_task_user_question`方法中的调试模式检查,确保在非调试模式下也能正确记录任务性能信息。8486c53 -
增强性能日志记录功能,新增用户问题日志记录方法
liumaolin- 在`PerformanceLogMixin`中添加`log_task_user_question`方法,用于记录用户提问的音频。 - 在`ASRWorker`类中集成该方法,以便在处理语音任务时记录用户问题。 - 移除`AudioStreamPlayer`类中的调试模式检查,确保性能日志始终记录音频播放任务。7cddb77 -
Revise `ACTIVE_FRAME_THRESHOLD` from 0.32s to 0.1s
liumaolind662661
-
更新MoYoYo语音模型配置,修改文本分割方法并新增角色模型
liumaolin- 将多个角色的`text_split_method`从"cut3"修改为"cut0",以优化文本处理。 - 调整部分角色的优先级,以确保正确排序。46eb532 -
更新MoYoYo语音模型配置,新增优先级字段
liumaolin- 在`moyoyo.py`中为多个角色模型添加`priority`字段,以便于根据优先级进行排序。 - 修改`TTSConfigRegistry`类中的排序逻辑,确保根据角色优先级进行正确排序。 - 更新`MoYoYoTTSConfig`类,添加优先级属性以支持新功能。efefd3d -
新增Mixin类以增强语音任务处理功能
liumaolin- 添加`TaskStatusMixin`、`HistoryMixin`和`PerformanceLogMixin`类,提供语音任务状态检查、聊天历史更新和性能日志记录功能。 - 在`TTSAudioGenerator`和`AudioStreamPlayer`类中集成新混入类,优化任务处理逻辑。 - 更新`utils.py`,新增音频帧归一化和时长计算功能。2ebe57f -
添加MoYoYo语音模型“白岩松”及相关文件
liumaolin- 新增GPT权重文件`bys_best_gpt.ckpt`、SoVITS权重文件`bys_best_sovits.pth`和参考音频文件`bys_ref.wav`。 - 更新`moyoyo.py`配置,包含新模型的文件路径和推理参数设置。d74bcbf
-
重构`is_task_interrupted`方法以检查语音任务中断状态
liumaolin- 添加`is_task_interrupted`方法,简化语音任务中断检查逻辑,提高代码可读性。 - 更新相关逻辑以使用新方法替代原有的中断检查方式。02c321c
-
Add `has_no_words` check to skip punctuation-only TTS tasks and enhance debug logs
liumaolin- Implement `has_no_words` method to detect and skip text containing only punctuation or symbols. - Log TTS generation process when `is_debug_mode` is enabled for easier debugging.b636027 -
Refactor SpeechMonitor to use active audio frame duration instead of count
liumaolin- Replace `active_audio_frame_count` with `active_audio_frame_duration` for more precise threshold control. - Adjust `ACTIVE_FRAME_THRESHOLD` and associated calculations to use duration-based logic.15891ec -
Add TTS generation error handling and `is_task_interrupted` helper function
liumaolin- Log errors during TTS audio generation to improve debugging. - Abstract task interruption check into `is_task_interrupted` method for better readability and reuse.5ecb408 -
Optimize VAD logic by replacing `np.max(probs)` with `any(prob >= threshold)` for improved readability and efficiency.
liumaolin9273b76
-
Increase audio capture chunk size to 1024 in `capture.py` for smoother streaming
liumaolin095cfb6
-
Handle overflow errors in audio capture by adding `exception_on_overflow=False` and skip processing when no data is available.
liumaolin5f9eaee -
Integrate `SileroVAD` into `SpeechMonitor` for optional voice activity detection. Add `_detect_speech()` method and update queue handling logic. Implement `SileroVAD` as a singleton for efficient model management.
liumaolin4e2e3d8 -
Increase queue timeout in audio and text processing services for smoother task handling
liumaolinb446464 -
Refactor audio processing pipeline to normalize data in `SpeechMonitor` and streamline queuing in `AudioCapture`
liumaolin57b0084 -
Update `AudioCapture` to support both PyAudio and macOS native AEC+VAD libraries
liumaolin- Add PyAudio-based standard audio capture as an option. - Enable runtime switching between PyAudio and macOS native libraries based on echo cancellation settings. - Refactor capture methods for better modularity and maintainability.99e8988 -
Refactor to replace `EchoCancellingAudioCapture` with `AudioCapture` across the codebase for improved clarity and flexibility
liumaolin7437d6d
-
Clean input text in MoYoYo TTS by removing punctuation for better processing
liumaolin8587958 -
Refactor LlamaCpp initialization to simplify parameter handling and remove unused callback manager
liumaolin941bf07 -
Enable debug mode with global configuration and detailed task logging when active
liumaoline0f42b2
-
Reset task ID in speech recognizer for empty transcriptions to prevent errors
liumaolin2291ed2 -
Add new voice model "Doubao" to MoYoYo configuration
liumaolin- Include model details, inference parameters, and related files. - Add reference audio and pretrained weights for TTS.7b003c4
-
Update performance logging format in TTS player for improved structure and readability
liumaolind0c1c61 -
Remove commented-out performance logging code from TTS player
liumaolinc3e85a2
-
Add new voice model "Ellen" to MoYoYo configuration
liumaolin- Include model details, inference parameters, and related files. - Add reference audio and pretrained weights for TTS.b5b48f0
-
Update MoYoYo TTS prompt text for improved relevance and clarity
liumaolin8228973 -
Improve speech recognizer to handle empty transcriptions
liumaolin0cbda14 -
Simplify system prompts for text generation in Chinese and English
liumaolin- Remove unnecessary "thinking process" phrases to streamline responses. - Adjust prompt guidelines for improved brevity, accuracy, and conversational flow.c545fd9 -
Add new voice model "Juniper" to MoYoYo configuration
liumaolin- Include model details, inference parameters, and related files. - Add reference audio and pretrained weights for TTS.469433f
-
Standardize punctuation for system prompts in both Chinese and English text generation modules.
liumaolinbedd7b8 -
Add session validation checks to `player.py` and `generator.py`
liumaolin- Ensure voice tasks are processed only for the current session by comparing `session_id`. - Break or skip processing if the session ID mismatches.29766c6
-
Replace `logging` with centralized `loguru`-based logger across all modules.
liumaolin851495c -
Refactor response generation logic in `generator.py`
liumaolin- Adjust sentence length evaluation for end mark conditions. - Update chunk filtering to handle `<think>` and newline tags consistently. - Fix inconsistency in sentence preprocessing with remaining content handling. - Clean up unnecessary whitespace in method definitions.ce3d9e5