通用地按需访问数千个图标组件。
💡 这个工具背后的故事: 与图标的旅程继续 - Anthony的博客文章
</td></tr></table>
vite-plugin-icons
已更名为unplugin-icons
,请参阅迁移指南
使用~icons/{collection}/{icon}
约定导入图标名称,并直接将它们作为组件使用。也可以自动导入。
import IconAccessibility from '~icons/carbon/accessibility' import IconAccountBox from '~icons/mdi/account-box' function App() { return ( <div> <IconAccessibility /> <IconAccountBox style={{ fontSize: '2em', color: 'red' }} /> </div> ) }
<script setup> import IconAccessibility from '~icons/carbon/accessibility' import IconAccountBox from '~icons/mdi/account-box' </script> <template> <icon-accessibility/> <icon-account-box style="font-size: 2em; color: red"/> </template>
npm i -D unplugin-icons
我们使用Iconify作为图标数据源(支持100多个图标集)。
你有两种安装方式:
npm i -D @iconify/json
@iconify/json
(约120MB)包含了Iconify的所有图标集,所以你可以一次安装并按需使用任何图标(只有你实际使用的图标会被打包到生产构建中)。
如果你只想使用少数几个图标集,不想下载整个集合,你也可以使用@iconify-json/[collection-id]
单独安装它们。
例如,要安装Material Design Icons,你可以执行:
npm i -D @iconify-json/mdi
为了提高工作效率,你也可以通过启用autoInstall
选项让unplugin-icons
处理安装。
Icons({ // 实验性功能 autoInstall: true, })
它会在你导入图标时安装图标集。会自动检测正确的包管理器(npm
、yarn
或pnpm
)。
你可以在StackBlitz上在线试用此仓库中的示例,请参阅playground页面。
复制任何在线示例并重现你遇到的问题,然后与我们分享链接。
// vite.config.ts import Icons from 'unplugin-icons/vite' export default defineConfig({ plugins: [ Icons({ /* 选项 */ }), ], })
<br></details>
<details> <summary>Rollup</summary><br>// rollup.config.js import Icons from 'unplugin-icons/rollup' export default { plugins: [ Icons({ /* 选项 */ }), ], }
<br></details>
<details> <summary>Webpack</summary><br>// webpack.config.js module.exports = { /* ... */ plugins: [ require('unplugin-icons/webpack').default({ /* 选项 */ }), ], }
<br></details>
<details> <summary>Nuxt</summary><br>Nuxt 2和Nuxt Bridge
// nuxt.config.js export default { buildModules: [ ['unplugin-icons/nuxt', { /* 选项 */ }], ], }
Nuxt 3
// nuxt.config.js export default defineNuxtConfig({ modules: [ ['unplugin-icons/nuxt', { /* 选项 */ }] ], })
或与unplugin-vue-components解析器一起使用
import ViteComponents from 'unplugin-vue-components/vite' import IconsResolver from 'unplugin-icons/resolver' // nuxt.config.ts export default defineNuxtConfig({ modules: [ 'unplugin-icons/nuxt', ], vite: { plugins: [ ViteComponents({ resolvers: [ IconsResolver({/* 选项 */}), ], }), ], }, })
查看Nuxt示例以获取工作示例项目。
<br></details>
<details> <summary>Vue CLI</summary><br>// vue.config.js module.exports = { configureWebpack: { plugins: [ require('unplugin-icons/webpack').default({ /* 选项 */ }), ], }, }
你也可以将Vue配置文件重命名为vue.config.mjs
并使用静态导入语法(你应该使用最新的@vue/cli-service ^5.0.8
):
// vue.config.mjs import Icons from 'unplugin-icons/webpack' export default { configureWebpack: { plugins: [ Icons({ /* 选项 */ }), ], }, }
<br></details>
<details> <summary>SvelteKit</summary><br>unplugin-icons
插件应该在vite.config.js
配置文件中配置:
// vite.config.js import { defineConfig } from 'vite' import { sveltekit } from '@sveltejs/kit/vite' import Icons from 'unplugin-icons/vite' export default defineConfig({ plugins: [ sveltekit(), Icons({ compiler: 'svelte', }) ] })
如果遇到模块导入错误,请查看下面框架 -> Svelte
部分的说明。
查看SvelteKit示例以获取工作示例项目。
<br></details>
<details> <summary>Svelte + Vite</summary><br>Svelte支持需要@sveltejs/vite-plugin-svelte
插件:
npm i -D @sveltejs/vite-plugin-svelte
unplugin-icons
插件应该在vite.config.js
配置文件中配置:
// vite.config.js import { defineConfig } from 'vite' import { svelte } from '@sveltejs/vite-plugin-svelte' import Icons from 'unplugin-icons/vite' export default defineConfig({ plugins: [ svelte(), Icons({ compiler: 'svelte', }), ], })
如果遇到模块导入错误,请查看下面框架 -> Svelte
部分的说明。
查看Svelte + Vite示例以获取工作示例项目。
<br></details>
<details> <summary>Next.js</summary><br> `unplugin-icons` 插件应该在 `next.config.js` 配置文件中进行配置:// next.config.js /** @type {import('next').NextConfig} */ module.exports = { reactStrictMode: true, webpack(config) { config.plugins.push( require('unplugin-icons/webpack').default({ compiler: 'jsx', jsx: 'react' }) ) return config }, }
你也可以将 Next 配置文件重命名为 next.config.mjs
并使用静态导入语法:
// next.config.mjs import Icons from 'unplugin-icons/webpack' /** @type {import('next').NextConfig} */ export default { reactStrictMode: true, webpack(config) { config.plugins.push( Icons({ compiler: 'jsx', jsx: 'react' }) ) return config } }
如果遇到模块导入错误,请查看下面 框架 -> React
部分的说明。
⚠️ 警告: 导入图标时必须在导入路径中明确添加 .jsx
扩展名,以便 Next.js 知道如何加载它,例如:
import IconArrowRight from '~icons/dashicons/arrow-right.jsx'; // ^-- 写上 `.jsx` 以避免 // https://github.com/antfu/unplugin-icons/issues/103 // ...后续代码 <IconArrowRight />
查看 Next.js 示例 获取一个可运行的示例项目。
<br></details>
<details> <summary>esbuild</summary><br>// esbuild.config.js import { build } from 'esbuild' import Icons from 'unplugin-icons/esbuild' build({ /* ... */ plugins: [ Icons({ /* 选项 */ }), ], })
<br></details>
<details> <summary>Astro</summary><br>// astro.config.mjs import { defineConfig } from 'astro/config' import Icons from 'unplugin-icons/vite' // https://astro.build/config export default defineConfig({ vite: { plugins: [ Icons({ compiler: 'astro', }), ], }, })
查看 Astro 示例 获取一个可运行的示例项目。
<br></details>
<details> <summary>Astro + Vue</summary><br>需要安装 @astrojs/vue。
// astro.config.mjs import { defineConfig } from 'astro/config' import Vue from '@astrojs/vue' import Icons from 'unplugin-icons/vite' // https://astro.build/config export default defineConfig({ integrations: [ Vue(), ], vite: { plugins: [ Icons({ compiler: 'vue3', }), ], }, })
查看 Astro + Vue 示例 获取一个可运行的示例项目。
<br></details>
Vue 3 / Vue 2.7+ 支持需要对等依赖 @vue/compiler-sfc
:
npm i -D @vue/compiler-sfc
Icons({ compiler: 'vue3' })
类型声明
<!-- eslint-skip -->// tsconfig.json { "compilerOptions": { "types": [ "unplugin-icons/types/vue", ] } }
查看 Vue 3 示例 获取一个可运行的示例项目。
<br></details>
<details> <summary>Vue 2(仅适用于 2.7 以下版本)</summary><br>Vue 2 支持需要对等依赖 vue-template-compiler
:
npm i -D vue-template-compiler
Icons({ compiler: 'vue2' })
类型声明
<!-- eslint-skip -->// tsconfig.json { "compilerOptions": { "types": [ "unplugin-icons/types/vue", ] } }
查看 Vue 2 示例 获取一个可运行的示例项目。
<br></details>
<details> <summary>React</summary><br>JSX 支持需要对等依赖 @svgr/core
及其插件 @svgr/plugin-jsx
:
npm i -D @svgr/core @svgr/plugin-jsx
Icons({ compiler: 'jsx', jsx: 'react' })
类型声明
<!-- eslint-skip -->// tsconfig.json { "compilerOptions": { "types": [ "unplugin-icons/types/react", ] } }
查看 React 示例 获取一个可运行的示例项目。
<br></details>
<details> <summary>Preact</summary><br>JSX 支持需要对等依赖 @svgr/core
及其插件 @svgr/plugin-jsx
:
npm i -D @svgr/core @svgr/plugin-jsx
Icons({ compiler: 'jsx', jsx: 'preact' })
类型声明
<!-- eslint-skip -->// tsconfig.json { "compilerOptions": { "types": [ "unplugin-icons/types/preact", ] } }
查看 Preact 示例 获取一个可运行的示例项目。
<br></details>
<details> <summary>Solid</summary><br>Icons({ compiler: 'solid' })
类型声明
<!-- eslint-skip -->// tsconfig.json { "compilerOptions": { "types": [ "unplugin-icons/types/solid", ] } }
查看 Solid 示例 获取一个可运行的示例项目。
<br></details>
<details> <summary>Svelte</summary><br>Icons({ compiler: 'svelte' })
类型声明
对于 SvelteKit,在 src/app.d.ts
文件中:
import 'unplugin-icons/types/svelte'
对于 Svelte + Vite,在 src/vite-env.d.ts
文件中:
/// <reference types="svelte" /> /// <reference types="vite/client" /> /// <reference types="unplugin-icons/types/svelte" />
如果你仍在使用 Svelte 3,请将引用替换为 Svelte 3:
/// <reference types="svelte" /> /// <reference types="vite/client" /> /// <reference types="unplugin-icons/types/svelte3" />
查看 Svelte 示例 获取一个可运行的示例项目。
<br></details>
<details> <summary>Astro</summary><br>类型声明
<!-- eslint-skip -->// tsconfig.json { "compilerOptions": { "types": [ "unplugin-icons/types/astro", ] } }
查看 Astro 示例 获取一个可运行的示例项目。
<br></details>
<details> <summary>Astro + Vue</summary><br>只需要 Vue 类型声明:
// tsconfig.json { "compilerOptions": { "types": [ "unplugin-icons/types/vue" ] } }
查看 Astro + Vue 示例 获取一个可运行的示例项目。
<br></details>
<details> <summary>Qwik</summary><br>Qwik 支持需要对等依赖 @svgx/core
:
npm i -D @svgx/core
Icons({ compiler: 'qwik' })
或者,你可以使用 jsx
编译器,需要对等依赖 @svgr/core
及其插件 @svgr/plugin-jsx
:
npm i -D @svgr/core @svgr/plugin-jsx
Icons({ compiler: 'jsx', jsx: 'qwik' })
类型声明
<!-- eslint-skip -->// tsconfig.json { "compilerOptions": { "types": [ "unplugin-icons/types/qwik", ] } }
查看 Qwik 示例 获取一个 可运行的示例项目。
<br></details>
从 v0.13.2
开始,你还可以使用 raw
编译器来访问 svg
图标并在 HTML 模板中使用它,只需在图标查询参数中添加 raw
。
例如,使用 vue3
:
<script setup lang='ts'> import RawMdiAlarmOff from '~icons/mdi/alarm-off?raw&width=4em&height=4em' import RawMdiAlarmOff2 from '~icons/mdi/alarm-off?raw&width=1em&height=1em' </script> <template> <!-- 原始示例 --> <pre> import RawMdiAlarmOff from '~icons/mdi/alarm-off?raw&width=4em&height=4em' {{ RawMdiAlarmOff }} import RawMdiAlarmOff2 from '~icons/mdi/alarm-off?raw&width=1em&height=1em' {{ RawMdiAlarmOff2 }} </pre> <!-- svg 示例 --> <span v-html="RawMdiAlarmOff" /> <span v-html="RawMdiAlarmOff2" /> </template>
从 v0.11
开始,你现在可以加载自己的图标!
从 v0.13
开始,你还可以为 FileSystemIconLoader
提供一个转换回调函数。
import { promises as fs } from 'node:fs' // 加载器辅助函数 import { FileSystemIconLoader } from 'unplugin-icons/loaders' Icons({ customCollections: { // 键作为集合名称 'my-icons': { account: '<svg><!-- ... --></svg>', // 懒加载你的自定义图标 settings: () => fs.readFile('./path/to/my-icon.svg', 'utf-8'), /* ... */ }, 'my-other-icons': async (iconName) => { // 你的自定义加载器。可以做任何你想做的事。 // 例如,从远程服务器获取: return await fetch(`https://example.com/icons/${iconName}.svg`).then(res => res.text()) }, // 一个从文件系统加载图标的辅助函数 // `./assets/icons` 下带 `.svg` 扩展名的文件将按其文件名加载 // 你还可以提供一个转换回调函数来改变每个图标(可选) 'my-yet-other-icons': FileSystemIconLoader( './assets/icons', svg => svg.replace(/^<svg /, '<svg fill="currentColor" '), ), }, })
然后这样使用
import IconAccount from '~icons/my-icons/account' import IconFoo from '~icons/my-other-icons/foo' import IconBar from '~icons/my-yet-other-icons/bar'
💡 SVG 创作提示:
- 要使你的图标颜色可适应,在你的 SVG 中设置
fill="currentColor"
或stroke="currentColor"
。- 不要指定
height
和width
,我们会为你设置它们。
当使用解析器进行自动导入时,你需要告诉它你的自定义集合名称:
IconResolver({ customCollections: [ 'my-icons', 'my-other-icons', 'my-yet-other-icons', ], })
查看 Vue 3 + Vite 示例。
从版本 v0.18.3
开始,你可以使用其他包来加载其他作者的图标。
警告:外部包必须包含 icons.json
文件,其中包含 IconifyJSON
格式的 icons
数据,可以使用 Iconify Tools 导出。查看 将图标集导出为 JSON 包 了解更多详情。
例如,你可以使用 an-awesome-collection
或 @my-awesome-collections/some-collection
来加载你的自定义或第三方图标:
// 加载器辅助函数 import { ExternalPackageIconLoader } from 'unplugin-icons/loaders' Icons({ customCollections: ExternalPackageIconLoader('my-awesome-collection') })
当与解析器一起使用进行自动导入时,记住你需要告诉它你的自定义集合名称:
IconResolver({ customCollections: [ 'my-awesome-collection', ], })
你还可以将它与 FileSystemIconLoader
或其他自定义图标加载器结合使用:
// 加载器辅助函数 import { ExternalPackageIconLoader, FileSystemIconLoader } from 'unplugin-icons/loaders' Icons({ customCollections: { ...ExternalPackageIconLoader('an-awesome-collection'), ...ExternalPackageIconLoader('@my-awesome-collections/some-collection'), ...ExternalPackageIconLoader('@my-awesome-collections/some-other-collection'), 'my-yet-other-icons': FileSystemIconLoader( './assets/icons', svg => svg.replace(/^<svg /, '<svg fill="currentColor" '), ), }, })
查看 Vue 3 + Vite 示例。
从 v0.13
开始,你还可以使用 iconCustomizer
配置选项或在导入时使用查询参数来自定义每个图标。
query
参数的优先级高于 iconCustomizer
,而 iconCustomizer
的优先级高于 configuration
。
iconCustomizer
和 query
参数将应用于任何集合,即 custom
加载器、customCollections
中的 inlined
或来自 @iconify
的每个图标。
例如,你可以配置 iconCustomizer
来更改集合中的所有图标或集合中的单个图标:
import { promises as fs } from 'node:fs' // 加载器辅助函数 import { FileSystemIconLoader } from 'unplugin-icons/loaders' Icons({ customCollections: { // 键作为集合名称 'my-icons': { account: '<svg><!-- ... --></svg>', // 懒加载你的自定义图标 settings: () => fs.readFile('./path/to/my-icon.svg', 'utf-8'), /* ... */ }, 'my-other-icons': async (iconName) => { // 你的自定义加载器。可以做任何你想做的事。 // 例如,从远程服务器获取: return await fetch(`https://example.com/icons/${iconName}.svg`).then(res => res.text()) }, // 一个从文件系统加载图标的辅助函数 // `./assets/icons` 下带 `.svg` 扩展名的文件将按其文件名加载 // 你还可以提供一个转换回调函数来改变每个图标(可选) 'my-yet-other-icons': FileSystemIconLoader( './assets/icons', svg => svg.replace(/^<svg /, '<svg fill="currentColor" '), ), }, iconCustomizer(collection, icon, props) { // 自定义此集合中的所有图标 if (collection === 'my-other-icons') { props.width = '4em' props.height = '4em' } // 自定义此集合中的这个图标 if (collection === 'my-icons' && icon === 'account') { props.width = '6em' props.height = '6em' } // 自定义此集合中的这个 @iconify 图标 if (collection === 'mdi' && icon === 'account') { props.width = '2em' props.height = '2em' } }, })
或者你可以使用 query
参数应用于单个图标:
<script setup lang='ts'> import MdiAlarmOff from 'virtual:icons/mdi/alarm-off?width=4em&height=4em' import MdiAlarmOff2 from 'virtual:icons/mdi/alarm-off?width=1em&height=1em' </script> <template> <!-- width=4em 和 height=4em --> <mdi-alarm-off /> <!-- width=4em 和 height=4em --> <MdiAlarmOff /> <!-- width=1em 和 height=1em --> <MdiAlarmOff2 /> </template>
查看 vite-vue3
示例项目中的 src/App.vue
组件和 vite.config.ts
配置。
从版本 0.14.2
开始,在加载自定义图标时,你可以对它们进行转换,例如添加带有 currentColor
的 fill
属性:
Icons({ customCollections: { // 键作为集合名称 'my-icons': { account: '<svg><!-- ... --></svg>', /* ... */ }, }, transform(svg, collection, icon) { // 对此集合中的这个图标应用 fill if (collection === 'my-icons' && icon === 'account') return svg.replace(/^<svg /, '<svg fill="currentColor" ') return svg }, })
当将此插件与你的自定义图标一起使用时,考虑使用类似于 Iconify 对任何图标集所 做的清理过程。你需要的所有工具都可以在 Iconify Tools 中找到。
你可以查看这个仓库,在 SvelteKit
项目中使用 unplugin-icons
:https://github.com/iconify/tools/tree/main/%40iconify-demo/unplugin-svelte。
从 Iconify 的 清理图标 文章中了解更多详情。
vite-plugin-icons
迁移package.json
{ "devDependencies": { - "vite-plugin-icons": "*", + "unplugin-icons": "^0.7.0", } }
vite.config.json
import Components from 'unplugin-vue-components/vite' - import Icons, { ViteIconsResolver } from 'vite-plugin-icons' + import Icons from 'unplugin-icons/vite' + import IconsResolver from 'unplugin-icons/resolver' export default { plugins: [ Vue(), Components({ resolvers: [ IconsResolver() ], }), Icons(), ], }
*
- 导入用法
- import IconComponent from 'virtual:vite-icons/collection/name' + import IconComponent from '~icons/collection/name'
如果你更喜欢,在 Vite 中仍可以使用
virtual:icons
前缀,但在 Webpack 中尚不支持,我们在文档中将其统一作为一种解决方案。
你可以为所有图标设置默认样式。 以下配置显示了每个选项的默认值:
Icons({ scale: 1.2, // 图标相对于 1em 的缩放比例 defaultStyle: '', // 应用于图标的样式 defaultClass: '', // 应用于图标的类名 compiler: null, // 'vue2', 'vue3', 'jsx' jsx: 'react', // 'react' 或 'preact' })
与 unplugin-vue-components
一起使用
例如在 Vite 中:
// vite.config.js import Vue from '@vitejs/plugin-vue' import Icons from 'unplugin-icons/vite' import IconsResolver from 'unplugin-icons/resolver' import Components from 'unplugin-vue-components/vite' export default { plugins: [ Vue(), Components({ resolvers: [ IconsResolver(), ], }), Icons(), ], }
然后你可以随意使用任何图标,无需显式导入。只有使用到的图标会被打包。
</details> <details> <summary>React & Solid</summary><br><template> <i-carbon-accessibility/> <i-mdi-account-box style="font-size: 2em; color: red"/> </template>
与 unplugin-auto-import
一起使用
例如在 Vite 中:
// vite.config.js import Icons from 'unplugin-icons/vite' import IconsResolver from 'unplugin-icons/resolver' import AutoImport from 'unplugin-auto-import/vite' export default { plugins: [ /* ... */ AutoImport({ resolvers: [ IconsResolver({ prefix: 'Icon', extension: 'jsx', }), ], }), Icons({ compiler: 'jsx', // 或 'solid' }), ], }
然后你可以使用带有 Icon
前缀的任何图标,无需显式导入。类型声明将会动态生成。
</details>export function Component() { return ( <div> <IconCarbonApps /> <IconMdiAccountBox style="font-size: 2em; color: red" /> </div> ) }
使用组件解析器时,你必须遵循图标的命名转换规则,以便正确推断。
{prefix}-{collection}-{icon}
collection
字段遵循 Iconify 的集合 ID。
默认情况下,前缀设置为 i
,你可以通过配置自定义
IconsResolver({ prefix: 'icon', // <-- })
<template> <icon-mdi-account /> </template>
也支持无前缀模式
IconsResolver({ prefix: false, // <-- // 这是可选的,默认启用 Iconify 支持的所有集合 enabledCollections: ['mdi'], })
<template> <mdi-account /> </template>
使用组件解析器时,你必须使用可能很长或冗余的集合名称:例如,
使用 icon-park
集合时,你需要这样使用 <icon-icon-park-abnormal />
。
你可以为 IconResolver
插件中的任何集合添加别名:
IconsResolver({ alias: { park: 'icon-park', fas: 'fa-solid', // ... } })
你可以使用别名或集合名称,插件将解析两者。
继续上面的例子,使用前面的 alias
条目配置插件后,你现在可以使用
<icon-park-abnormal />
或 <icon-icon-park-abnormal />
。
本项目是我的<a href='https://github.com/antfu-sponsors'>赞助计划</a>的一部分
<p align="center"> <a href="https://yellow-cdn.veclightyear.com/835a84d5/5f330412-ffc9-4f0c-a769-85da239932b5.svg"> <img src='https://yellow-cdn.veclightyear.com/835a84d5/5f330412-ffc9-4f0c-a769-85da239932b5.svg'/> </a> </p>MIT 许可证 © 2020-现在 Anthony Fu
AI辅助编程,代码自动修复
Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。
AI小说写作助手,一站式润色、改写、扩写
蛙蛙写作—国内先进的AI写作平台,涵盖小说、学术、社交媒体等多场景。提供续写、改写、润色等功能,助力创作者高效优化写作流程。界面简洁,功能全面,适合各类写作者提升内容品质和工作效率。
全能AI智能助手,随时解答生活与工作的多样问题
问小白,由元石科技研发的AI智能助手,快速准确地解答各种生活和工作问题,包括但不限于搜索、规划和社交互动,帮助用户在日常生活中提高效率,轻松管理个人事务。
实时语音翻译/同声传译工具
Transly是一个多场景的AI大语言模型驱动的同声传译、专业翻译助手,它拥有超精准的音频识别翻译能力,几乎零延迟的使用体验和支持多国语言可以让你带它走遍全球,无论你是留学生、商务人士、韩剧美剧爱好者,还是出国游玩、多国会议、跨国追星等等,都可以满足你所有需要同传的场景需求,线上线下通用,扫除语言障碍,让全世界的语言交流不再有国界。
一键生成PPT和Word,让学习生活更轻松
讯飞智文是一个利用 AI 技术的项目,能够帮助用户生成 PPT 以及各类文档。无论是商业领域的市场分析报告、年度目标制定,还是学生群体的职业生涯规划、实习避坑指南,亦或是活动策划、旅游攻略等内容,它都能提供支持,帮助用户精准表达,轻松呈现各种信息。
深度推理能力全新升级,全面对标OpenAI o1
科大讯飞的星火大模型,支持语言理解、知识问答和文本创作等多功能,适用于多种文件和业务场景,提升办公和日常生活的效率。讯飞星火是一个提供丰富智能服务的平台,涵盖科技资讯、图像创作、写作辅助、编程解答、科研文献解读等功能,能为不同需求的用户提供便捷高效的帮助,助力用户轻松获取信息、解决问题,满足多样化使用场景。
一种基于大语言模型的高效单流解耦语音令牌文本到语音合成模型
Spark-TTS 是一个基于 PyTorch 的开源文本到语音合成项目,由多个知名机构联合参与。该项目提供了高效的 LLM(大语言模型)驱动的语音合成方案,支持语音克隆和语音创建功能,可通过命令行界面(CLI)和 Web UI 两种方式使用。用户可以根据需求调整语音的性别、音高、速度等参数,生成高质量的语音。该项目适用于多种场景,如有声读物制作、智能语音助手开发等。
AI助力,做PPT更简单!
咔片是一款轻量化在线演示设计工具,借助 AI 技术,实现从内容生成到智能设计的一站式 PPT 制作服务。支持多种文档格式导入生成 PPT,提供海量模板、智能美化、素材替换等功能,适用于销售、教师、学生等各类人群,能高效制作出高品质 PPT,满足不同场景演示需求。
选题、配图、成文,一站式创作,让内容运营更高效
讯飞绘文,一个AI集成平台,支持写作、选题、配图、排版和发布。高效生成适用于各类媒体的定制内容,加速品牌传播,提升内容营销效果。
专业的AI公文写作平台,公文写作神器
AI 材料星,专业的 AI 公文写作辅助平台,为体制内工作人员提供高效的公文写作解决方案。拥有海量公文文库、9 大核心 AI 功能,支持 30 + 文稿类型生成,助力快速完成领导讲话、工作总结、述职报告等材料,提升办公效率,是体制打工人的得力写作神器。
最新AI工具、AI资讯
独家AI资源、AI项目落地
微信扫一扫关注公众号