myagent-ai 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Dockerfile +30 -0
- package/README.md +333 -0
- package/agents/__init__.py +6 -0
- package/agents/__pycache__/main_agent.cpython-312.pyc +0 -0
- package/agents/base.py +115 -0
- package/agents/main_agent.py +695 -0
- package/agents/memory_agent.py +313 -0
- package/agents/tool_agent.py +248 -0
- package/chatbot/__init__.py +5 -0
- package/chatbot/base.py +124 -0
- package/chatbot/discord_bot.py +146 -0
- package/chatbot/feishu_bot.py +548 -0
- package/chatbot/manager.py +164 -0
- package/chatbot/qq_bot.py +189 -0
- package/chatbot/telegram_bot.py +167 -0
- package/chatbot/wechat_bot.py +558 -0
- package/communication/__init__.py +66 -0
- package/communication/channel.py +576 -0
- package/communication/crypto.py +347 -0
- package/communication/manager.py +397 -0
- package/communication/peer.py +156 -0
- package/config.py +464 -0
- package/core/__init__.py +10 -0
- package/core/config_broadcast.py +276 -0
- package/core/llm.py +878 -0
- package/core/logger.py +241 -0
- package/core/task_queue.py +362 -0
- package/core/utils.py +184 -0
- package/executor/__init__.py +4 -0
- package/executor/__pycache__/engine.cpython-312.pyc +0 -0
- package/executor/engine.py +1215 -0
- package/groups/__init__.py +15 -0
- package/groups/manager.py +724 -0
- package/knowledge/__init__.py +4 -0
- package/knowledge/rag.py +444 -0
- package/main.py +801 -0
- package/memory/__init__.py +4 -0
- package/memory/manager.py +840 -0
- package/organization/__init__.py +4 -0
- package/organization/manager.py +350 -0
- package/package.json +58 -0
- package/requirements.txt +59 -0
- package/setup.py +40 -0
- package/skills/ASR/LICENSE.txt +21 -0
- package/skills/ASR/SKILL.md +580 -0
- package/skills/ASR/scripts/asr.ts +27 -0
- package/skills/LLM/LICENSE.txt +21 -0
- package/skills/LLM/SKILL.md +856 -0
- package/skills/LLM/scripts/chat.ts +32 -0
- package/skills/TTS/LICENSE.txt +21 -0
- package/skills/TTS/SKILL.md +735 -0
- package/skills/TTS/tts.ts +25 -0
- package/skills/VLM/LICENSE.txt +21 -0
- package/skills/VLM/SKILL.md +588 -0
- package/skills/VLM/scripts/vlm.ts +57 -0
- package/skills/__init__.py +5 -0
- package/skills/agent-browser/SKILL.md +328 -0
- package/skills/ai-news-collectors/SKILL.md +157 -0
- package/skills/ai-news-collectors/_meta.json +6 -0
- package/skills/ai-news-collectors/references/sources.md +128 -0
- package/skills/aminer-open-academic/SKILL.md +312 -0
- package/skills/aminer-open-academic/_meta.json +6 -0
- package/skills/aminer-open-academic/evals/evals.json +46 -0
- package/skills/aminer-open-academic/references/api-catalog.md +1032 -0
- package/skills/aminer-open-academic/scripts/__pycache__/aminer_client.cpython-312.pyc +0 -0
- package/skills/aminer-open-academic/scripts/aminer_client.py +875 -0
- package/skills/auto-target-tracker/SKILL.md +317 -0
- package/skills/base.py +147 -0
- package/skills/blog-writer/2024-02-17-radical-transparency-sales.md +35 -0
- package/skills/blog-writer/2024-02-17-raycast-spotlight-superpowers.md +33 -0
- package/skills/blog-writer/2024-02-17-short-form-content-marketing.md +47 -0
- package/skills/blog-writer/2024-02-17-typing-speed-benefits.md +33 -0
- package/skills/blog-writer/2024-03-14-effective-ai-prompts.md +55 -0
- package/skills/blog-writer/2024-11-08-ai-revolutionizing-entry-level-sales.md +43 -0
- package/skills/blog-writer/2025-11-12-why-ai-art-is-useless.md +49 -0
- package/skills/blog-writer/README.md +2 -0
- package/skills/blog-writer/SKILL.md +158 -0
- package/skills/blog-writer/__pycache__/manage_examples.cpython-312.pyc +0 -0
- package/skills/blog-writer/_meta.json +6 -0
- package/skills/blog-writer/manage_examples.py +90 -0
- package/skills/blog-writer/style-guide.md +160 -0
- package/skills/browser_skill.py +146 -0
- package/skills/coding-agent/SKILL.md +120 -0
- package/skills/coding-agent/_meta.json +6 -0
- package/skills/coding-agent/criteria.md +48 -0
- package/skills/coding-agent/execution.md +42 -0
- package/skills/coding-agent/memory-template.md +38 -0
- package/skills/coding-agent/planning.md +31 -0
- package/skills/coding-agent/state.md +60 -0
- package/skills/coding-agent/verification.md +39 -0
- package/skills/content-strategy/SKILL.md +181 -0
- package/skills/content-strategy/_meta.json +6 -0
- package/skills/contentanalysis/ExtractWisdom/SKILL.md +229 -0
- package/skills/contentanalysis/ExtractWisdom/Workflows/Extract.md +60 -0
- package/skills/contentanalysis/SKILL.md +14 -0
- package/skills/docx/CHANGELOG.md +85 -0
- package/skills/docx/LICENSE.txt +30 -0
- package/skills/docx/SKILL.md +455 -0
- package/skills/docx/docx-js.md +681 -0
- package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +1499 -0
- package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +146 -0
- package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +1085 -0
- package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +11 -0
- package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-main.xsd +3081 -0
- package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +23 -0
- package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +185 -0
- package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +287 -0
- package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/pml.xsd +1676 -0
- package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +28 -0
- package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +144 -0
- package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +174 -0
- package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +25 -0
- package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +18 -0
- package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +59 -0
- package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +56 -0
- package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +195 -0
- package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-math.xsd +582 -0
- package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +25 -0
- package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/sml.xsd +4439 -0
- package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-main.xsd +570 -0
- package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +509 -0
- package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +12 -0
- package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +108 -0
- package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +96 -0
- package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/wml.xsd +3646 -0
- package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/xml.xsd +116 -0
- package/skills/docx/ooxml/schemas/ecma/fouth-edition/opc-contentTypes.xsd +42 -0
- package/skills/docx/ooxml/schemas/ecma/fouth-edition/opc-coreProperties.xsd +50 -0
- package/skills/docx/ooxml/schemas/ecma/fouth-edition/opc-digSig.xsd +49 -0
- package/skills/docx/ooxml/schemas/ecma/fouth-edition/opc-relationships.xsd +33 -0
- package/skills/docx/ooxml/schemas/mce/mc.xsd +75 -0
- package/skills/docx/ooxml/schemas/microsoft/wml-2010.xsd +560 -0
- package/skills/docx/ooxml/schemas/microsoft/wml-2012.xsd +67 -0
- package/skills/docx/ooxml/schemas/microsoft/wml-2018.xsd +14 -0
- package/skills/docx/ooxml/schemas/microsoft/wml-cex-2018.xsd +20 -0
- package/skills/docx/ooxml/schemas/microsoft/wml-cid-2016.xsd +13 -0
- package/skills/docx/ooxml/schemas/microsoft/wml-sdtdatahash-2020.xsd +4 -0
- package/skills/docx/ooxml/schemas/microsoft/wml-symex-2015.xsd +8 -0
- package/skills/docx/ooxml/scripts/__pycache__/pack.cpython-312.pyc +0 -0
- package/skills/docx/ooxml/scripts/__pycache__/unpack.cpython-312.pyc +0 -0
- package/skills/docx/ooxml/scripts/__pycache__/validate.cpython-312.pyc +0 -0
- package/skills/docx/ooxml/scripts/pack.py +159 -0
- package/skills/docx/ooxml/scripts/unpack.py +29 -0
- package/skills/docx/ooxml/scripts/validate.py +69 -0
- package/skills/docx/ooxml/scripts/validation/__init__.py +15 -0
- package/skills/docx/ooxml/scripts/validation/__pycache__/__init__.cpython-312.pyc +0 -0
- package/skills/docx/ooxml/scripts/validation/__pycache__/base.cpython-312.pyc +0 -0
- package/skills/docx/ooxml/scripts/validation/__pycache__/docx.cpython-312.pyc +0 -0
- package/skills/docx/ooxml/scripts/validation/__pycache__/pptx.cpython-312.pyc +0 -0
- package/skills/docx/ooxml/scripts/validation/__pycache__/redlining.cpython-312.pyc +0 -0
- package/skills/docx/ooxml/scripts/validation/base.py +951 -0
- package/skills/docx/ooxml/scripts/validation/docx.py +274 -0
- package/skills/docx/ooxml/scripts/validation/pptx.py +315 -0
- package/skills/docx/ooxml/scripts/validation/redlining.py +279 -0
- package/skills/docx/ooxml.md +615 -0
- package/skills/docx/scripts/__init__.py +1 -0
- package/skills/docx/scripts/__pycache__/__init__.cpython-312.pyc +0 -0
- package/skills/docx/scripts/__pycache__/add_toc_placeholders.cpython-312.pyc +0 -0
- package/skills/docx/scripts/__pycache__/document.cpython-312.pyc +0 -0
- package/skills/docx/scripts/__pycache__/utilities.cpython-312.pyc +0 -0
- package/skills/docx/scripts/add_toc_placeholders.py +220 -0
- package/skills/docx/scripts/document.py +1302 -0
- package/skills/docx/scripts/templates/comments.xml +3 -0
- package/skills/docx/scripts/templates/commentsExtended.xml +3 -0
- package/skills/docx/scripts/templates/commentsExtensible.xml +3 -0
- package/skills/docx/scripts/templates/commentsIds.xml +3 -0
- package/skills/docx/scripts/templates/people.xml +3 -0
- package/skills/docx/scripts/utilities.py +374 -0
- package/skills/dream-interpreter/SKILL.md +88 -0
- package/skills/dream-interpreter/assets/example_asset.txt +24 -0
- package/skills/dream-interpreter/references/api_reference.md +34 -0
- package/skills/dream-interpreter/references/interpretation-guide.md +83 -0
- package/skills/dream-interpreter/references/output-schema.md +65 -0
- package/skills/dream-interpreter/references/questioning-strategy.md +62 -0
- package/skills/dream-interpreter/references/visual-mapping.md +81 -0
- package/skills/dream-interpreter/scripts/__pycache__/example.cpython-312.pyc +0 -0
- package/skills/dream-interpreter/scripts/example.py +19 -0
- package/skills/dream-interpreter/skill.json +7 -0
- package/skills/file_skill.py +246 -0
- package/skills/finance/Finance_API_Doc.md +445 -0
- package/skills/finance/SKILL.md +53 -0
- package/skills/fullstack-dev/SKILL.md +205 -0
- package/skills/get-fortune-analysis/SKILL.md +370 -0
- package/skills/get-fortune-analysis/lunar_python.py +91 -0
- package/skills/gift-evaluator/SKILL.md +83 -0
- package/skills/gift-evaluator/__pycache__/html_tools.cpython-312.pyc +0 -0
- package/skills/gift-evaluator/html_tools.py +268 -0
- package/skills/image-edit/LICENSE.txt +21 -0
- package/skills/image-edit/SKILL.md +896 -0
- package/skills/image-edit/scripts/image-edit.ts +36 -0
- package/skills/image-generation/LICENSE.txt +21 -0
- package/skills/image-generation/SKILL.md +583 -0
- package/skills/image-generation/scripts/image-generation.ts +28 -0
- package/skills/image-understand/LICENSE.txt +21 -0
- package/skills/image-understand/SKILL.md +855 -0
- package/skills/image-understand/scripts/image-understand.ts +41 -0
- package/skills/interview-designer/README.md +70 -0
- package/skills/interview-designer/SKILL.md +53 -0
- package/skills/interview-designer/_meta.json +6 -0
- package/skills/interview-designer/references/design_rationale.md +43 -0
- package/skills/interview-designer/templates/interview_guide_template.md +62 -0
- package/skills/market-research-reports/SKILL.md +901 -0
- package/skills/market-research-reports/assets/FORMATTING_GUIDE.md +428 -0
- package/skills/market-research-reports/assets/market_report_template.tex +1380 -0
- package/skills/market-research-reports/assets/market_research.sty +564 -0
- package/skills/market-research-reports/references/data_analysis_patterns.md +548 -0
- package/skills/market-research-reports/references/report_structure_guide.md +999 -0
- package/skills/market-research-reports/references/visual_generation_guide.md +1077 -0
- package/skills/market-research-reports/scripts/__pycache__/generate_market_visuals.cpython-312.pyc +0 -0
- package/skills/market-research-reports/scripts/generate_market_visuals.py +529 -0
- package/skills/marketing-mode/README.md +49 -0
- package/skills/marketing-mode/SKILL.md +693 -0
- package/skills/marketing-mode/_meta.json +6 -0
- package/skills/marketing-mode/mode-prompt.md +39 -0
- package/skills/marketing-mode/skill.json +51 -0
- package/skills/mindfulness-meditation/SKILL.md +65 -0
- package/skills/mindfulness-meditation/_meta.json +6 -0
- package/skills/multi-search-engine/CHANGELOG.md +15 -0
- package/skills/multi-search-engine/CHANNELLOG.md +48 -0
- package/skills/multi-search-engine/SKILL.md +78 -0
- package/skills/multi-search-engine/_meta.json +6 -0
- package/skills/multi-search-engine/config.json +14 -0
- package/skills/multi-search-engine/metadata.json +7 -0
- package/skills/multi-search-engine/references/international-search.md +651 -0
- package/skills/pdf/LICENSE.txt +30 -0
- package/skills/pdf/SKILL.md +1534 -0
- package/skills/pdf/forms.md +205 -0
- package/skills/pdf/reference.md +765 -0
- package/skills/pdf/scripts/__pycache__/add_zai_metadata.cpython-312.pyc +0 -0
- package/skills/pdf/scripts/__pycache__/check_bounding_boxes.cpython-312.pyc +0 -0
- package/skills/pdf/scripts/__pycache__/check_bounding_boxes_test.cpython-312.pyc +0 -0
- package/skills/pdf/scripts/__pycache__/check_fillable_fields.cpython-312.pyc +0 -0
- package/skills/pdf/scripts/__pycache__/convert_pdf_to_images.cpython-312.pyc +0 -0
- package/skills/pdf/scripts/__pycache__/create_validation_image.cpython-312.pyc +0 -0
- package/skills/pdf/scripts/__pycache__/extract_form_field_info.cpython-312.pyc +0 -0
- package/skills/pdf/scripts/__pycache__/fill_fillable_fields.cpython-312.pyc +0 -0
- package/skills/pdf/scripts/__pycache__/fill_pdf_form_with_annotations.cpython-312.pyc +0 -0
- package/skills/pdf/scripts/__pycache__/sanitize_code.cpython-312.pyc +0 -0
- package/skills/pdf/scripts/add_zai_metadata.py +172 -0
- package/skills/pdf/scripts/check_bounding_boxes.py +70 -0
- package/skills/pdf/scripts/check_bounding_boxes_test.py +226 -0
- package/skills/pdf/scripts/check_fillable_fields.py +12 -0
- package/skills/pdf/scripts/convert_pdf_to_images.py +35 -0
- package/skills/pdf/scripts/create_validation_image.py +41 -0
- package/skills/pdf/scripts/extract_form_field_info.py +152 -0
- package/skills/pdf/scripts/fill_fillable_fields.py +114 -0
- package/skills/pdf/scripts/fill_pdf_form_with_annotations.py +108 -0
- package/skills/pdf/scripts/sanitize_code.py +110 -0
- package/skills/podcast-generate/LICENSE.txt +21 -0
- package/skills/podcast-generate/SKILL.md +198 -0
- package/skills/podcast-generate/generate.ts +661 -0
- package/skills/podcast-generate/package.json +30 -0
- package/skills/podcast-generate/readme.md +177 -0
- package/skills/podcast-generate/test_data/segments.jsonl +3 -0
- package/skills/podcast-generate/tsconfig.json +26 -0
- package/skills/pptx/LICENSE.txt +30 -0
- package/skills/pptx/SKILL.md +507 -0
- package/skills/pptx/html2pptx.md +625 -0
- package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +1499 -0
- package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +146 -0
- package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +1085 -0
- package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +11 -0
- package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-main.xsd +3081 -0
- package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +23 -0
- package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +185 -0
- package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +287 -0
- package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/pml.xsd +1676 -0
- package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +28 -0
- package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +144 -0
- package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +174 -0
- package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +25 -0
- package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +18 -0
- package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +59 -0
- package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +56 -0
- package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +195 -0
- package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-math.xsd +582 -0
- package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +25 -0
- package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/sml.xsd +4439 -0
- package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-main.xsd +570 -0
- package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +509 -0
- package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +12 -0
- package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +108 -0
- package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +96 -0
- package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/wml.xsd +3646 -0
- package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/xml.xsd +116 -0
- package/skills/pptx/ooxml/schemas/ecma/fouth-edition/opc-contentTypes.xsd +42 -0
- package/skills/pptx/ooxml/schemas/ecma/fouth-edition/opc-coreProperties.xsd +50 -0
- package/skills/pptx/ooxml/schemas/ecma/fouth-edition/opc-digSig.xsd +49 -0
- package/skills/pptx/ooxml/schemas/ecma/fouth-edition/opc-relationships.xsd +33 -0
- package/skills/pptx/ooxml/schemas/mce/mc.xsd +75 -0
- package/skills/pptx/ooxml/schemas/microsoft/wml-2010.xsd +560 -0
- package/skills/pptx/ooxml/schemas/microsoft/wml-2012.xsd +67 -0
- package/skills/pptx/ooxml/schemas/microsoft/wml-2018.xsd +14 -0
- package/skills/pptx/ooxml/schemas/microsoft/wml-cex-2018.xsd +20 -0
- package/skills/pptx/ooxml/schemas/microsoft/wml-cid-2016.xsd +13 -0
- package/skills/pptx/ooxml/schemas/microsoft/wml-sdtdatahash-2020.xsd +4 -0
- package/skills/pptx/ooxml/schemas/microsoft/wml-symex-2015.xsd +8 -0
- package/skills/pptx/ooxml/scripts/__pycache__/pack.cpython-312.pyc +0 -0
- package/skills/pptx/ooxml/scripts/__pycache__/unpack.cpython-312.pyc +0 -0
- package/skills/pptx/ooxml/scripts/__pycache__/validate.cpython-312.pyc +0 -0
- package/skills/pptx/ooxml/scripts/pack.py +159 -0
- package/skills/pptx/ooxml/scripts/unpack.py +29 -0
- package/skills/pptx/ooxml/scripts/validate.py +69 -0
- package/skills/pptx/ooxml/scripts/validation/__init__.py +15 -0
- package/skills/pptx/ooxml/scripts/validation/__pycache__/__init__.cpython-312.pyc +0 -0
- package/skills/pptx/ooxml/scripts/validation/__pycache__/base.cpython-312.pyc +0 -0
- package/skills/pptx/ooxml/scripts/validation/__pycache__/docx.cpython-312.pyc +0 -0
- package/skills/pptx/ooxml/scripts/validation/__pycache__/pptx.cpython-312.pyc +0 -0
- package/skills/pptx/ooxml/scripts/validation/__pycache__/redlining.cpython-312.pyc +0 -0
- package/skills/pptx/ooxml/scripts/validation/base.py +951 -0
- package/skills/pptx/ooxml/scripts/validation/docx.py +274 -0
- package/skills/pptx/ooxml/scripts/validation/pptx.py +315 -0
- package/skills/pptx/ooxml/scripts/validation/redlining.py +279 -0
- package/skills/pptx/ooxml.md +427 -0
- package/skills/pptx/scripts/__pycache__/inventory.cpython-312.pyc +0 -0
- package/skills/pptx/scripts/__pycache__/inventory.cpython-313.pyc +0 -0
- package/skills/pptx/scripts/__pycache__/rearrange.cpython-312.pyc +0 -0
- package/skills/pptx/scripts/__pycache__/replace.cpython-312.pyc +0 -0
- package/skills/pptx/scripts/__pycache__/thumbnail.cpython-312.pyc +0 -0
- package/skills/pptx/scripts/html2pptx.js +1044 -0
- package/skills/pptx/scripts/inventory.py +1020 -0
- package/skills/pptx/scripts/rearrange.py +231 -0
- package/skills/pptx/scripts/replace.py +385 -0
- package/skills/pptx/scripts/thumbnail.py +450 -0
- package/skills/qingyan-research/SKILL.md +294 -0
- package/skills/qingyan-research/__pycache__/generate_html.cpython-312.pyc +0 -0
- package/skills/qingyan-research/generate_html.py +33 -0
- package/skills/registry.py +344 -0
- package/skills/search_skill.py +228 -0
- package/skills/seo-content-writer/SKILL.md +661 -0
- package/skills/seo-content-writer/_meta.json +6 -0
- package/skills/seo-content-writer/references/content-structure-templates.md +875 -0
- package/skills/seo-content-writer/references/title-formulas.md +339 -0
- package/skills/skill-creator/LICENSE.txt +202 -0
- package/skills/skill-creator/SKILL.md +485 -0
- package/skills/skill-creator/agents/analyzer.md +274 -0
- package/skills/skill-creator/agents/comparator.md +202 -0
- package/skills/skill-creator/agents/grader.md +223 -0
- package/skills/skill-creator/assets/eval_review.html +146 -0
- package/skills/skill-creator/eval-viewer/__pycache__/generate_review.cpython-312.pyc +0 -0
- package/skills/skill-creator/eval-viewer/generate_review.py +471 -0
- package/skills/skill-creator/eval-viewer/viewer.html +1325 -0
- package/skills/skill-creator/references/schemas.md +430 -0
- package/skills/skill-creator/scripts/__init__.py +0 -0
- package/skills/skill-creator/scripts/__pycache__/__init__.cpython-312.pyc +0 -0
- package/skills/skill-creator/scripts/__pycache__/aggregate_benchmark.cpython-312.pyc +0 -0
- package/skills/skill-creator/scripts/__pycache__/generate_report.cpython-312.pyc +0 -0
- package/skills/skill-creator/scripts/__pycache__/improve_description.cpython-312.pyc +0 -0
- package/skills/skill-creator/scripts/__pycache__/package_skill.cpython-312.pyc +0 -0
- package/skills/skill-creator/scripts/__pycache__/quick_validate.cpython-312.pyc +0 -0
- package/skills/skill-creator/scripts/__pycache__/run_eval.cpython-312.pyc +0 -0
- package/skills/skill-creator/scripts/__pycache__/run_loop.cpython-312.pyc +0 -0
- package/skills/skill-creator/scripts/__pycache__/utils.cpython-312.pyc +0 -0
- package/skills/skill-creator/scripts/aggregate_benchmark.py +401 -0
- package/skills/skill-creator/scripts/generate_report.py +326 -0
- package/skills/skill-creator/scripts/improve_description.py +236 -0
- package/skills/skill-creator/scripts/package_skill.py +136 -0
- package/skills/skill-creator/scripts/quick_validate.py +103 -0
- package/skills/skill-creator/scripts/run_eval.py +310 -0
- package/skills/skill-creator/scripts/run_loop.py +328 -0
- package/skills/skill-creator/scripts/utils.py +47 -0
- package/skills/skill-finder-cn/SKILL.md +66 -0
- package/skills/skill-finder-cn/_meta.json +6 -0
- package/skills/skill-finder-cn/package.json +5 -0
- package/skills/skill-finder-cn/scripts/search.sh +15 -0
- package/skills/skill-vetter/SKILL.md +137 -0
- package/skills/stock-analysis-skill/SKILL.md +156 -0
- package/skills/stock-analysis-skill/package.json +21 -0
- package/skills/stock-analysis-skill/src/analyzer.ts +264 -0
- package/skills/stock-analysis-skill/src/dataFetcher.ts +130 -0
- package/skills/stock-analysis-skill/src/dividend.ts +226 -0
- package/skills/stock-analysis-skill/src/index.ts +327 -0
- package/skills/stock-analysis-skill/src/rumorScanner.ts +200 -0
- package/skills/stock-analysis-skill/src/types.ts +167 -0
- package/skills/stock-analysis-skill/src/watchlist.ts +292 -0
- package/skills/stock-analysis-skill/tsconfig.json +15 -0
- package/skills/storyboard-manager/SKILL.md +532 -0
- package/skills/storyboard-manager/index.js +9 -0
- package/skills/storyboard-manager/package.json +11 -0
- package/skills/storyboard-manager/references/character_development.md +232 -0
- package/skills/storyboard-manager/references/story_structures.md +148 -0
- package/skills/storyboard-manager/scripts/__pycache__/consistency_checker.cpython-312.pyc +0 -0
- package/skills/storyboard-manager/scripts/__pycache__/timeline_tracker.cpython-312.pyc +0 -0
- package/skills/storyboard-manager/scripts/consistency_checker.py +391 -0
- package/skills/storyboard-manager/scripts/timeline_tracker.py +352 -0
- package/skills/system_skill.py +249 -0
- package/skills/ui-ux-pro-max/SKILL.md +43 -0
- package/skills/ui-ux-pro-max/_meta.json +6 -0
- package/skills/ui-ux-pro-max/assets/data/charts.csv +26 -0
- package/skills/ui-ux-pro-max/assets/data/colors.csv +97 -0
- package/skills/ui-ux-pro-max/assets/data/icons.csv +101 -0
- package/skills/ui-ux-pro-max/assets/data/landing.csv +31 -0
- package/skills/ui-ux-pro-max/assets/data/products.csv +97 -0
- package/skills/ui-ux-pro-max/assets/data/react-performance.csv +45 -0
- package/skills/ui-ux-pro-max/assets/data/stacks/astro.csv +54 -0
- package/skills/ui-ux-pro-max/assets/data/stacks/flutter.csv +53 -0
- package/skills/ui-ux-pro-max/assets/data/stacks/html-tailwind.csv +56 -0
- package/skills/ui-ux-pro-max/assets/data/stacks/jetpack-compose.csv +53 -0
- package/skills/ui-ux-pro-max/assets/data/stacks/nextjs.csv +53 -0
- package/skills/ui-ux-pro-max/assets/data/stacks/nuxt-ui.csv +51 -0
- package/skills/ui-ux-pro-max/assets/data/stacks/nuxtjs.csv +59 -0
- package/skills/ui-ux-pro-max/assets/data/stacks/react-native.csv +52 -0
- package/skills/ui-ux-pro-max/assets/data/stacks/react.csv +54 -0
- package/skills/ui-ux-pro-max/assets/data/stacks/shadcn.csv +61 -0
- package/skills/ui-ux-pro-max/assets/data/stacks/svelte.csv +54 -0
- package/skills/ui-ux-pro-max/assets/data/stacks/swiftui.csv +51 -0
- package/skills/ui-ux-pro-max/assets/data/stacks/vue.csv +50 -0
- package/skills/ui-ux-pro-max/assets/data/styles.csv +68 -0
- package/skills/ui-ux-pro-max/assets/data/typography.csv +58 -0
- package/skills/ui-ux-pro-max/assets/data/ui-reasoning.csv +101 -0
- package/skills/ui-ux-pro-max/assets/data/ux-guidelines.csv +100 -0
- package/skills/ui-ux-pro-max/assets/data/web-interface.csv +31 -0
- package/skills/ui-ux-pro-max/data/charts.csv +26 -0
- package/skills/ui-ux-pro-max/data/colors.csv +97 -0
- package/skills/ui-ux-pro-max/data/icons.csv +101 -0
- package/skills/ui-ux-pro-max/data/landing.csv +31 -0
- package/skills/ui-ux-pro-max/data/products.csv +97 -0
- package/skills/ui-ux-pro-max/data/react-performance.csv +45 -0
- package/skills/ui-ux-pro-max/data/stacks/astro.csv +54 -0
- package/skills/ui-ux-pro-max/data/stacks/flutter.csv +53 -0
- package/skills/ui-ux-pro-max/data/stacks/html-tailwind.csv +56 -0
- package/skills/ui-ux-pro-max/data/stacks/jetpack-compose.csv +53 -0
- package/skills/ui-ux-pro-max/data/stacks/nextjs.csv +53 -0
- package/skills/ui-ux-pro-max/data/stacks/nuxt-ui.csv +51 -0
- package/skills/ui-ux-pro-max/data/stacks/nuxtjs.csv +59 -0
- package/skills/ui-ux-pro-max/data/stacks/react-native.csv +52 -0
- package/skills/ui-ux-pro-max/data/stacks/react.csv +54 -0
- package/skills/ui-ux-pro-max/data/stacks/shadcn.csv +61 -0
- package/skills/ui-ux-pro-max/data/stacks/svelte.csv +54 -0
- package/skills/ui-ux-pro-max/data/stacks/swiftui.csv +51 -0
- package/skills/ui-ux-pro-max/data/stacks/vue.csv +50 -0
- package/skills/ui-ux-pro-max/data/styles.csv +68 -0
- package/skills/ui-ux-pro-max/data/typography.csv +58 -0
- package/skills/ui-ux-pro-max/data/ui-reasoning.csv +101 -0
- package/skills/ui-ux-pro-max/data/ux-guidelines.csv +100 -0
- package/skills/ui-ux-pro-max/data/web-interface.csv +31 -0
- package/skills/ui-ux-pro-max/references/upstream-README.md +488 -0
- package/skills/ui-ux-pro-max/references/upstream-skill-content.md +288 -0
- package/skills/ui-ux-pro-max/scripts/__init__.py +0 -0
- package/skills/ui-ux-pro-max/scripts/__pycache__/__init__.cpython-312.pyc +0 -0
- package/skills/ui-ux-pro-max/scripts/__pycache__/core.cpython-312.pyc +0 -0
- package/skills/ui-ux-pro-max/scripts/__pycache__/design_system.cpython-312.pyc +0 -0
- package/skills/ui-ux-pro-max/scripts/__pycache__/search.cpython-312.pyc +0 -0
- package/skills/ui-ux-pro-max/scripts/core.py +253 -0
- package/skills/ui-ux-pro-max/scripts/design_system.py +1071 -0
- package/skills/ui-ux-pro-max/scripts/search.py +111 -0
- package/skills/video-generation/LICENSE.txt +21 -0
- package/skills/video-generation/SKILL.md +1082 -0
- package/skills/video-generation/scripts/video.ts +168 -0
- package/skills/video-understand/LICENSE.txt +21 -0
- package/skills/video-understand/SKILL.md +916 -0
- package/skills/video-understand/scripts/video-understand.ts +41 -0
- package/skills/visual-design-foundations/SKILL.md +318 -0
- package/skills/visual-design-foundations/references/color-systems.md +417 -0
- package/skills/visual-design-foundations/references/spacing-iconography.md +425 -0
- package/skills/visual-design-foundations/references/typography-systems.md +432 -0
- package/skills/web-reader/LICENSE.txt +21 -0
- package/skills/web-reader/SKILL.md +1140 -0
- package/skills/web-reader/scripts/web-reader.ts +37 -0
- package/skills/web-search/LICENSE.txt +21 -0
- package/skills/web-search/SKILL.md +912 -0
- package/skills/web-search/scripts/web_search.ts +44 -0
- package/skills/web-shader-extractor/SKILL.md +145 -0
- package/skills/web-shader-extractor/references/config-extraction.md +50 -0
- package/skills/web-shader-extractor/references/encoded-definitions.md +53 -0
- package/skills/web-shader-extractor/references/extraction-workflow.md +61 -0
- package/skills/web-shader-extractor/references/porting-strategy.md +164 -0
- package/skills/web-shader-extractor/references/shader-injection.md +126 -0
- package/skills/web-shader-extractor/references/shaders-com.md +190 -0
- package/skills/web-shader-extractor/references/tech-signatures.md +54 -0
- package/skills/web-shader-extractor/references/tsl-extraction.md +41 -0
- package/skills/web-shader-extractor/references/unicorn-studio.md +353 -0
- package/skills/web-shader-extractor/scripts/fetch-rendered-dom.mjs +153 -0
- package/skills/web-shader-extractor/scripts/scan-bundle.sh +76 -0
- package/skills/writing-plans/SKILL.md +116 -0
- package/skills/writing-plans/_meta.json +6 -0
- package/skills/xlsx/LICENSE.txt +30 -0
- package/skills/xlsx/SKILL.md +496 -0
- package/skills/xlsx/__pycache__/recalc.cpython-312.pyc +0 -0
- package/skills/xlsx/recalc.py +178 -0
- package/start.sh +36 -0
- package/web/__init__.py +1 -0
- package/web/__pycache__/api_server.cpython-312.pyc +0 -0
- package/web/api_server.py +2043 -0
- package/web/ui/chat.html +3235 -0
- package/web/ui/index.html +458 -0
|
@@ -0,0 +1,735 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: TTS
|
|
3
|
+
description: Implement text-to-speech (TTS) capabilities using the z-ai-web-dev-sdk. Use this skill when the user needs to convert text into natural-sounding speech, create audio content, build voice-enabled applications, or generate spoken audio files. Supports multiple voices, adjustable speed, and various audio formats.
|
|
4
|
+
license: MIT
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# TTS (Text to Speech) Skill
|
|
8
|
+
|
|
9
|
+
This skill guides the implementation of text-to-speech (TTS) functionality using the z-ai-web-dev-sdk package, enabling conversion of text into natural-sounding speech audio.
|
|
10
|
+
|
|
11
|
+
## Skills Path
|
|
12
|
+
|
|
13
|
+
**Skill Location**: `{project_path}/skills/TTS`
|
|
14
|
+
|
|
15
|
+
This skill is located at the above path in your project.
|
|
16
|
+
|
|
17
|
+
**Reference Scripts**: Example test scripts are available in the `{Skill Location}/scripts/` directory for quick testing and reference. See `{Skill Location}/scripts/tts.ts` for a working example.
|
|
18
|
+
|
|
19
|
+
## Overview
|
|
20
|
+
|
|
21
|
+
Text-to-Speech allows you to build applications that generate spoken audio from text input, supporting various voices, speeds, and output formats for diverse use cases.
|
|
22
|
+
|
|
23
|
+
**IMPORTANT**: z-ai-web-dev-sdk MUST be used in backend code only. Never use it in client-side code.
|
|
24
|
+
|
|
25
|
+
## API Limitations and Constraints
|
|
26
|
+
|
|
27
|
+
Before implementing TTS functionality, be aware of these important limitations:
|
|
28
|
+
|
|
29
|
+
### Input Text Constraints
|
|
30
|
+
- **Maximum length**: 1024 characters per request
|
|
31
|
+
- Text exceeding this limit must be split into smaller chunks
|
|
32
|
+
|
|
33
|
+
### Audio Parameters
|
|
34
|
+
- **Speed range**: 0.5 to 2.0
|
|
35
|
+
- 0.5 = half speed (slower)
|
|
36
|
+
- 1.0 = normal speed (default)
|
|
37
|
+
- 2.0 = double speed (faster)
|
|
38
|
+
- **Volume range**: Greater than 0, up to 10
|
|
39
|
+
- Default: 1.0
|
|
40
|
+
- Values must be greater than 0 (exclusive) and up to 10 (inclusive)
|
|
41
|
+
|
|
42
|
+
### Format and Streaming
|
|
43
|
+
- **Streaming limitation**: When `stream: true` is enabled, only `pcm` format is supported
|
|
44
|
+
- **Non-streaming**: Supports `wav`, `pcm`, and `mp3` formats
|
|
45
|
+
- **Sample rate**: 24000 Hz (recommended)
|
|
46
|
+
|
|
47
|
+
### Best Practice for Long Text
|
|
48
|
+
```javascript
|
|
49
|
+
function splitTextIntoChunks(text, maxLength = 1000) {
|
|
50
|
+
const chunks = [];
|
|
51
|
+
const sentences = text.match(/[^.!?]+[.!?]+/g) || [text];
|
|
52
|
+
|
|
53
|
+
let currentChunk = '';
|
|
54
|
+
for (const sentence of sentences) {
|
|
55
|
+
if ((currentChunk + sentence).length <= maxLength) {
|
|
56
|
+
currentChunk += sentence;
|
|
57
|
+
} else {
|
|
58
|
+
if (currentChunk) chunks.push(currentChunk.trim());
|
|
59
|
+
currentChunk = sentence;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
if (currentChunk) chunks.push(currentChunk.trim());
|
|
63
|
+
|
|
64
|
+
return chunks;
|
|
65
|
+
}
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
## Prerequisites
|
|
69
|
+
|
|
70
|
+
The z-ai-web-dev-sdk package is already installed. Import it as shown in the examples below.
|
|
71
|
+
|
|
72
|
+
## CLI Usage (For Simple Tasks)
|
|
73
|
+
|
|
74
|
+
For simple text-to-speech conversions, you can use the z-ai CLI instead of writing code. This is ideal for quick audio generation, testing voices, or simple automation.
|
|
75
|
+
|
|
76
|
+
### Basic TTS
|
|
77
|
+
|
|
78
|
+
```bash
|
|
79
|
+
# Convert text to speech (default WAV format)
|
|
80
|
+
z-ai tts --input "Hello, world" --output ./hello.wav
|
|
81
|
+
|
|
82
|
+
# Using short options
|
|
83
|
+
z-ai tts -i "Hello, world" -o ./hello.wav
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
### Different Voices and Speed
|
|
87
|
+
|
|
88
|
+
```bash
|
|
89
|
+
# Use specific voice
|
|
90
|
+
z-ai tts -i "Welcome to our service" -o ./welcome.wav --voice tongtong
|
|
91
|
+
|
|
92
|
+
# Adjust speech speed (0.5-2.0)
|
|
93
|
+
z-ai tts -i "This is faster speech" -o ./fast.wav --speed 1.5
|
|
94
|
+
|
|
95
|
+
# Slower speech
|
|
96
|
+
z-ai tts -i "This is slower speech" -o ./slow.wav --speed 0.8
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
### Different Output Formats
|
|
100
|
+
|
|
101
|
+
```bash
|
|
102
|
+
# MP3 format
|
|
103
|
+
z-ai tts -i "Hello World" -o ./hello.mp3 --format mp3
|
|
104
|
+
|
|
105
|
+
# WAV format (default)
|
|
106
|
+
z-ai tts -i "Hello World" -o ./hello.wav --format wav
|
|
107
|
+
|
|
108
|
+
# PCM format
|
|
109
|
+
z-ai tts -i "Hello World" -o ./hello.pcm --format pcm
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
### Streaming Output
|
|
113
|
+
|
|
114
|
+
```bash
|
|
115
|
+
# Stream audio generation
|
|
116
|
+
z-ai tts -i "This is a longer text that will be streamed" -o ./stream.wav --stream
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
### CLI Parameters
|
|
120
|
+
|
|
121
|
+
- `--input, -i <text>`: **Required** - Text to convert to speech (max 1024 characters)
|
|
122
|
+
- `--output, -o <path>`: **Required** - Output audio file path
|
|
123
|
+
- `--voice, -v <voice>`: Optional - Voice type (default: tongtong)
|
|
124
|
+
- `--speed, -s <number>`: Optional - Speech speed, 0.5-2.0 (default: 1.0)
|
|
125
|
+
- `--format, -f <format>`: Optional - Output format: wav, mp3, pcm (default: wav)
|
|
126
|
+
- `--stream`: Optional - Enable streaming output (only supports pcm format)
|
|
127
|
+
|
|
128
|
+
### When to Use CLI vs SDK
|
|
129
|
+
|
|
130
|
+
**Use CLI for:**
|
|
131
|
+
- Quick text-to-speech conversions
|
|
132
|
+
- Testing different voices and speeds
|
|
133
|
+
- Simple batch audio generation
|
|
134
|
+
- Command-line automation scripts
|
|
135
|
+
|
|
136
|
+
**Use SDK for:**
|
|
137
|
+
- Dynamic audio generation in applications
|
|
138
|
+
- Integration with web services
|
|
139
|
+
- Custom audio processing pipelines
|
|
140
|
+
- Production applications with complex requirements
|
|
141
|
+
|
|
142
|
+
## Basic TTS Implementation
|
|
143
|
+
|
|
144
|
+
### Simple Text to Speech
|
|
145
|
+
|
|
146
|
+
```javascript
|
|
147
|
+
import ZAI from 'z-ai-web-dev-sdk';
|
|
148
|
+
import fs from 'fs';
|
|
149
|
+
|
|
150
|
+
async function textToSpeech(text, outputPath) {
|
|
151
|
+
const zai = await ZAI.create();
|
|
152
|
+
|
|
153
|
+
const response = await zai.audio.tts.create({
|
|
154
|
+
input: text,
|
|
155
|
+
voice: 'tongtong',
|
|
156
|
+
speed: 1.0,
|
|
157
|
+
response_format: 'wav',
|
|
158
|
+
stream: false
|
|
159
|
+
});
|
|
160
|
+
|
|
161
|
+
// Get array buffer from Response object
|
|
162
|
+
const arrayBuffer = await response.arrayBuffer();
|
|
163
|
+
const buffer = Buffer.from(new Uint8Array(arrayBuffer));
|
|
164
|
+
|
|
165
|
+
fs.writeFileSync(outputPath, buffer);
|
|
166
|
+
console.log(`Audio saved to ${outputPath}`);
|
|
167
|
+
return outputPath;
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
// Usage
|
|
171
|
+
await textToSpeech('Hello, world!', './output.wav');
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
### Multiple Voice Options
|
|
175
|
+
|
|
176
|
+
```javascript
|
|
177
|
+
import ZAI from 'z-ai-web-dev-sdk';
|
|
178
|
+
import fs from 'fs';
|
|
179
|
+
|
|
180
|
+
async function generateWithVoice(text, voice, outputPath) {
|
|
181
|
+
const zai = await ZAI.create();
|
|
182
|
+
|
|
183
|
+
const response = await zai.audio.tts.create({
|
|
184
|
+
input: text,
|
|
185
|
+
voice: voice, // Available voices: tongtong, chuichui, xiaochen, jam, kazi, douji, luodo
|
|
186
|
+
speed: 1.0,
|
|
187
|
+
response_format: 'wav',
|
|
188
|
+
stream: false
|
|
189
|
+
});
|
|
190
|
+
|
|
191
|
+
// Get array buffer from Response object
|
|
192
|
+
const arrayBuffer = await response.arrayBuffer();
|
|
193
|
+
const buffer = Buffer.from(new Uint8Array(arrayBuffer));
|
|
194
|
+
|
|
195
|
+
fs.writeFileSync(outputPath, buffer);
|
|
196
|
+
return outputPath;
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
// Usage
|
|
200
|
+
await generateWithVoice('Welcome to our service', 'tongtong', './welcome.wav');
|
|
201
|
+
```
|
|
202
|
+
|
|
203
|
+
### Adjustable Speed
|
|
204
|
+
|
|
205
|
+
```javascript
|
|
206
|
+
import ZAI from 'z-ai-web-dev-sdk';
|
|
207
|
+
import fs from 'fs';
|
|
208
|
+
|
|
209
|
+
async function generateWithSpeed(text, speed, outputPath) {
|
|
210
|
+
const zai = await ZAI.create();
|
|
211
|
+
|
|
212
|
+
// Speed range: 0.5 to 2.0 (API constraint)
|
|
213
|
+
// 0.5 = half speed (slower)
|
|
214
|
+
// 1.0 = normal speed (default)
|
|
215
|
+
// 2.0 = double speed (faster)
|
|
216
|
+
// Values outside this range will cause API errors
|
|
217
|
+
|
|
218
|
+
const response = await zai.audio.tts.create({
|
|
219
|
+
input: text,
|
|
220
|
+
voice: 'tongtong',
|
|
221
|
+
speed: speed,
|
|
222
|
+
response_format: 'wav',
|
|
223
|
+
stream: false
|
|
224
|
+
});
|
|
225
|
+
|
|
226
|
+
// Get array buffer from Response object
|
|
227
|
+
const arrayBuffer = await response.arrayBuffer();
|
|
228
|
+
const buffer = Buffer.from(new Uint8Array(arrayBuffer));
|
|
229
|
+
|
|
230
|
+
fs.writeFileSync(outputPath, buffer);
|
|
231
|
+
return outputPath;
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
// Usage - slower narration
|
|
235
|
+
await generateWithSpeed('This is an important announcement', 0.8, './slow.wav');
|
|
236
|
+
|
|
237
|
+
// Usage - faster narration
|
|
238
|
+
await generateWithSpeed('Quick update', 1.3, './fast.wav');
|
|
239
|
+
```
|
|
240
|
+
|
|
241
|
+
### Adjustable Volume
|
|
242
|
+
|
|
243
|
+
```javascript
|
|
244
|
+
import ZAI from 'z-ai-web-dev-sdk';
|
|
245
|
+
import fs from 'fs';
|
|
246
|
+
|
|
247
|
+
async function generateWithVolume(text, volume, outputPath) {
|
|
248
|
+
const zai = await ZAI.create();
|
|
249
|
+
|
|
250
|
+
// Volume range: greater than 0, up to 10 (API constraint)
|
|
251
|
+
// Values must be > 0 (exclusive) and <= 10 (inclusive)
|
|
252
|
+
// Default: 1.0 (normal volume)
|
|
253
|
+
|
|
254
|
+
const response = await zai.audio.tts.create({
|
|
255
|
+
input: text,
|
|
256
|
+
voice: 'tongtong',
|
|
257
|
+
speed: 1.0,
|
|
258
|
+
volume: volume, // Optional parameter
|
|
259
|
+
response_format: 'wav',
|
|
260
|
+
stream: false
|
|
261
|
+
});
|
|
262
|
+
|
|
263
|
+
// Get array buffer from Response object
|
|
264
|
+
const arrayBuffer = await response.arrayBuffer();
|
|
265
|
+
const buffer = Buffer.from(new Uint8Array(arrayBuffer));
|
|
266
|
+
|
|
267
|
+
fs.writeFileSync(outputPath, buffer);
|
|
268
|
+
return outputPath;
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
// Usage - louder audio
|
|
272
|
+
await generateWithVolume('This is an announcement', 5.0, './loud.wav');
|
|
273
|
+
|
|
274
|
+
// Usage - quieter audio
|
|
275
|
+
await generateWithVolume('Whispered message', 0.5, './quiet.wav');
|
|
276
|
+
```
|
|
277
|
+
|
|
278
|
+
## Advanced Use Cases
|
|
279
|
+
|
|
280
|
+
### Batch Processing
|
|
281
|
+
|
|
282
|
+
```javascript
|
|
283
|
+
import ZAI from 'z-ai-web-dev-sdk';
|
|
284
|
+
import fs from 'fs';
|
|
285
|
+
import path from 'path';
|
|
286
|
+
|
|
287
|
+
async function batchTextToSpeech(textArray, outputDir) {
|
|
288
|
+
const zai = await ZAI.create();
|
|
289
|
+
const results = [];
|
|
290
|
+
|
|
291
|
+
// Ensure output directory exists
|
|
292
|
+
if (!fs.existsSync(outputDir)) {
|
|
293
|
+
fs.mkdirSync(outputDir, { recursive: true });
|
|
294
|
+
}
|
|
295
|
+
|
|
296
|
+
for (let i = 0; i < textArray.length; i++) {
|
|
297
|
+
try {
|
|
298
|
+
const text = textArray[i];
|
|
299
|
+
const outputPath = path.join(outputDir, `audio_${i + 1}.wav`);
|
|
300
|
+
|
|
301
|
+
const response = await zai.audio.tts.create({
|
|
302
|
+
input: text,
|
|
303
|
+
voice: 'tongtong',
|
|
304
|
+
speed: 1.0,
|
|
305
|
+
response_format: 'wav',
|
|
306
|
+
stream: false
|
|
307
|
+
});
|
|
308
|
+
|
|
309
|
+
// Get array buffer from Response object
|
|
310
|
+
const arrayBuffer = await response.arrayBuffer();
|
|
311
|
+
const buffer = Buffer.from(new Uint8Array(arrayBuffer));
|
|
312
|
+
|
|
313
|
+
fs.writeFileSync(outputPath, buffer);
|
|
314
|
+
results.push({
|
|
315
|
+
success: true,
|
|
316
|
+
text,
|
|
317
|
+
path: outputPath
|
|
318
|
+
});
|
|
319
|
+
} catch (error) {
|
|
320
|
+
results.push({
|
|
321
|
+
success: false,
|
|
322
|
+
text: textArray[i],
|
|
323
|
+
error: error.message
|
|
324
|
+
});
|
|
325
|
+
}
|
|
326
|
+
}
|
|
327
|
+
|
|
328
|
+
return results;
|
|
329
|
+
}
|
|
330
|
+
|
|
331
|
+
// Usage
|
|
332
|
+
const texts = [
|
|
333
|
+
'Welcome to chapter one',
|
|
334
|
+
'Welcome to chapter two',
|
|
335
|
+
'Welcome to chapter three'
|
|
336
|
+
];
|
|
337
|
+
|
|
338
|
+
const results = await batchTextToSpeech(texts, './audio-output');
|
|
339
|
+
console.log('Generated:', results.length, 'audio files');
|
|
340
|
+
```
|
|
341
|
+
|
|
342
|
+
### Dynamic Content Generation
|
|
343
|
+
|
|
344
|
+
```javascript
|
|
345
|
+
import ZAI from 'z-ai-web-dev-sdk';
|
|
346
|
+
import fs from 'fs';
|
|
347
|
+
|
|
348
|
+
class TTSGenerator {
|
|
349
|
+
constructor() {
|
|
350
|
+
this.zai = null;
|
|
351
|
+
}
|
|
352
|
+
|
|
353
|
+
async initialize() {
|
|
354
|
+
this.zai = await ZAI.create();
|
|
355
|
+
}
|
|
356
|
+
|
|
357
|
+
async generateAudio(text, options = {}) {
|
|
358
|
+
const {
|
|
359
|
+
voice = 'tongtong',
|
|
360
|
+
speed = 1.0,
|
|
361
|
+
format = 'wav'
|
|
362
|
+
} = options;
|
|
363
|
+
|
|
364
|
+
const response = await this.zai.audio.tts.create({
|
|
365
|
+
input: text,
|
|
366
|
+
voice: voice,
|
|
367
|
+
speed: speed,
|
|
368
|
+
response_format: format,
|
|
369
|
+
stream: false
|
|
370
|
+
});
|
|
371
|
+
|
|
372
|
+
// Get array buffer from Response object
|
|
373
|
+
const arrayBuffer = await response.arrayBuffer();
|
|
374
|
+
return Buffer.from(new Uint8Array(arrayBuffer));
|
|
375
|
+
}
|
|
376
|
+
|
|
377
|
+
async saveAudio(text, outputPath, options = {}) {
|
|
378
|
+
const buffer = await this.generateAudio(text, options);
|
|
379
|
+
if (buffer) {
|
|
380
|
+
fs.writeFileSync(outputPath, buffer);
|
|
381
|
+
return outputPath;
|
|
382
|
+
}
|
|
383
|
+
return null;
|
|
384
|
+
}
|
|
385
|
+
}
|
|
386
|
+
|
|
387
|
+
// Usage
|
|
388
|
+
const generator = new TTSGenerator();
|
|
389
|
+
await generator.initialize();
|
|
390
|
+
|
|
391
|
+
await generator.saveAudio(
|
|
392
|
+
'Hello, this is a test',
|
|
393
|
+
'./output.wav',
|
|
394
|
+
{ speed: 1.2 }
|
|
395
|
+
);
|
|
396
|
+
```
|
|
397
|
+
|
|
398
|
+
### Next.js API Route Example
|
|
399
|
+
|
|
400
|
+
```javascript
|
|
401
|
+
import { NextRequest, NextResponse } from 'next/server';
|
|
402
|
+
|
|
403
|
+
export async function POST(req: NextRequest) {
|
|
404
|
+
try {
|
|
405
|
+
const { text, voice = 'tongtong', speed = 1.0 } = await req.json();
|
|
406
|
+
|
|
407
|
+
// Import ZAI SDK
|
|
408
|
+
const ZAI = (await import('z-ai-web-dev-sdk')).default;
|
|
409
|
+
|
|
410
|
+
// Create SDK instance
|
|
411
|
+
const zai = await ZAI.create();
|
|
412
|
+
|
|
413
|
+
// Generate TTS audio
|
|
414
|
+
const response = await zai.audio.tts.create({
|
|
415
|
+
input: text.trim(),
|
|
416
|
+
voice: voice,
|
|
417
|
+
speed: speed,
|
|
418
|
+
response_format: 'wav',
|
|
419
|
+
stream: false,
|
|
420
|
+
});
|
|
421
|
+
|
|
422
|
+
// Get array buffer from Response object
|
|
423
|
+
const arrayBuffer = await response.arrayBuffer();
|
|
424
|
+
const buffer = Buffer.from(new Uint8Array(arrayBuffer));
|
|
425
|
+
|
|
426
|
+
// Return audio as response
|
|
427
|
+
return new NextResponse(buffer, {
|
|
428
|
+
status: 200,
|
|
429
|
+
headers: {
|
|
430
|
+
'Content-Type': 'audio/wav',
|
|
431
|
+
'Content-Length': buffer.length.toString(),
|
|
432
|
+
'Cache-Control': 'no-cache',
|
|
433
|
+
},
|
|
434
|
+
});
|
|
435
|
+
} catch (error) {
|
|
436
|
+
console.error('TTS API Error:', error);
|
|
437
|
+
|
|
438
|
+
return NextResponse.json(
|
|
439
|
+
{
|
|
440
|
+
error: error instanceof Error ? error.message : '生成语音失败,请稍后重试',
|
|
441
|
+
},
|
|
442
|
+
{ status: 500 }
|
|
443
|
+
);
|
|
444
|
+
}
|
|
445
|
+
}
|
|
446
|
+
```
|
|
447
|
+
|
|
448
|
+
## Best Practices
|
|
449
|
+
|
|
450
|
+
### 1. Text Preparation
|
|
451
|
+
```javascript
|
|
452
|
+
function prepareTextForTTS(text) {
|
|
453
|
+
// Remove excessive whitespace
|
|
454
|
+
text = text.replace(/\s+/g, ' ').trim();
|
|
455
|
+
|
|
456
|
+
// Expand common abbreviations for better pronunciation
|
|
457
|
+
const abbreviations = {
|
|
458
|
+
'Dr.': 'Doctor',
|
|
459
|
+
'Mr.': 'Mister',
|
|
460
|
+
'Mrs.': 'Misses',
|
|
461
|
+
'etc.': 'et cetera'
|
|
462
|
+
};
|
|
463
|
+
|
|
464
|
+
for (const [abbr, full] of Object.entries(abbreviations)) {
|
|
465
|
+
text = text.replace(new RegExp(abbr, 'g'), full);
|
|
466
|
+
}
|
|
467
|
+
|
|
468
|
+
return text;
|
|
469
|
+
}
|
|
470
|
+
```
|
|
471
|
+
|
|
472
|
+
### 2. Error Handling
|
|
473
|
+
```javascript
|
|
474
|
+
import ZAI from 'z-ai-web-dev-sdk';
|
|
475
|
+
import fs from 'fs';
|
|
476
|
+
|
|
477
|
+
async function safeTTS(text, outputPath) {
|
|
478
|
+
try {
|
|
479
|
+
// Validate input
|
|
480
|
+
if (!text || text.trim().length === 0) {
|
|
481
|
+
throw new Error('Text input cannot be empty');
|
|
482
|
+
}
|
|
483
|
+
|
|
484
|
+
if (text.length > 1024) {
|
|
485
|
+
throw new Error('Text input exceeds maximum length of 1024 characters');
|
|
486
|
+
}
|
|
487
|
+
|
|
488
|
+
const zai = await ZAI.create();
|
|
489
|
+
|
|
490
|
+
const response = await zai.audio.tts.create({
|
|
491
|
+
input: text,
|
|
492
|
+
voice: 'tongtong',
|
|
493
|
+
speed: 1.0,
|
|
494
|
+
response_format: 'wav',
|
|
495
|
+
stream: false
|
|
496
|
+
});
|
|
497
|
+
|
|
498
|
+
// Get array buffer from Response object
|
|
499
|
+
const arrayBuffer = await response.arrayBuffer();
|
|
500
|
+
const buffer = Buffer.from(new Uint8Array(arrayBuffer));
|
|
501
|
+
|
|
502
|
+
fs.writeFileSync(outputPath, buffer);
|
|
503
|
+
|
|
504
|
+
return {
|
|
505
|
+
success: true,
|
|
506
|
+
path: outputPath,
|
|
507
|
+
size: buffer.length
|
|
508
|
+
};
|
|
509
|
+
} catch (error) {
|
|
510
|
+
console.error('TTS Error:', error);
|
|
511
|
+
return {
|
|
512
|
+
success: false,
|
|
513
|
+
error: error.message
|
|
514
|
+
};
|
|
515
|
+
}
|
|
516
|
+
}
|
|
517
|
+
```
|
|
518
|
+
|
|
519
|
+
### 3. SDK Instance Reuse
|
|
520
|
+
|
|
521
|
+
```javascript
|
|
522
|
+
import ZAI from 'z-ai-web-dev-sdk';
|
|
523
|
+
|
|
524
|
+
// Create a singleton instance
|
|
525
|
+
let zaiInstance = null;
|
|
526
|
+
|
|
527
|
+
async function getZAIInstance() {
|
|
528
|
+
if (!zaiInstance) {
|
|
529
|
+
zaiInstance = await ZAI.create();
|
|
530
|
+
}
|
|
531
|
+
return zaiInstance;
|
|
532
|
+
}
|
|
533
|
+
|
|
534
|
+
// Usage
|
|
535
|
+
const zai = await getZAIInstance();
|
|
536
|
+
const response = await zai.audio.tts.create({ ... });
|
|
537
|
+
```
|
|
538
|
+
|
|
539
|
+
## Common Use Cases
|
|
540
|
+
|
|
541
|
+
1. **Audiobooks & Podcasts**: Convert written content to audio format
|
|
542
|
+
2. **E-learning**: Create narration for educational content
|
|
543
|
+
3. **Accessibility**: Provide audio versions of text content
|
|
544
|
+
4. **Voice Assistants**: Generate dynamic responses
|
|
545
|
+
5. **Announcements**: Create automated audio notifications
|
|
546
|
+
6. **IVR Systems**: Generate phone system prompts
|
|
547
|
+
7. **Content Localization**: Create audio in different languages
|
|
548
|
+
|
|
549
|
+
## Integration Examples
|
|
550
|
+
|
|
551
|
+
### Express.js API Endpoint
|
|
552
|
+
|
|
553
|
+
```javascript
|
|
554
|
+
import express from 'express';
|
|
555
|
+
import ZAI from 'z-ai-web-dev-sdk';
|
|
556
|
+
import fs from 'fs';
|
|
557
|
+
import path from 'path';
|
|
558
|
+
|
|
559
|
+
const app = express();
|
|
560
|
+
app.use(express.json());
|
|
561
|
+
|
|
562
|
+
let zaiInstance;
|
|
563
|
+
const outputDir = './audio-output';
|
|
564
|
+
|
|
565
|
+
async function initZAI() {
|
|
566
|
+
zaiInstance = await ZAI.create();
|
|
567
|
+
if (!fs.existsSync(outputDir)) {
|
|
568
|
+
fs.mkdirSync(outputDir, { recursive: true });
|
|
569
|
+
}
|
|
570
|
+
}
|
|
571
|
+
|
|
572
|
+
app.post('/api/tts', async (req, res) => {
|
|
573
|
+
try {
|
|
574
|
+
const { text, voice = 'tongtong', speed = 1.0 } = req.body;
|
|
575
|
+
|
|
576
|
+
if (!text) {
|
|
577
|
+
return res.status(400).json({ error: 'Text is required' });
|
|
578
|
+
}
|
|
579
|
+
|
|
580
|
+
const filename = `tts_${Date.now()}.wav`;
|
|
581
|
+
const outputPath = path.join(outputDir, filename);
|
|
582
|
+
|
|
583
|
+
const response = await zaiInstance.audio.tts.create({
|
|
584
|
+
input: text,
|
|
585
|
+
voice: voice,
|
|
586
|
+
speed: speed,
|
|
587
|
+
response_format: 'wav',
|
|
588
|
+
stream: false
|
|
589
|
+
});
|
|
590
|
+
|
|
591
|
+
// Get array buffer from Response object
|
|
592
|
+
const arrayBuffer = await response.arrayBuffer();
|
|
593
|
+
const buffer = Buffer.from(new Uint8Array(arrayBuffer));
|
|
594
|
+
|
|
595
|
+
fs.writeFileSync(outputPath, buffer);
|
|
596
|
+
|
|
597
|
+
res.json({
|
|
598
|
+
success: true,
|
|
599
|
+
audioUrl: `/audio/${filename}`,
|
|
600
|
+
size: buffer.length
|
|
601
|
+
});
|
|
602
|
+
} catch (error) {
|
|
603
|
+
res.status(500).json({ error: error.message });
|
|
604
|
+
}
|
|
605
|
+
});
|
|
606
|
+
|
|
607
|
+
app.use('/audio', express.static('audio-output'));
|
|
608
|
+
|
|
609
|
+
initZAI().then(() => {
|
|
610
|
+
app.listen(3000, () => {
|
|
611
|
+
console.log('TTS API running on port 3000');
|
|
612
|
+
});
|
|
613
|
+
});
|
|
614
|
+
```
|
|
615
|
+
|
|
616
|
+
## Troubleshooting
|
|
617
|
+
|
|
618
|
+
**Issue**: "Input text exceeds maximum length"
|
|
619
|
+
- **Solution**: Text input is limited to 1024 characters. Split longer text into chunks using the `splitTextIntoChunks` function shown in the API Limitations section
|
|
620
|
+
|
|
621
|
+
**Issue**: "Invalid speed parameter" or unexpected speed behavior
|
|
622
|
+
- **Solution**: Speed must be between 0.5 and 2.0. Check your speed value is within this range
|
|
623
|
+
|
|
624
|
+
**Issue**: "Invalid volume parameter"
|
|
625
|
+
- **Solution**: Volume must be greater than 0 and up to 10. Ensure volume value is in range (0, 10]
|
|
626
|
+
|
|
627
|
+
**Issue**: "Stream format not supported" with WAV/MP3
|
|
628
|
+
- **Solution**: Streaming mode only supports PCM format. Either use `response_format: 'pcm'` with streaming, or disable streaming (`stream: false`) for WAV/MP3 output
|
|
629
|
+
|
|
630
|
+
**Issue**: "SDK must be used in backend"
|
|
631
|
+
- **Solution**: Ensure z-ai-web-dev-sdk is only imported in server-side code
|
|
632
|
+
|
|
633
|
+
**Issue**: "TypeError: response.audio is undefined"
|
|
634
|
+
- **Solution**: The SDK returns a standard Response object, use `await response.arrayBuffer()` instead of accessing `response.audio`
|
|
635
|
+
|
|
636
|
+
**Issue**: Generated audio file is empty or corrupted
|
|
637
|
+
- **Solution**: Ensure you're calling `await response.arrayBuffer()` and properly converting to Buffer: `Buffer.from(new Uint8Array(arrayBuffer))`
|
|
638
|
+
|
|
639
|
+
**Issue**: Audio sounds unnatural
|
|
640
|
+
- **Solution**: Prepare text properly (remove special characters, expand abbreviations)
|
|
641
|
+
|
|
642
|
+
**Issue**: Long processing times
|
|
643
|
+
- **Solution**: Break long text into smaller chunks and process in parallel
|
|
644
|
+
|
|
645
|
+
**Issue**: Next.js caching old API route
|
|
646
|
+
- **Solution**: Create a new API route endpoint or restart the dev server
|
|
647
|
+
|
|
648
|
+
## Performance Tips
|
|
649
|
+
|
|
650
|
+
1. **Reuse SDK Instance**: Create ZAI instance once and reuse
|
|
651
|
+
2. **Implement Caching**: Cache generated audio for repeated text
|
|
652
|
+
3. **Batch Processing**: Process multiple texts efficiently
|
|
653
|
+
4. **Optimize Text**: Remove unnecessary content before generation
|
|
654
|
+
5. **Async Processing**: Use queues for handling multiple requests
|
|
655
|
+
|
|
656
|
+
## Important Notes
|
|
657
|
+
|
|
658
|
+
### API Constraints
|
|
659
|
+
|
|
660
|
+
**Input Text Length**: Maximum 1024 characters per request. For longer text:
|
|
661
|
+
```javascript
|
|
662
|
+
// Split long text into chunks
|
|
663
|
+
const longText = "..."; // Your long text here
|
|
664
|
+
const chunks = splitTextIntoChunks(longText, 1000);
|
|
665
|
+
|
|
666
|
+
for (const chunk of chunks) {
|
|
667
|
+
const response = await zai.audio.tts.create({
|
|
668
|
+
input: chunk,
|
|
669
|
+
voice: 'tongtong',
|
|
670
|
+
speed: 1.0,
|
|
671
|
+
response_format: 'wav',
|
|
672
|
+
stream: false
|
|
673
|
+
});
|
|
674
|
+
// Process each chunk...
|
|
675
|
+
}
|
|
676
|
+
```
|
|
677
|
+
|
|
678
|
+
**Streaming Format Limitation**: When using `stream: true`, only `pcm` format is supported. For `wav` or `mp3` output, use `stream: false`.
|
|
679
|
+
|
|
680
|
+
**Sample Rate**: Audio is generated at 24000 Hz sample rate (recommended setting for playback).
|
|
681
|
+
|
|
682
|
+
### Response Object Format
|
|
683
|
+
|
|
684
|
+
The `zai.audio.tts.create()` method returns a standard **Response** object (not a custom object with an `audio` property). Always use:
|
|
685
|
+
|
|
686
|
+
```javascript
|
|
687
|
+
// ✅ CORRECT
|
|
688
|
+
const response = await zai.audio.tts.create({ ... });
|
|
689
|
+
const arrayBuffer = await response.arrayBuffer();
|
|
690
|
+
const buffer = Buffer.from(new Uint8Array(arrayBuffer));
|
|
691
|
+
|
|
692
|
+
// ❌ WRONG - This will not work
|
|
693
|
+
const response = await zai.audio.tts.create({ ... });
|
|
694
|
+
const buffer = Buffer.from(response.audio); // response.audio is undefined
|
|
695
|
+
```
|
|
696
|
+
|
|
697
|
+
### Available Voices
|
|
698
|
+
|
|
699
|
+
- `tongtong` - 温暖亲切
|
|
700
|
+
- `chuichui` - 活泼可爱
|
|
701
|
+
- `xiaochen` - 沉稳专业
|
|
702
|
+
- `jam` - 英音绅士
|
|
703
|
+
- `kazi` - 清晰标准
|
|
704
|
+
- `douji` - 自然流畅
|
|
705
|
+
- `luodo` - 富有感染力
|
|
706
|
+
|
|
707
|
+
### Speed Range
|
|
708
|
+
|
|
709
|
+
- Minimum: `0.5` (half speed)
|
|
710
|
+
- Default: `1.0` (normal speed)
|
|
711
|
+
- Maximum: `2.0` (double speed)
|
|
712
|
+
|
|
713
|
+
**Important**: Speed values outside the range [0.5, 2.0] will result in API errors.
|
|
714
|
+
|
|
715
|
+
### Volume Range
|
|
716
|
+
|
|
717
|
+
- Minimum: Greater than `0` (exclusive)
|
|
718
|
+
- Default: `1.0` (normal volume)
|
|
719
|
+
- Maximum: `10` (inclusive)
|
|
720
|
+
|
|
721
|
+
**Note**: Volume parameter is optional. When not specified, defaults to 1.0.
|
|
722
|
+
|
|
723
|
+
## Remember
|
|
724
|
+
|
|
725
|
+
- Always use z-ai-web-dev-sdk in backend code only
|
|
726
|
+
- **Input text is limited to 1024 characters maximum** - split longer text into chunks
|
|
727
|
+
- **Speed must be between 0.5 and 2.0** - values outside this range will cause errors
|
|
728
|
+
- **Volume must be greater than 0 and up to 10** - optional parameter with default 1.0
|
|
729
|
+
- **Streaming only supports PCM format** - use non-streaming for WAV or MP3 output
|
|
730
|
+
- The SDK returns a standard Response object - use `await response.arrayBuffer()`
|
|
731
|
+
- Convert ArrayBuffer to Buffer using `Buffer.from(new Uint8Array(arrayBuffer))`
|
|
732
|
+
- Handle audio buffers properly when saving to files
|
|
733
|
+
- Implement error handling for production applications
|
|
734
|
+
- Consider caching for frequently generated content
|
|
735
|
+
- Clean up old audio files periodically to manage storage
|