flutter_login

flutter_login

Flutter登录组件 提供丰富动画效果和自定义选项

Flutter Login 是一个功能丰富的登录注册组件,提供多种动画效果展示Flutter界面能力。支持用户验证、密码恢复、注册确认等功能,并可自定义主题样式。使用简单,几行代码即可集成,帮助开发者快速实现登录功能。组件高度可定制,适合各类Flutter应用使用。

Flutter登录组件用户认证UI设计动画效果Github开源项目

Flutter登录

pub包 加入聊天 工作流

FlutterLogin是一个现成的登录/注册组件,具有多种动画效果,展示了Flutter的强大功能。

<p align="center"> <a href='https://i.imgur.com/z3FJSe7.mp4'> <img src='https://yellow-cdn.veclightyear.com/835a84d5/ceca4552-2084-43ba-a30c-b8d003c1e990.gif' width=320> </a> </p>

安装

请按照这里的安装说明进行操作。

参考

属性类型描述
onSignupAuthCallback<sub>当用户在注册模式下点击提交按钮时调用。它接收一个SignupData对象,包含姓名、密码,如果additionalSignUpFields不为空,还包含用户填写的额外字段,以Map<String,String>形式提供。</sub>
onConfirmSignupConfirmSignupCallback<sub>当用户在确认注册时点击提交按钮时调用。如果未指定,用户将不需要确认注册。</sub>
confirmSignupRequiredConfirmSignupRequiredCallback<sub>用于在运行时决定是否需要确认的附加选项。如果未指定,当onConfirmSignup被指定时,用户将需要确认注册。</sub>
confirmSignupKeyboardTypeTextInputType<sub>确认注册字段的键盘类型</sub>
onResendCodeAuthCallback<sub>当用户在确认注册时点击重新发送代码按钮时调用。仅在提供onConfirmSignup时需要。</sub>
onLoginAuthCallback<sub>当用户在登录模式下点击提交按钮时调用</sub>
onRecoverPasswordRecoverCallback<sub>当用户在找回密码模式下点击提交按钮时调用</sub>
onConfirmRecoverConfirmRecoverCallback<sub>当用户在找回密码模式下提交确认码并设置新密码时调用。如果未指定,将不使用确认码来找回密码。</sub>
titleString<sub>登录[Card]上方的大文本,通常是应用或公司名称。如果不需要标题,将字符串留空或设为null。</sub>
logoImageProvider或String<sub>要显示的logo图像的图像提供者或资源路径字符串</sub>
messagesLoginMessages<sub>描述所有标签、文本提示、按钮文本和其他认证描述</sub>
themeLoginTheme<sub>FlutterLogin的主题。如果未指定,将使用默认主题,如演示gif所示,并使用最近的Theme小部件中的配色方案</sub>
userTypeLoginUserType<sub>FlutterLogin的用户类型。如果未指定,将使用默认的电子邮件用户类型</sub>
userValidator<sub>FormFieldValidator<String></sub><sub>用户字段验证逻辑,在此添加自定义验证。默认为电子邮件验证逻辑。预期返回验证失败时显示的错误消息[String],或验证成功时返回[null]</sub>
validateUserImmediately<sub>bool</sub><sub>是在失去焦点后立即验证电子邮件[true]还是在表单提交后验证[false]。默认:[false]</sub>
passwordValidator<sub>FormFieldValidator<String></sub><sub>userValidator相同,但用于密码</sub>
<sub>onSubmitAnimationCompleted</sub>Function<sub>在提交动画完成后调用。在此处放置路由转换逻辑</sub>
logoTagString<sub>logo图像的Hero标签。如果未指定,在更改路由时它将简单地淡出</sub>
titleTagString<sub>标题文本的Hero标签。如果想要在hero动画前后使用不同的字体大小,需要指定LoginTheme.beforeHeroFontSizeLoginTheme.afterHeroFontSize</sub>
showDebugButtonsbool<sub>显示调试按钮以快速前进/后退登录动画。在发布模式下,无论传入的值如何,此项都将被覆盖为false</sub>
hideForgotPasswordButtonbool<sub>如果设置为true,则隐藏"忘记密码"按钮</sub>
hideProvidersTitlebool<sub>如果设置为true,则隐藏登录提供商上方的标题。如果提供商列表为空,这将无效,因为标题无论如何都会被隐藏。默认为false</sub>
disableCustomPageTransformerbool<sub>禁用自定义转换,以解决RenderBox未布局错误。有关更多信息,请参见#97</sub>
additionalSignUpFieldsMap<String, UserFormField><sub>用于指定额外的表单字段;该表单在注册后立即显示。最多可以提供6个额外字段。</sub>
onSwitchToAdditionalFieldsAdditionalFieldsCallback<sub>当用户切换到额外字段时调用。</sub>
navigateBackAfterRecoverybool<sub>成功找回密码后导航回登录页面。</sub>
savedEmailString<sub>用户字段的预填值(例如,通过其他方式从上一个会话保存,如通过SharedPreferences)</sub>
savedPasswordString<sub>密码字段的预填值(例如,通过其他方式从上一个会话保存,如通过SharedPreferences)。也会在Auth类中设置确认密码</sub>
termsOfServiceTermOfService<sub>注册期间要列出的服务条款列表。在onSignup回调中,LoginData包含TermOfServiceResult列表</sub>
children[Widget]<sub>可以添加到登录屏幕堆栈的小部件列表。可用于显示自定义横幅或logo。</sub>
scrollablebool<sub>当设置为true时,登录卡片在需要时会变为可滚动而不是调整大小。</sub>
headerWidgetWidget<sub>可以放置在登录卡片顶部的小部件。</sub>
注意: 建议在两个地方使用相同的子部件作为 Hero 部件的子部件。对于标题的hero动画,在下一个界面中使用 LoginThemeHelper.loginTextStyle 来获取登录界面中精确文本部件的样式。可以通过添加以下行来访问 LoginThemeHelper
import 'package:flutter_login/theme.dart';

LoginMessages

属性类型描述
userHintString用户字段[TextField]的提示文本(注:用户字段可以是名称、邮箱或电话。更多信息请查看:LoginUserType
passwordHintString密码[TextField]的提示文本
confirmPasswordHintString确认密码[TextField]的提示文本
forgotPasswordButtonString忘记密码按钮的标签
loginButtonString登录按钮的标签
signupButtonString注册按钮的标签
recoverPasswordButtonString找回密码按钮的标签
recoverPasswordIntroString密码找回表单的介绍文本
recoverPasswordDescriptionString密码找回表单的描述,当未提供onConfirmRecover回调时显示
recoverCodePasswordDescriptionString密码找回表单的描述,当提供onConfirmRecover回调时显示
goBackButtonString返回按钮的标签。用于从密码找回表单返回到登录/注册表单
confirmPasswordErrorString当确认密码与原始密码不匹配时显示的错误消息
recoverPasswordSuccessString提交密码找回后显示的成功消息
confirmSignupIntroString确认注册卡片的介绍文本
confirmationCodeHintString确认码[TextField]的提示文本
confirmationCodeValidationErrorString当确认码为空时显示的错误消息
resendCodeButtonString重新发送验证码按钮的标签
resendCodeSuccessString重新发送确认码后显示的成功消息
confirmSignupButtonString确认注册按钮的标签
confirmSignupSuccessString确认注册后显示的成功消息
confirmRecoverIntroString确认找回密码卡片的介绍文本
recoveryCodeHintString恢复码[TextField]的提示文本
recoveryCodeValidationErrorString当恢复码为空时显示的错误消息
setPasswordButtonString密码找回时设置密码按钮的标签
confirmRecoverSuccessString确认找回密码后显示的成功消息
flushbarTitleErrorString错误情况下Flushbar的标题
flushbarTitleSuccessString成功情况下Flushbar的标题
providersTitleString显示在登录提供商上方的字符串,默认为"或通过以下方式登录"

LoginTheme

属性类型描述
primaryColorColor部件主要部分的背景色,如登录界面和按钮
accentColorColor次要颜色,用于标题文本颜色、加载图标等。应与[primaryColor]形成对比
errorColorColor用于[TextField]输入验证错误的颜色
cardThemeCardTheme用于渲染认证[Card]的颜色和样式
inputThemeInputDecorationTheme定义所有[TextField]的外观
buttonThemeLoginButtonTheme用于自定义提交按钮的形状、高度和颜色的主题
titleStyleTextStyle大标题的文本样式
bodyStyleTextStyle小文本的文本样式,如找回密码描述
textFieldStyleTextStyle[TextField]输入文本的文本样式
buttonStyleTextStyle按钮文本的文本样式
beforeHeroFontSizedouble定义登录界面中标题的字体大小(hero转换前)
afterHeroFontSizedouble定义登录界面后的界面中标题的字体大小(hero转换后)
pageColorLightColor登录界面的可选浅色背景色;如果提供,用于浅色渐变而不是primaryColor
pageColorDarkColor登录界面的可选深色背景色;如果提供,用于深色渐变而不是primaryColor
footerBottomPaddingdouble页脚底部内边距;如果未提供,默认为0
switchAuthTextColorColor切换认证文本的可选颜色,如果未指定则使用[primaryColor]
logoWidthdoublelogo的宽度,其中1为登录卡片的全宽。如果未提供,默认为0.75
primaryColorAsInputLabelbool如果你想使用主色作为输入标签,设置为true。默认为false

LoginUserType

枚举描述
EMAIL用户字段将设置为电子邮件
NAME用户字段将设置为用户名
FIRSTNAME用户字段将设置为名字
LASTNAME用户字段将设置为姓氏
PHONE用户字段将设置为电话号码
INTLPHONE用户字段将设置为带国家代码选择的电话号码
TEXT用户字段将设置为文本

[LoginUserType]将改变用户字段[TextField]的行为。自动填充和键盘类型将根据你传递的用户类型自动调整。

UserFormField

属性类型描述
keyNameString字段的标识符,它将作为返回映射中的键。请确保这是唯一的,否则将抛出错误
displayNameString表单上显示的字段名称。如果未给出,默认为keyName
defaultValueString字段的默认值,如果给出,字段将预填充此值
fieldValidatorFormFieldValidator<String>验证字段的函数。成功时应返回null,或返回一个包含错误说明的字符串
iconIcon?字段左侧显示的图标。未提供时默认为用户图标
userTypeLoginUserType表单的LoginUserType。将根据此类型显示相应的键盘和建议。默认为LoginUserType.user
tooltipInlineSpan该字段的附加描述

LoginProvider

属性类型描述
buttonWidget用于 [LoginProvider] 的按钮 - 参见示例使用 [SignInButton] 包
iconIconData[LoginProvider] 按钮使用的图标
labelString提供商下方显示的标签
callbackProviderAuthCallback当按下提供商按钮时调用的函数。成功时必须返回 null,失败时返回描述错误的 String
providerNeedsSignUpCallbackProviderNeedsSignUpCallback?可选。要求将 additionalSignUpFields 参数传递给 FlutterLogin。如果给出,此回调必须返回 Future<bool>。如果评估为 true,则在评估 callback 后立即显示包含额外注册字段的卡片。如果未给出,默认行为是不显示注册卡片。

注意: [button] 和 [icon] 都可以添加到 [LoginProvider],但 [button] 优先于 [icon]

TermOfService

属性类型描述
idString仅在注册回调中用于标识单个可选的服务条款。
mandatorybool如果设置为 true,且在提交表单验证时未勾选该条款,将显示验证错误消息。
textString显示的服务条款名称。
linkUrlString指向附加服务条款信息的网页链接。
validationErrorMessageString要显示的验证错误消息。
initialValuebool指定复选框是否初始化为已选中状态。

TermOfServiceResult

属性类型描述
termTermOfService包含一个服务条款对象。
acceptedbool表示在注册过程中是否选择了该服务条款

示例

你可以在 示例项目 中查看完整示例,该示例产生了上面的 gif 效果

基本示例

import 'package:flutter/material.dart'; import 'package:flutter_login/flutter_login.dart'; import 'dashboard_screen.dart'; const users = { 'dribbble@gmail.com': '12345', 'hunter@gmail.com': 'hunter', }; class LoginScreen extends StatelessWidget { const LoginScreen({super.key}); Duration get loginTime => const Duration(milliseconds: 2250); Future<String?> _authUser(LoginData data) { debugPrint('Name: ${data.name}, Password: ${data.password}'); return Future.delayed(loginTime).then((_) { if (!users.containsKey(data.name)) { return 'User not exists'; } if (users[data.name] != data.password) { return 'Password does not match'; } return null; }); } Future<String?> _signupUser(SignupData data) { debugPrint('Signup Name: ${data.name}, Password: ${data.password}'); return Future.delayed(loginTime).then((_) { return null; }); } Future<String> _recoverPassword(String name) { debugPrint('Name: $name'); return Future.delayed(loginTime).then((_) { if (!users.containsKey(name)) { return 'User not exists'; } return null; }); } Widget build(BuildContext context) { return FlutterLogin( title: 'ECORP', logo: const AssetImage('assets/images/ecorp-lightblue.png'), onLogin: _authUser, onSignup: _signupUser, onSubmitAnimationCompleted: () { Navigator.of(context).pushReplacement(MaterialPageRoute( builder: (context) => const DashboardScreen(), )); }, onRecoverPassword: _recoverPassword, ); } }
<img src="https://yellow-cdn.veclightyear.com/835a84d5/a3eaf7cb-82d4-4af7-932e-877d6fa8a2b2.png" width="300">

带登录提供商的基本示例

import 'package:flutter/material.dart'; import 'package:flutter_login/flutter_login.dart'; import 'dashboard_screen.dart'; const users = { 'dribbble@gmail.com': '12345', 'hunter@gmail.com': 'hunter', }; class LoginScreen extends StatelessWidget { const LoginScreen({super.key}); Duration get loginTime => const Duration(milliseconds: 2250); Future<String?> _authUser(LoginData data) { debugPrint('Name: ${data.name}, Password: ${data.password}'); return Future.delayed(loginTime).then((_) { if (!users.containsKey(data.name)) { return 'User not exists'; } if (users[data.name] != data.password) { return 'Password does not match'; } return null; }); } Future<String?> _signupUser(SignupData data) { debugPrint('Signup Name: ${data.name}, Password: ${data.password}'); return Future.delayed(loginTime).then((_) { return null; }); } Future<String> _recoverPassword(String name) { debugPrint('Name: $name'); return Future.delayed(loginTime).then((_) { if (!users.containsKey(name)) { return 'User not exists'; } return null; }); } Widget build(BuildContext context) { return FlutterLogin( title: 'ECORP', logo: const AssetImage('assets/images/ecorp-lightblue.png'), onLogin: _authUser, onSignup: _signupUser, loginProviders: <LoginProvider>[ LoginProvider( icon: FontAwesomeIcons.google, label: 'Google', callback: () async { debugPrint('start google sign in'); await Future.delayed(loginTime); debugPrint('stop google sign in'); return null; }, ), LoginProvider( icon: FontAwesomeIcons.facebookF, label: 'Facebook', callback: () async { debugPrint('start facebook sign in'); await Future.delayed(loginTime); debugPrint('stop facebook sign in'); return null; }, ), LoginProvider( icon: FontAwesomeIcons.linkedinIn, callback: () async { debugPrint('start linkdin sign in'); await Future.delayed(loginTime); debugPrint('stop linkdin sign in'); return null; }, ), LoginProvider( icon: FontAwesomeIcons.githubAlt, callback: () async { debugPrint('start github sign in'); await Future.delayed(loginTime); debugPrint('stop github sign in'); return null; }, ), ], onSubmitAnimationCompleted: () { Navigator.of(context).pushReplacement(MaterialPageRoute( builder: (context) => const DashboardScreen(), )); }, onRecoverPassword: _recoverPassword, ); } }
<img src="https://yellow-cdn.veclightyear.com/835a84d5/23cf357e-65c4-4122-af0d-2ffb7bd1dbf7.png" width="300">

通过 ThemeData 进行主题定制

登录主题可以通过使用 ThemeData 间接定制,如下所示

// main.dart import 'package:flutter/material.dart'; import 'login_screen.dart'; void main() => runApp(MyApp()); class MyApp extends StatelessWidget { Widget build(BuildContext context) { return MaterialApp( title: '登录演示', theme: ThemeData( primarySwatch: Colors.deepPurple, accentColor: Colors.orange, cursorColor: Colors.orange, textTheme: const TextTheme( headline3: TextStyle( fontFamily: 'OpenSans', fontSize: 45.0, color: Colors.orange, ), button: TextStyle( fontFamily: 'OpenSans', ), subtitle1: TextStyle(fontFamily: 'NotoSans'), bodyText2: TextStyle(fontFamily: 'NotoSans'), ), ), home: LoginScreen(), ); } } // login_screen.dart import 'package:flutter/material.dart'; import 'package:flutter_login/flutter_login.dart'; import 'dashboard_screen.dart'; class LoginScreen extends StatelessWidget { Widget build(BuildContext context) { return FlutterLogin( title: 'ECORP', logo: const AssetImage('assets/images/ecorp.png'), onLogin: (_) => Future(null), onSignup: (_) => Future(null), onSubmitAnimationCompleted: () { Navigator.of(context).pushReplacement(MaterialPageRoute( builder: (context) => const DashboardScreen(), )); }, onRecoverPassword: (_) => Future(null), ); } }
<img src="https://yellow-cdn.veclightyear.com/835a84d5/e2157fed-9bff-4818-8aba-6ffbb5fc4f50.png" width="300">

自定义标签

import 'package:flutter/material.dart'; import 'package:flutter_login/flutter_login.dart'; import 'dashboard_screen.dart'; class LoginScreen extends StatelessWidget { const LoginScreen({super.key}); Widget build(BuildContext context) { return FlutterLogin( title: 'ECORP', logo: const AssetImage('assets/images/ecorp.png'), onLogin: (_) => Future(null), onSignup: (_) => Future(null), onSubmitAnimationCompleted: () { Navigator.of(context).pushReplacement(MaterialPageRoute( builder: (context) => const DashboardScreen(), )); }, onRecoverPassword: (_) => Future(null), messages: LoginMessages( userHint: '用户', passwordHint: '密码', confirmPasswordHint: '确认', loginButton: '登录', signupButton: '注册', forgotPasswordButton: '忘记密码?', recoverPasswordButton: '帮助', goBackButton: '返回', confirmPasswordError: '不匹配!', recoverPasswordDescription: 'Lorem Ipsum是印刷和排版行业的虚拟文本', recoverPasswordSuccess: '密码成功找回', ), ); } }
登录/注册密码找回
登录/注册密码找回

主题自定义

import 'package:flutter/material.dart'; import 'package:flutter_login/flutter_login.dart'; import 'dashboard_screen.dart'; class LoginScreen extends StatelessWidget { const LoginScreen({super.key}); Widget build(BuildContext context) { const inputBorder = BorderRadius.vertical( bottom: Radius.circular(10.0), top: Radius.circular(20.0), ); return FlutterLogin( title: 'ECORP', logo: const AssetImage('assets/images/ecorp-lightgreen.png'), onLogin: (_) => Future(null), onSignup: (_) => Future(null), onSubmitAnimationCompleted: () { Navigator.of(context).pushReplacement(MaterialPageRoute( builder: (context) => const DashboardScreen(), )); }, onRecoverPassword: (_) => Future(null), theme: LoginTheme( primaryColor: Colors.teal, accentColor: Colors.yellow, errorColor: Colors.deepOrange, titleStyle: const TextStyle( color: Colors.greenAccent, fontFamily: 'Quicksand', letterSpacing: 4, ), bodyStyle: const TextStyle( fontStyle: FontStyle.italic, decoration: TextDecoration.underline, ), textFieldStyle: const TextStyle( color: Colors.orange, shadows: [Shadow(color: Colors.yellow, blurRadius: 2)], ), buttonStyle: const TextStyle( fontWeight: FontWeight.w800, color: Colors.yellow, ), cardTheme: CardTheme( color: Colors.yellow.shade100, elevation: 5, margin: const EdgeInsets.only(top: 15), shape: ContinuousRectangleBorder( borderRadius: BorderRadius.circular(100.0)), ), inputTheme: InputDecorationTheme( filled: true, fillColor: Colors.purple.withOpacity(.1), contentPadding: EdgeInsets.zero, errorStyle: const TextStyle( backgroundColor: Colors.orange, color: Colors.white, ), labelStyle: const TextStyle(fontSize: 12), enabledBorder: UnderlineInputBorder( borderSide: BorderSide(color: Colors.blue.shade700, width: 4), borderRadius: inputBorder, ), focusedBorder: UnderlineInputBorder( borderSide: BorderSide(color: Colors.blue.shade400, width: 5), borderRadius: inputBorder, ), errorBorder: UnderlineInputBorder( borderSide: BorderSide(color: Colors.red.shade700, width: 7), borderRadius: inputBorder, ), focusedErrorBorder: UnderlineInputBorder( borderSide: BorderSide(color: Colors.red.shade400, width: 8), borderRadius: inputBorder, ), disabledBorder: const UnderlineInputBorder( borderSide: BorderSide(color: Colors.grey, width: 5), borderRadius: inputBorder, ), ), buttonTheme: LoginButtonTheme( splashColor: Colors.purple, backgroundColor: Colors.pinkAccent, highlightColor: Colors.lightGreen, elevation: 9.0, highlightElevation: 6.0, shape: BeveledRectangleBorder( borderRadius: BorderRadius.circular(10), ), // shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(5)), // shape: CircleBorder(side: BorderSide(color: Colors.green)), // shape: ContinuousRectangleBorder(borderRadius: BorderRadius.circular(55.0)), ), ), ); } }
<img src="https://yellow-cdn.veclightyear.com/835a84d5/0afacd9a-be2a-4f6a-9f57-046902a16ef5.png" width="300">

灵感来源

许可证

  • MIT许可证

编辑推荐精选

即梦AI

即梦AI

一站式AI创作平台

提供 AI 驱动的图片、视频生成及数字人等功能,助力创意创作

扣子-AI办公

扣子-AI办公

AI办公助手,复杂任务高效处理

AI办公助手,复杂任务高效处理。办公效率低?扣子空间AI助手支持播客生成、PPT制作、网页开发及报告写作,覆盖科研、商业、舆情等领域的专家Agent 7x24小时响应,生活工作无缝切换,提升50%效率!

Keevx

Keevx

AI数字人视频创作平台

Keevx 一款开箱即用的AI数字人视频创作平台,广泛适用于电商广告、企业培训与社媒宣传,让全球企业与个人创作者无需拍摄剪辑,就能快速生成多语言、高质量的专业视频。

TRAE编程

TRAE编程

AI辅助编程,代码自动修复

Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。

AI工具TraeAI IDE协作生产力转型热门
蛙蛙写作

蛙蛙写作

AI小说写作助手,一站式润色、改写、扩写

蛙蛙写作—国内先进的AI写作平台,涵盖小说、学术、社交媒体等多场景。提供续写、改写、润色等功能,助力创作者高效优化写作流程。界面简洁,功能全面,适合各类写作者提升内容品质和工作效率。

AI辅助写作AI工具蛙蛙写作AI写作工具学术助手办公助手营销助手AI助手
问小白

问小白

全能AI智能助手,随时解答生活与工作的多样问题

问小白,由元石科技研发的AI智能助手,快速准确地解答各种生活和工作问题,包括但不限于搜索、规划和社交互动,帮助用户在日常生活中提高效率,轻松管理个人事务。

热门AI助手AI对话AI工具聊天机器人
Transly

Transly

实时语音翻译/同声传译工具

Transly是一个多场景的AI大语言模型驱动的同声传译、专业翻译助手,它拥有超精准的音频识别翻译能力,几乎零延迟的使用体验和支持多国语言可以让你带它走遍全球,无论你是留学生、商务人士、韩剧美剧爱好者,还是出国游玩、多国会议、跨国追星等等,都可以满足你所有需要同传的场景需求,线上线下通用,扫除语言障碍,让全世界的语言交流不再有国界。

讯飞�智文

讯飞智文

一键生成PPT和Word,让学习生活更轻松

讯飞智文是一个利用 AI 技术的项目,能够帮助用户生成 PPT 以及各类文档。无论是商业领域的市场分析报告、年度目标制定,还是学生群体的职业生涯规划、实习避坑指南,亦或是活动策划、旅游攻略等内容,它都能提供支持,帮助用户精准表达,轻松呈现各种信息。

AI办公办公工具AI工具讯飞智文AI在线生成PPTAI撰写助手多语种文档生成AI自动配图热门
讯飞星火

讯飞星火

深度推理能力全新升级,全面对标OpenAI o1

科大讯飞的星火大模型,支持语言理解、知识问答和文本创作等多功能,适用于多种文件和业务场景,提升办公和日常生活的效率。讯飞星火是一个提供丰富智能服务的平台,涵盖科技资讯、图像创作、写作辅助、编程解答、科研文献解读等功能,能为不同需求的用户提供便捷高效的帮助,助力用户轻松获取信息、解决问题,满足多样化使用场景。

热门AI开发模型训练AI工具讯飞星火大模型智能问答内容创作多语种支持智慧生活
Spark-TTS

Spark-TTS

一种基于大语言模型的高效单流解耦语音令牌文本到语音合成模型

Spark-TTS 是一个基于 PyTorch 的开源文本到语音合成项目,由多个知名机构联合参与。该项目提供了高效的 LLM(大语言模型)驱动的语音合成方案,支持语音克隆和语音创建功能,可通过命令行界面(CLI)和 Web UI 两种方式使用。用户可以根据需求调整语音的性别、音高、速度等参数,生成高质量的语音。该项目适用于多种场景,如有声读物制作、智能语音助手开发等。

下拉加载更多