第一篇【传奇开心果系列】Python的pyttsx3库技术点案例示例:文本转换语言
传奇开心果短博文系列
- 系列短博文目录
- Python的pyttsx3库技术点案例示例系列
- 短博文目录
- 前言
- 一、pyttsx3主要特点和功能介绍
- 二、pyttsx3文字转语音操作步骤介绍
- 三、多平台支持介绍和示例代码
- 四、多语言支持介绍和示例代码
- 五、自定义语言引擎介绍和示例代码
- 六、调整语速和音量介绍和示例代码
- 七、异步支持介绍和示例代码
- 八、事件回调介绍和示例代码
- 九、使用pyttsx3进行文字转语音通常步骤示例代码
- 十、在语音反馈方面应用介绍和示例代码
- 十一、在语音交互界面方面应用介绍和示例代码
- 十二、在语音辅助阅读方面应用介绍和示例代码
- 十三、归纳总结
系列短博文目录
Python的pyttsx3库技术点案例示例系列
短博文目录
前言
pyttsx3是一个用于将文本转换为语音的Python库。它提供了一种简单而灵活的方式,让开发者可以通过编程将文本转换为可听的语音输出。
通过简单的步骤,开发者可以使用pyttsx3快速实现将文本转换为语音的功能,并在各种应用场景中应用,例如语音反馈、语音交互界面、语音辅助阅读等。
一、pyttsx3主要特点和功能介绍
-
多平台支持:pyttsx3可以在多个操作系统上运行,包括Windows、Mac和Linux等。
-
多语言支持:它支持多种语言,包括英语、中文、法语、德语、西班牙语等,可以根据需要选择合适的语言进行语音合成。
-
自定义语音引擎:pyttsx3允许用户选择不同的语音引擎,如SAPI5、nsss、espeak等,以适应不同的需求和平台。
-
调整语速和音量:开发者可以通过设置参数来控制生成语音的速度和音量,以满足个性化的需求。
-
异步支持:pyttsx3支持异步操作,可以在后台生成语音,而不会阻塞主线程的执行。
-
事件回调:它提供了事件回调机制,可以监听语音合成的进度和状态,以便在需要时执行相应的操作。
二、pyttsx3文字转语音操作步骤介绍
使用pyttsx3进行文字转语音通常包括以下步骤:
-
安装pyttsx3库:可以使用pip命令来安装pyttsx3库,例如
pip install pyttsx3
。 -
创建语音引擎:使用pyttsx3库创建一个语音引擎对象。
-
设置语言和声音:根据需要设置语言和声音引擎。
-
调整参数:可选地调整语速和音量等参数。
-
将文本转换为语音:使用语音引擎的
say()
方法将文本转换为语音。 -
播放语音:使用语音引擎的
runAndWait()
方法播放生成的语音。
三、多平台支持介绍和示例代码
当使用pyttsx3进行文字转语音时,可以在不同操作系统上运行。以下是一个示例代码,展示了在Windows、Mac和Linux上使用pyttsx3的基本用法:
import pyttsx3# 创建语音引擎对象
engine = pyttsx3.init()# 设置语言和声音
# Windows上的示例
# engine.setProperty('voice', 'com.microsoft.speech.platform.voice.SynthesizerVoice')
# Mac上的示例
# engine.setProperty('voice', 'com.apple.speech.synthesis.voice.Alex')
# Linux上的示例
# engine.setProperty('voice', 'voice_name')# 调整参数(可选)
# engine.setProperty('rate', 150) # 设置语速,值越大语速越快
# engine.setProperty('volume', 0.8) # 设置音量,范围从0.0到1.0# 将文本转换为语音
text = "Hello, World!"
engine.say(text)# 播放语音
engine.runAndWait()
在上述示例代码中,首先我们导入了pyttsx3库。然后,通过pyttsx3.init()
方法创建了一个语音引擎对象engine
。
接下来,根据需要设置语言和声音。在Windows上,可以使用engine.setProperty('voice', 'com.microsoft.speech.platform.voice.SynthesizerVoice')
来设置语音引擎。在Mac上,可以使用engine.setProperty('voice', 'com.apple.speech.synthesis.voice.Alex')
来设置语音引擎。在Linux上,可以根据系统中可用的语音引擎设置相应的值,例如engine.setProperty('voice', 'voice_name')
。
如果需要,可以使用engine.setProperty('rate', 150)
来调整语速,值越大语速越快。使用engine.setProperty('volume', 0.8)
来调整音量,范围从0.0到1.0。
然后,我们将要转换为语音的文本赋值给变量text
,并使用engine.say(text)
将文本转换为语音。
最后,通过调用engine.runAndWait()
方法播放生成的语音。
请注意,示例代码中的语音引擎设置部分需要根据具体操作系统和语音引擎进行相应的调整。你可以根据自己的需求和操作系统来设置合适的语音引擎。
四、多语言支持介绍和示例代码
当使用pyttsx3进行多语言文字转语音时,可以根据需要选择合适的语言进行语音合成。以下是一个示例代码,展示了如何设置不同语言的语音合成:
import pyttsx3# 创建语音引擎对象
engine = pyttsx3.init()# 设置语言和声音
# 英语
engine.setProperty('voice', 'en')
# 中文
# engine.setProperty('voice', 'zh')
# 法语
# engine.setProperty('voice', 'fr')
# 德语
# engine.setProperty('voice', 'de')
# 西班牙语
# engine.setProperty('voice', 'es')# 将文本转换为语音
text = "Hello, World!"
engine.say(text)# 播放语音
engine.runAndWait()
在上述示例代码中,我们首先导入了pyttsx3库。然后,通过pyttsx3.init()
方法创建了一个语音引擎对象engine
。
接下来,根据需要设置语言和声音。在示例代码中,我们展示了几种常见语言的设置示例。
- 英语:使用
engine.setProperty('voice', 'en')
来设置英语语音引擎。 - 中文:使用
engine.setProperty('voice', 'zh')
来设置中文语音引擎。 - 法语:使用
engine.setProperty('voice', 'fr')
来设置法语语音引擎。 - 德语:使用
engine.setProperty('voice', 'de')
来设置德语语音引擎。 - 西班牙语:使用
engine.setProperty('voice', 'es')
来设置西班牙语语音引擎。
你可以根据需要选择合适的语言和语音引擎。
然后,我们将要转换为语音的文本赋值给变量text
,并使用engine.say(text)
将文本转换为语音。
最后,通过调用engine.runAndWait()
方法播放生成的语音。
请注意,示例代码中的语音引擎设置部分需要根据具体的语言和操作系统进行相应的调整。你可以根据自己的需求和操作系统来设置合适的语音引擎和语言。
五、自定义语言引擎介绍和示例代码
pyttsx3允许用户选择不同的语音引擎来适应不同的需求和平台。以下是一个示例代码,展示了如何选择不同的语音引擎:
import pyttsx3# 创建语音引擎对象
engine = pyttsx3.init()# 设置语音引擎
# Windows上的示例,使用SAPI5引擎
# engine.setProperty('engine', 'sapi5')
# Mac上的示例,使用nsss引擎
# engine.setProperty('engine', 'nsss')
# Linux上的示例,使用espeak引擎
# engine.setProperty('engine', 'espeak')# 将文本转换为语音
text = "Hello, World!"
engine.say(text)# 播放语音
engine.runAndWait()
在上述示例代码中,我们首先导入了pyttsx3库。然后,通过pyttsx3.init()
方法创建了一个语音引擎对象engine
。
接下来,根据需要设置语音引擎。在示例代码中,我们展示了在不同平台上选择不同语音引擎的示例。
- 在Windows上,可以使用SAPI5引擎,使用
engine.setProperty('engine', 'sapi5')
来设置语音引擎。 - 在Mac上,可以使用nsss引擎,使用
engine.setProperty('engine', 'nsss')
来设置语音引擎。 - 在Linux上,可以使用espeak引擎,使用
engine.setProperty('engine', 'espeak')
来设置语音引擎。
你可以根据自己的需求和平台选择合适的语音引擎。
然后,我们将要转换为语音的文本赋值给变量text
,并使用engine.say(text)
将文本转换为语音。
最后,通过调用engine.runAndWait()
方法播放生成的语音。
请注意,示例代码中的语音引擎设置部分需要根据具体的平台和语音引擎进行相应的调整。你可以根据自己的需求和平台来设置合适的语音引擎。
六、调整语速和音量介绍和示例代码
是的,使用pyttsx3,开发者可以通过设置参数来调整生成语音的速度和音量。以下是一个示例代码,展示了如何调整语速和音量:
import pyttsx3# 创建语音引擎对象
engine = pyttsx3.init()# 获取当前语音引擎的属性
rate = engine.getProperty('rate') # 获取当前语速
volume = engine.getProperty('volume') # 获取当前音量# 设置新的语速和音量
new_rate = 150 # 新的语速(默认为100,可以调整为更高或更低的值)
new_volume = 0.8 # 新的音量(默认为1,可以调整为0到1之间的值)# 设置语速和音量
engine.setProperty('rate', new_rate)
engine.setProperty('volume', new_volume)# 将文本转换为语音
text = "Hello, World!"
engine.say(text)# 播放语音
engine.runAndWait()
在上述示例代码中,我们首先导入了pyttsx3库。然后,通过pyttsx3.init()
方法创建了一个语音引擎对象engine
。
接下来,我们使用engine.getProperty()
方法获取当前语音引擎的属性,包括语速和音量。getProperty('rate')
获取当前语速,getProperty('volume')
获取当前音量。
然后,我们可以根据需要设置新的语速和音量。在示例代码中,我们将语速设置为150(默认为100),将音量设置为0.8(默认为1)。
通过engine.setProperty()
方法,我们将新的语速和音量设置到语音引擎对象中,使用setProperty('rate', new_rate)
设置新的语速,使用setProperty('volume', new_volume)
设置新的音量。
接下来,我们将要转换为语音的文本赋值给变量text
,并使用engine.say(text)
将文本转换为语音。
最后,通过调用engine.runAndWait()
方法播放生成的语音。
你可以根据需要调整语速和音量的值,以满足个性化的需求。
七、异步支持介绍和示例代码
目前的pyttsx3库并不直接支持异步操作。pyttsx3库是一个同步库,它会在语音生成完成之前阻塞主线程的执行。
如果你需要在后台生成语音而不阻塞主线程,你可以考虑使用多线程或异步任务来实现。你可以将语音生成的任务放在一个单独的线程或异步任务中执行,以便在后台进行处理,同时不影响主线程的执行。
以下是一个示例代码,展示了如何使用多线程来在后台生成语音:
import pyttsx3
import threadingdef generate_speech(text):# 创建语音引擎对象engine = pyttsx3.init()# 将文本转换为语音engine.say(text)# 播放语音engine.runAndWait()# 在主线程中执行其他任务# 创建一个新的线程来生成语音
text = "Hello, World!"
thread = threading.Thread(target=generate_speech, args=(text,))
thread.start()# 主线程继续执行其他任务# 等待语音生成线程完成
thread.join()# 主线程继续执行其他任务
在上述示例代码中,我们首先导入了pyttsx3库和threading模块。然后,我们定义了一个generate_speech
函数,用于在新的线程中生成语音。
在generate_speech
函数中,我们创建了一个新的语音引擎对象engine
,将文本转换为语音,并播放语音。
在主线程中,我们可以执行其他任务。然后,我们创建一个新的线程,将generate_speech
函数作为目标函数,传入要转换为语音的文本作为参数。通过thread.start()
方法启动线程。
主线程可以继续执行其他任务,而语音生成的任务会在新的线程中后台执行。如果需要等待语音生成线程完成,可以使用thread.join()
方法进行等待。
请注意,使用多线程需要注意线程安全和资源管理等问题。确保在使用多线程时正确处理共享资源和线程同步。
另外,如果你更倾向于使用异步操作,你可以考虑使用其他异步库或框架来实现类似的功能,例如使用asyncio
库或基于异步的语音合成服务。这些库和服务可以提供异步生成语音的功能,并与其他异步代码一起工作。
八、事件回调介绍和示例代码
目前的pyttsx3库并不直接提供事件回调机制来监听语音合成的进度和状态。pyttsx3库是一个相对简单的文本到语音转换库,它没有内置的事件回调功能。
如果你需要监听语音合成的进度和状态,你可以考虑使用其他更专业的语音合成库或服务,这些库或服务通常提供更丰富的功能和事件回调机制。
一个常见的选择是使用Google Text-to-Speech (gTTS) API,它是一个功能强大的语音合成服务,支持多种语言和声音选项。你可以使用它的Python库来生成语音,并利用其事件回调机制来监听合成进度和状态。
以下是一个使用gTTS库的示例代码,展示了如何使用事件回调来监听语音合成的进度和状态:
from gtts import gTTS
import timedef on_progress(current, total):print(f"合成进度: {current}/{total}")def on_complete():print("语音合成完成")# 要转换为语音的文本
text = "Hello, World!"# 创建gTTS对象,设置文本和语言
tts = gTTS(text, lang='en')# 设置事件回调
tts.on_progress(on_progress)
tts.on_complete(on_complete)# 保存语音到文件
tts.save('output.mp3')# 等待合成完成
while not tts.done:time.sleep(0.1)# 打印合成的总时长
print(f"合成时长: {tts.total_duration} 秒")
在上述示例代码中,我们首先导入了gTTS库和time模块。然后,我们定义了两个回调函数:on_progress
和on_complete
。
on_progress
函数在语音合成过程中被调用,它接收两个参数:当前合成的片段数和总片段数。在这个示例中,我们简单地打印当前合成的进度。
on_complete
函数在语音合成完成后被调用,它不接收任何参数。在这个示例中,我们简单地打印一条消息表示合成完成。
接下来,我们创建了一个gTTS对象,并设置要转换为语音的文本和语言。
然后,我们使用tts.on_progress
方法将on_progress
函数设置为合成进度的事件回调,使用tts.on_complete
方法将on_complete
函数设置为合成完成的事件回调。
接下来,我们通过调用tts.save
方法将合成的语音保存到文件。
最后,我们使用一个循环等待语音合成完成,直到tts.done
属性为True。在等待期间,我们使用time.sleep
方法暂停一小段时间。
请注意,以上示例代码使用的是gTTS库,而不是pyttsx3库。这是因为pyttsx3库并不直接提供事件回调机制。如果你需要事件回调功能,你可能需要使用其他库或服务来实现。
九、使用pyttsx3进行文字转语音通常步骤示例代码
当使用
pyttsx3
库进行文字转语音时,通常的步骤如下:
- 安装
pyttsx3
库:
pip install pyttsx3
- 导入
pyttsx3
库:
import pyttsx3
- 创建一个
pyttsx3
的引擎对象:
engine = pyttsx3.init()
- 设置引擎的属性(可选):
# 设置语速(默认为中等速度)
engine.setProperty('rate', 150)# 设置音量(0.0到1.0之间,默认为1.0)
engine.setProperty('volume', 0.8)# 设置语音声音(默认为系统默认声音)
voices = engine.getProperty('voices')
engine.setProperty('voice', voices[0].id) # 选择第一个声音
- 使用引擎进行文字转语音:
text = "Hello, World!"
engine.say(text)
- 播放语音:
engine.runAndWait()
完整的示例代码如下:
import pyttsx3# 创建引擎对象
engine = pyttsx3.init()# 设置引擎属性
engine.setProperty('rate', 150)
engine.setProperty('volume', 0.8)
voices = engine.getProperty('voices')
engine.setProperty('voice', voices[0].id)# 文字转语音
text = "Hello, World!"
engine.say(text)# 播放语音
engine.runAndWait()
以上代码将使用默认设置创建一个pyttsx3
引擎对象,将字符串"Hello, World!"转换为语音并播放出来。你可以根据需要调整引擎的属性,例如语速、音量和声音等。
十、在语音反馈方面应用介绍和示例代码
pyttsx3
是一个用于文字转语音(TTS)的Python库,它提供了一个简单而强大的接口来生成语音反馈。它支持多种语音引擎,并且可以在不同平台上运行。
使用pyttsx3
进行语音反馈的步骤如下:
- 安装
pyttsx3
库:
pip install pyttsx3
- 导入
pyttsx3
库:
import pyttsx3
- 创建一个
pyttsx3
的引擎对象:
engine = pyttsx3.init()
- 设置引擎的属性(可选):
# 设置语速(默认为中等速度)
engine.setProperty('rate', 150)# 设置音量(0.0到1.0之间,默认为1.0)
engine.setProperty('volume', 0.8)# 设置语音声音(默认为系统默认声音)
voices = engine.getProperty('voices')
engine.setProperty('voice', voices[0].id) # 选择第一个声音
- 使用引擎进行语音反馈:
text = "Hello, World!"
engine.say(text)
- 播放语音:
engine.runAndWait()
下面是一个完整的示例代码,演示了如何使用pyttsx3
进行语音反馈:
import pyttsx3# 创建引擎对象
engine = pyttsx3.init()# 设置引擎属性
engine.setProperty('rate', 150)
engine.setProperty('volume', 0.8)
voices = engine.getProperty('voices')
engine.setProperty('voice', voices[0].id)# 语音反馈
text = "Hello, World!"
engine.say(text)# 播放语音
engine.runAndWait()
在上述示例中,我们创建了一个pyttsx3
引擎对象,并设置了语速、音量和声音等属性。然后,我们使用engine.say()
方法将文字转换为语音,并使用engine.runAndWait()
方法播放语音。
你可以根据需要调整引擎的属性,选择不同的声音,以及在engine.say()
方法中传入不同的文字进行语音反馈。pyttsx3
库提供了更多功能和方法来控制语音的生成和播放,你可以查阅官方文档获取更多信息:https://pyttsx3.readthedocs.io
十一、在语音交互界面方面应用介绍和示例代码
pyttsx3
库可以与其他Python库和框架结合使用,创建语音交互界面。通过结合pyttsx3
和其他库,你可以实现文字到语音的转换以及语音识别的功能,从而实现语音交互。
下面是一个简单的示例代码,演示了如何使用pyttsx3
和SpeechRecognition
库创建一个简单的语音交互界面:
import pyttsx3
import speech_recognition as sr# 创建引擎对象
engine = pyttsx3.init()# 设置引擎属性
engine.setProperty('rate', 150)
engine.setProperty('volume', 0.8)
voices = engine.getProperty('voices')
engine.setProperty('voice', voices[0].id)# 创建语音识别器对象
recognizer = sr.Recognizer()# 使用麦克风进行语音输入
with sr.Microphone() as source:print("请说话...")audio = recognizer.listen(source)try:# 将语音转换为文字text = recognizer.recognize_google(audio, language='zh-CN')print("你说的是:" + text)# 将文字转换为语音engine.say("你说的是:" + text)engine.runAndWait()except sr.UnknownValueError:print("无法识别语音")except sr.RequestError as e:print("无法连接到语音识别服务:" + str(e))
在上述示例中,我们使用pyttsx3
创建了一个语音引擎对象,并设置了属性。然后,我们使用SpeechRecognition
库创建了一个语音识别器对象。通过recognizer.listen(source)
方法,我们使用麦克风进行语音输入,并将语音转换为文字。然后,我们使用engine.say()
方法将文字转换为语音,并使用engine.runAndWait()
方法播放语音。
你可以根据需要扩展这个示例,添加更多的语音交互功能,例如根据语音命令执行特定的操作,或者将语音输入转换为文本并进行进一步的处理。通过结合pyttsx3
和其他库,你可以创建出更加复杂和强大的语音交互界面。
十二、在语音辅助阅读方面应用介绍和示例代码
pyttsx3
库可以用于语音辅助阅读,将文本内容转换为语音进行朗读。这对于视觉障碍者、学习者或需要多任务处理的人士来说是非常有用的。
下面是一个示例代码,演示了如何使用pyttsx3
进行语音辅助阅读:
import pyttsx3# 创建引擎对象
engine = pyttsx3.init()# 设置引擎属性
engine.setProperty('rate', 150)
engine.setProperty('volume', 0.8)
voices = engine.getProperty('voices')
engine.setProperty('voice', voices[0].id)# 待朗读的文本内容
text = """在Python中,可以使用pyttsx3库将文本转换为语音进行朗读。这对于视觉障碍者、学习者或需要多任务处理的人士来说是非常有用的。"""# 朗读文本内容
engine.say(text)
engine.runAndWait()
在上述示例中,我们创建了一个pyttsx3
引擎对象,并设置了语速、音量和声音等属性。然后,我们定义了待朗读的文本内容,并使用engine.say()
方法将文本转换为语音进行朗读。最后,使用engine.runAndWait()
方法播放语音。
你可以根据需要调整引擎的属性,选择不同的声音,以及在engine.say()
方法中传入不同的文本进行朗读。通过使用pyttsx3
库,你可以实现自定义的语音辅助阅读功能,帮助用户更轻松地获取文本信息。
十三、归纳总结
当使用
pyttsx3
库进行文本转语音时,以下是一些重要的知识点:
-
初始化引擎对象:使用
pyttsx3.init()
方法初始化一个语音合成引擎对象。 -
设置引擎属性:使用
engine.setProperty()
方法可以设置引擎的属性,如语速(rate)、音量(volume)和声音(voice)等。 -
获取可用的声音列表:使用
engine.getProperty('voices')
方法可以获取可用的声音列表,然后通过engine.setProperty('voice', voice_id)
设置所需的声音。 -
文本转语音:使用
engine.say(text)
方法将文本转换为语音。 -
播放语音:使用
engine.runAndWait()
方法播放语音,该方法会阻塞程序执行,直到语音播放完毕。 -
异步播放语音:使用
engine.startLoop()
方法可以启动异步循环,然后使用engine.iterate()
方法在循环中处理语音合成事件。 -
停止语音合成:使用
engine.stop()
方法可以停止语音合成过程。 -
支持多种语音引擎:
pyttsx3
库支持多种语音引擎,如SAPI5、nsss、espeak等。你可以通过pyttsx3.init(driverName='engine_id')
指定要使用的语音引擎。 -
处理异常:在使用
pyttsx3
时,可能会遇到各种异常情况,如无法连接到语音引擎、无法识别文本等。你可以使用异常处理机制来捕获和处理这些异常,以确保程序的稳定性。
以上是使用
pyttsx3
库进行文本转语音的一些关键知识点。通过熟悉这些知识点,你可以开始使用pyttsx3
创建自己的语音应用程序,实现文字到语音的转换和语音辅助功能。
相关文章:

第一篇【传奇开心果系列】Python的pyttsx3库技术点案例示例:文本转换语言
传奇开心果短博文系列 系列短博文目录Python的pyttsx3库技术点案例示例系列 短博文目录前言一、pyttsx3主要特点和功能介绍二、pyttsx3文字转语音操作步骤介绍三、多平台支持介绍和示例代码四、多语言支持介绍和示例代码五、自定义语言引擎介绍和示例代码六、调整语速和音量介绍…...
@ 代码随想录算法训练营第7周(C语言)|Day43(动态规划)
代码随想录算法训练营第7周(C语言)|Day43(动态规划) Day41、动态规划(包含题目 ● 1049. 最后一块石头的重量 II ● 494. 目标和 ● 474.一和零 ) 1049. 最后一块石头的重量 II 题目描述 有一堆石头&am…...

深度学习的新进展:探索人工智能的未来
文章目录 📑引言深度学习技术概述计算机视觉领域的深度应用自然语言处理的深度革命跨领域应用的深度拓展深度学习的挑战与未来展望结语 📑引言 在科技日新月异的今天,深度学习作为人工智能领域的一颗璀璨明珠,正在引领着技术创新…...
Vue中@change、@input和@blur、@focus的区别及@keyup介绍
Vue中change、input和blur、focus的区别及keyup介绍 1. change、input、blur、focus事件2. keyup事件3. 补充:el-input的change事件自定义传参 1. change、input、blur、focus事件 change在输入框发生变化且失去焦点后触发; input在输入框内容发生变化后…...
Raspbian简易RTSP服务
Raspbian简易RTSP服务 1. 源由2. 搭建简易RTSP服务器2.1 系统安装2.2 软件安装2.3 命令介绍2.3.1 libcamera-hello2.3.2 libcamera-vid2.3.3 cvlc 3. 实测4. 参考资料 1. 源由 鉴于前期的一些准备工作: 《ArduPilot开源飞控之Companion Computers简单分析》《Ardu…...
【ASP.NET 6 Web Api 全栈开发实战】--前言
《ASP.NET 6 Web Api 实战》专栏通过一步一步的开发并完善一个记账软件项目,来引导大家学习相关的知识,其中的知识包括但不限于如下内容: Web Api 开发.NET 6 项目微服务架构的搭建身份认证移动端应用开发more。。。 专栏结构 专栏分为单体…...
跳过mysql8.0密码重置密码 Shell脚本
要在 MySQL 8.0 中通过 Shell 脚本跳过密码验证以重置密码,你可以遵循以下步骤:首先,确保你有足够的权限来编辑配置文件和重启 MySQL 服务。下面是一个简单的 Shell 脚本示例,该脚本展示了如何跳过密码验证以重置 MySQL 8.0 的 ro…...

Maven之安装自定义jar到本地Maven仓库中
Maven之安装自定义jar到本地Maven仓库中 文章目录 Maven之安装自定义jar到本地Maven仓库中1. 命令行窗口安装方式1. 常用参数说明2. 安装实例 2. IDEA中安装方式3. 使用 1. 命令行窗口安装方式 安装指定文件到本地仓库命令:mvn install:install-file; 在windows的cm…...

SPI控制8_8点阵屏
协议与硬件概述 SPI SPI是串行外设接口(Serial Peripheral Interface)的缩写。是一种高速的(10Mbps)的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线。 引脚介绍 SCLK:…...
2.10
头文件: #include <sqlite3.h> 编译时候要加上-lsqlite3 gcc a.c -lsqlite3 1)sqlite3_open 打开一个数据库,如果数据库不存在,则创建一个数据库 2)sqlite3_close 关闭数据库,断开句柄所拥有的资…...

计算机服务器中了360后缀勒索病毒怎么办?360后缀勒索病毒处理流程
网络技术的不断应用与发展,为企业的生产运营提供了有利保障,越来越多的企业走向数字化办公模式,并且企业的发展离不开数据支撑,重视数据安全成为了众多企业关心的主要话题。春节前后,云天数据恢复中心接到很多企业的求…...

BigDecimal的常用API
BigDecimal用于解决浮点型运算时结果出现失真的问题。 这里0.20.1等于0.3就出现了失真 import java.math.BigDecimal; import java.math.RoundingMode;public class Test {public static void main(String[] args) {//BigDeciaml的使用:解决小数运算失真的问题doub…...

Android---Jetpack Compose学习005
动画 1. 简单值动画 示例:背景颜色在紫色和绿色之间,以动画形式切换。使用 animateColorAsState() val backgroundColor by animateColorAsState(if (tabPage TabPage.Home) Purple100 else Green300) 该句代码中,有一个 backgroundColo…...

安卓价值1-如何在电脑上运行ADB
ADB(Android Debug Bridge)是Android平台的调试工具,它是一个命令行工具,用于与连接到计算机的Android设备进行通信和控制。ADB提供了一系列命令,允许开发人员执行各种操作,包括但不限于: 1. 安…...

第三百四十七回
文章目录 1. 概念介绍2. 原理与方法2.1 知识对比2.2 使用方法 3. 示例代码4. 内容总结 我们在上一章回中介绍了"加密包crypto"相关的内容,本章回中将介绍characters包.闲话休提,让我们一起Talk Flutter吧。 1. 概念介绍 在项目中会遇到获取字…...
23种设计模式之原型模式
目录 什么是原型模式 为什么使用原型模式 原型模式的基本结构 原型模式的实现步骤 实现代码(含注释) 使用场景 什么是原型模式 原型模式是一种创建型设计模式,该模式的核心思想是基于现有的对象创建新的对象,而不是从头开…...

揭秘Angular世界的奥秘:全面提升你的前端开发技能!
介绍:Angular是一个由Google维护的开源JavaScript框架,专为构建Web应用程序而设计,特别适合开发大型单页应用(SPA)。以下是对Angular的详细介绍: 技术栈:Angular使用HTML作为模板语言࿰…...

【开源】SpringBoot框架开发企业项目合同信息系统
目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 数据中心模块2.2 合同审批模块2.3 合同签订模块2.4 合同预警模块2.5 数据可视化模块 三、系统设计3.1 用例设计3.2 数据库设计3.2.1 合同审批表3.2.2 合同签订表3.2.3 合同预警表 四、系统展示五、核心代码5.1 查询合同…...

高斯伪谱C++封装库开源!
Windows x64/86 C无依赖运行高斯伪谱法求解最优控制问题,你只需要ElegantGP! Author: Y. F. Zhang His Github: https://github.com/ZYunfeii 写在前面 这个库在你下载它的那一时刻起不再依赖任何其他代码,直接可用来构建C的最优控制问题并进行求解。…...

Spring + Tomcat项目中nacos配置中文乱码问题解决
实际工作的时候碰到了nacos中文乱码的问题,一顿排查最终还是调源码解决了。下面为具体的源码流程,有碰到的可以参考下。 对于nacos配置来说,初始主要源码就在NacosConfigService类中。里面有初始化获取配置content以及设置对应监听器的操作。…...
云原生核心技术 (7/12): K8s 核心概念白话解读(上):Pod 和 Deployment 究竟是什么?
大家好,欢迎来到《云原生核心技术》系列的第七篇! 在上一篇,我们成功地使用 Minikube 或 kind 在自己的电脑上搭建起了一个迷你但功能完备的 Kubernetes 集群。现在,我们就像一个拥有了一块崭新数字土地的农场主,是时…...
rknn优化教程(二)
文章目录 1. 前述2. 三方库的封装2.1 xrepo中的库2.2 xrepo之外的库2.2.1 opencv2.2.2 rknnrt2.2.3 spdlog 3. rknn_engine库 1. 前述 OK,开始写第二篇的内容了。这篇博客主要能写一下: 如何给一些三方库按照xmake方式进行封装,供调用如何按…...

(二)TensorRT-LLM | 模型导出(v0.20.0rc3)
0. 概述 上一节 对安装和使用有个基本介绍。根据这个 issue 的描述,后续 TensorRT-LLM 团队可能更专注于更新和维护 pytorch backend。但 tensorrt backend 作为先前一直开发的工作,其中包含了大量可以学习的地方。本文主要看看它导出模型的部分&#x…...

HTML 列表、表格、表单
1 列表标签 作用:布局内容排列整齐的区域 列表分类:无序列表、有序列表、定义列表。 例如: 1.1 无序列表 标签:ul 嵌套 li,ul是无序列表,li是列表条目。 注意事项: ul 标签里面只能包裹 li…...

微信小程序 - 手机震动
一、界面 <button type"primary" bindtap"shortVibrate">短震动</button> <button type"primary" bindtap"longVibrate">长震动</button> 二、js逻辑代码 注:文档 https://developers.weixin.qq…...

高等数学(下)题型笔记(八)空间解析几何与向量代数
目录 0 前言 1 向量的点乘 1.1 基本公式 1.2 例题 2 向量的叉乘 2.1 基础知识 2.2 例题 3 空间平面方程 3.1 基础知识 3.2 例题 4 空间直线方程 4.1 基础知识 4.2 例题 5 旋转曲面及其方程 5.1 基础知识 5.2 例题 6 空间曲面的法线与切平面 6.1 基础知识 6.2…...

ETLCloud可能遇到的问题有哪些?常见坑位解析
数据集成平台ETLCloud,主要用于支持数据的抽取(Extract)、转换(Transform)和加载(Load)过程。提供了一个简洁直观的界面,以便用户可以在不同的数据源之间轻松地进行数据迁移和转换。…...

UR 协作机器人「三剑客」:精密轻量担当(UR7e)、全能协作主力(UR12e)、重型任务专家(UR15)
UR协作机器人正以其卓越性能在现代制造业自动化中扮演重要角色。UR7e、UR12e和UR15通过创新技术和精准设计满足了不同行业的多样化需求。其中,UR15以其速度、精度及人工智能准备能力成为自动化领域的重要突破。UR7e和UR12e则在负载规格和市场定位上不断优化…...

html css js网页制作成品——HTML+CSS榴莲商城网页设计(4页)附源码
目录 一、👨🎓网站题目 二、✍️网站描述 三、📚网站介绍 四、🌐网站效果 五、🪓 代码实现 🧱HTML 六、🥇 如何让学习不再盲目 七、🎁更多干货 一、👨…...

【MATLAB代码】基于最大相关熵准则(MCC)的三维鲁棒卡尔曼滤波算法(MCC-KF),附源代码|订阅专栏后可直接查看
文章所述的代码实现了基于最大相关熵准则(MCC)的三维鲁棒卡尔曼滤波算法(MCC-KF),针对传感器观测数据中存在的脉冲型异常噪声问题,通过非线性加权机制提升滤波器的抗干扰能力。代码通过对比传统KF与MCC-KF在含异常值场景下的表现,验证了后者在状态估计鲁棒性方面的显著优…...