AI语音机器人:通过 Azure Speech 实现类人类的交互

语音对话的重要性

在竞争日益激烈的客户互动领域,人工智能语音对话正成为重中之重。随着数字参与者的崛起,组织认识到语音机器人的强大力量,它是一种自然而直观的沟通方式,可以提供类似人类的体验,深度吸引用户,并让他们从竞争对手中脱颖而出。无缝客户服务、个性化协助和即时信息访问的需求推动了对高质量语音交互的需求不断增长。此外,随着公司努力保留和扩大收入,跨越语言障碍接触更多样化的客户群变得至关重要,这使得多语言和情境感知语音解决方案成为当今市场的关键差异化因素。

参考链接:
微软Azure AI 语音服务、OpenAI 免费试用申请

创建有效语音机器人解决方案的关键挑战

尽管潜力巨大,但创建真正引起用户共鸣的语音机器人解决方案仍充满挑战。很少有组织能够成功解决阻碍最先进语音机器人发展的关键障碍:

  • 延迟:确保语音交互实时进行,没有明显的延迟,对于保持自然对话至关重要。高延迟会扰乱对话流程,导致用户沮丧和参与度下降。
  • 准确性:准确的语音识别至关重要,尤其是在嘈杂的环境中或用户口音和方言各异的情况下。对口语的误解会导致错误的响应和沟通中断。
  • 成本效益:组织面临的挑战是创建一个能够平衡高级功能与成本效益运营的架构,从而努力看到投资的回报。
  • 个性化、人性化的对话:用户希望语音机器人能够理解上下文、表现出同理心并提供个性化和可理解的响应。要实现这种级别的交互,需要从当今的众多选项中仔细选择合适的 LLM,并实现自定义语音功能以增强对话体验。

通过下一代语音机器人实现类似人类的交互

在以下部分中,我们将探讨如何使用 Azure AI 功能解决这些核心挑战,使企业能够提供超出客户期望的下一代语音体验。以下是一个快速演示,利用 Azure AI Stack 中的一些功能来展示语音机器人参与促销销售对话: 

 

 

提高准确性

适用于不同场景的自定义语音模型

Azure 自定义语音服务使企业能够利用特定领域的词汇、发音指南和定制的声学环境来微调自动语音识别 (ASR) 以满足特定需求。这些自定义功能可提高语音识别准确性并改善各种用例中的用户体验。

自定义语音模型的关键功能

  1. 处理噪音和声学变化:自定义语音模型可以经过训练,在嘈杂的环境和不同的声学条件下(例如繁忙的街道、公共场所或免下车通道)保持准确性。通过使用数据增强技术(例如将干净的音频与背景噪音混合),模型可以针对各种音景变得稳健。
  2. 领域特定词汇:提高对行业特定术语和技术术语的识别能力。自定义语音可以准确处理医疗保健、法律和金融等领域的专业语言,确保正确转录涉及复杂术语的对话。示例:在技术演示或客户支持电话中准确识别专业的科学术语或产品名称。
  3. 自定义发音:定制模型以识别非标准发音和独特术语,例如品牌名称或方言,确保准确转录口语。
  4. 口音和语言支持:调整模型以识别各种口音和方言,增强全球可访问性和用户参与度。
  5. 增强的输出格式:定义特定的文本格式规则,例如数字规范化和亵渎过滤,以满足清晰度和适当性的行业标准。

博客文章缩略图 1,标题为“下一代语音机器人:通过 Azure Speech 实现类人交互”

 

使用案例

  • 教育:学术讲座期间提供准确的实时字幕。
  • 医疗保健:可靠的医疗咨询记录。
  • 客户支持:提高呼叫中心处理不同口音的准确性。
  • 媒体:在现场直播中准确报道姓名和地点。

行动号召:利用 Azure 自定义语音增强语音应用程序。解决噪音、复杂术语和口音等挑战,提供无缝、引人入胜的用户体验。 

参考链接:

自定义语音概述 - 语音服务 - Azure AI 服务 | Microsoft Learn

语音工作室 - 自定义语音 - 概述 (microsoft.com)

自定义模型微调的样本训练数据

https://docs.nvidia.com/deeplearning/riva/user-guide/docs/tutorials/asr-noise-augmentation-offline.h...

 

个人声音创作

自定义 AI 语音

Azure AI 文本转语音功能 使开发人员能够将文本转换为类似人类的合成语音。神经 TTS 是一种文本转语音系统,它使用深度神经网络使计算机的声音与人类的录音几乎无法区分。它提供类似人类的自然韵律和清晰的单词发音,这大大减少了与 AI 系统交互时的听力疲劳。借助 Azure 个人语音功能,用户可以创建自定义的 AI 语音,以复制他们自己或特定的角色。通过提供简短的语音样本,您可以生成一个独特的语音模型,该模型能够合成 100 多个地区 90 多种语言的语音。此功能对于个性化虚拟助手等应用程序特别有益,通过使用观众熟悉且可理解的声音来增强用户参与度和互动性。创建后,个人语音可以在应用程序中使用 ssml:

 

<span style="background-color:#2b2b2b"><span style="color:#f8f8f2"><code class="language-applescript"><span style="color:#00e0e0">if</span> blnPersonalVoice<span style="color:#fefefe">:</span>speaker_profile_id <span style="color:#00e0e0">=</span> <span style="color:#abe338">"e04805d2-b81c-48ed-ac6b-1fa099edf0f3"</span>ssml <span style="color:#00e0e0">=</span> <span style="color:#abe338">"<speak version='1.0' xml:lang='hi-IN' xmlns='http://www.w3.org/2001/10/synthesis' "</span> \<span style="color:#abe338">"xmlns:mstts='http://www.w3.org/2001/mstts'>"</span> \<span style="color:#abe338">"<voice name='DragonLatestNeural'>"</span> \<span style="color:#abe338">"<mstts:ttsembedding speakerProfileId='%s'/>"</span> \<span style="color:#abe338">"<mstts:express-as style='cheerful' styledegree='5'>"</span> \<span style="color:#abe338">"<lang xml:lang='%s'> %s </lang>"</span> \<span style="color:#abe338">"</mstts:express-as>"</span> \<span style="color:#abe338">"</voice></speak> "</span> % <span style="color:#fefefe">(</span>speaker_profile_id<span style="color:#fefefe">,</span> locale<span style="color:#fefefe">,</span> <span style="color:#abe338">text</span><span style="color:#fefefe">)</span>result_future <span style="color:#00e0e0">=</span> synthesizer.speak_ssml_async<span style="color:#fefefe">(</span>ssml<span style="color:#fefefe">)</span><span style="color:#00e0e0">else</span><span style="color:#fefefe">:</span>result_future <span style="color:#00e0e0">=</span> synthesizer.speak_text_async<span style="color:#fefefe">(</span><span style="color:#abe338">text</span><span style="color:#fefefe">)</span>result <span style="color:#00e0e0">=</span> await loop.run_in_executor<span style="color:#fefefe">(</span>None<span style="color:#fefefe">,</span> result_future.<span style="color:#00e0e0">get</span><span style="color:#fefefe">)</span></code></span></span>

 

号召行动:探索如何在您的应用程序中实现个性化语音功能,以增强用户体验和参与度!

参考链接:

What is personal voice? - Azure AI services | Microsoft Learn

认知服务语音-sdk/samples/custom-voice at master · Azure-Samples/cognitive-services-speech...

使用语音合成标记语言 (SSML) 实现语音和声音 - 语音服务 - Azure AI 服务 | ...

 

通过实时音频合成实现低延迟

为了实现无缝、低延迟的语音交互,利用 Azure Speech SDK 和 OpenAI 的流式传输功能进行实时音频合成至关重要。通过以小块形式处理响应并在每个块准备就绪后立即合成音频,您可以提供流畅的对话体验。

来自 Azure OpenAI 的流响应

首先从 OpenAI 实时流式传输文本响应:

  • 流响应:使用 OpenAI 的流式传输功能接收生成的部分文本响应。
  • 缓冲和过程:积累文本直到检测到完整的想法(以标点符号表示),然后开始合成。
<span style="color:#333333"><span style="background-color:#ffffff"><span style="background-color:#2b2b2b"><span style="color:#f8f8f2"><code class="language-applescript">completion <span style="color:#00e0e0">=</span> client.chat.completions.create<span style="color:#fefefe">(</span>model<span style="color:#00e0e0">=</span>open_ai_deployment_name<span style="color:#fefefe">,</span> messages<span style="color:#00e0e0">=</span>message_text<span style="color:#fefefe">,</span> stream<span style="color:#00e0e0">=</span>True<span style="color:#fefefe">)</span>async def process_stream<span style="color:#fefefe">(</span><span style="color:#fefefe">)</span><span style="color:#fefefe">:</span>text_buffer <span style="color:#00e0e0">=</span> <span style="color:#abe338">""</span><span style="color:#00e0e0">for</span> event <span style="color:#00e0e0">in</span> completion<span style="color:#fefefe">:</span><span style="color:#00e0e0">if</span> choice <span style="color:#fefefe">:</span><span style="color:#00e0e0">=</span> event.choices[<span style="color:#00e0e0">0</span>].delta.content<span style="color:#fefefe">:</span>text_buffer <span style="color:#00e0e0">+</span><span style="color:#00e0e0">=</span> choice<span style="color:#00e0e0">if</span> any<span style="color:#fefefe">(</span>p <span style="color:#00e0e0">in</span> text_buffer <span style="color:#00e0e0">for</span> p <span style="color:#00e0e0">in</span> <span style="color:#abe338">",;.!?"</span><span style="color:#fefefe">)</span><span style="color:#fefefe">:</span>await text_to_speech_streaming<span style="color:#fefefe">(</span>text_buffer.strip<span style="color:#fefefe">(</span><span style="color:#fefefe">)</span><span style="color:#fefefe">)</span>text_buffer <span style="color:#00e0e0">=</span> <span style="color:#abe338">""</span>  <span style="color:#d4d0ab"># Clear buffer</span>
</code></span></span></span></span>

使用推送模型设置音频输出

使用推送模型,在合成音频数据后立即进行流式传输:

 

<span style="background-color:#2b2b2b"><span style="color:#f8f8f2"><code class="language-applescript"><span style="color:#d4d0ab"># Custom class to handle pushed audio data</span>
<span style="color:#abe338">class</span> CustomPushAudioStream<span style="color:#fefefe">(</span>PushAudioOutputStreamCallback<span style="color:#fefefe">)</span><span style="color:#fefefe">:</span>def write<span style="color:#fefefe">(</span>self<span style="color:#fefefe">,</span> audio_buffer<span style="color:#fefefe">:</span> memoryview<span style="color:#fefefe">)</span> <span style="color:#00e0e0">-</span><span style="color:#00e0e0">></span> int<span style="color:#fefefe">:</span><span style="color:#d4d0ab"># Handle the received audio data (e.g., play it, save it)</span>print<span style="color:#fefefe">(</span>f<span style="color:#abe338">"Received audio buffer of size: {len(audio_buffer)}"</span><span style="color:#fefefe">)</span><span style="color:#00e0e0">return</span> len<span style="color:#fefefe">(</span>audio_buffer<span style="color:#fefefe">)</span><span style="color:#d4d0ab"># Create a global SpeechSynthesizer with custom push stream</span>
push_stream <span style="color:#00e0e0">=</span> CustomPushAudioStream<span style="color:#fefefe">(</span><span style="color:#fefefe">)</span>
audio_config <span style="color:#00e0e0">=</span> AudioConfig<span style="color:#fefefe">(</span>stream<span style="color:#00e0e0">=</span>push_stream<span style="color:#fefefe">)</span>
synthesizer <span style="color:#00e0e0">=</span> SpeechSynthesizer<span style="color:#fefefe">(</span>speech_config<span style="color:#00e0e0">=</span>speech_config<span style="color:#fefefe">,</span> audio_config<span style="color:#00e0e0">=</span>audio_config<span style="color:#fefefe">)</span><span style="color:#d4d0ab"># Function to perform text-to-speech synthesis</span>
async def text_to_speech_streaming<span style="color:#fefefe">(</span><span style="color:#abe338">text</span><span style="color:#fefefe">)</span><span style="color:#fefefe">:</span>result <span style="color:#00e0e0">=</span> synthesizer.speak_text_async<span style="color:#fefefe">(</span><span style="color:#abe338">text</span><span style="color:#fefefe">)</span>.<span style="color:#00e0e0">get</span><span style="color:#fefefe">(</span><span style="color:#fefefe">)</span><span style="color:#00e0e0">if</span> result.reason <span style="color:#00e0e0">=</span><span style="color:#00e0e0">=</span> ResultReason.SynthesizingAudioCompleted<span style="color:#fefefe">:</span>print<span style="color:#fefefe">(</span>f<span style="color:#abe338">"Synthesis complete for: {text}"</span><span style="color:#fefefe">)</span>elif result.reason <span style="color:#00e0e0">=</span><span style="color:#00e0e0">=</span> ResultReason.Canceled<span style="color:#fefefe">:</span>print<span style="color:#fefefe">(</span><span style="color:#abe338">"Synthesis canceled."</span><span style="color:#fefefe">)</span>
</code></span></span>

 

行动号召:通过首先流式传输来自 OpenAI 的响应,然后立即将音频输出推送到播放,您可以在语音交互中实现低延迟和高响应度。这种基于推送的流式传输方法非常适合实时动态对话,可确保自然且引人入胜的用户体验。

参考链接: 

利用新的文本转语音功能让您的语音聊天机器人更具吸引力 (microsoft.com)

如何使用语音 SDK 降低语音合成延迟 - Azure AI 服务 | Microsoft Learn

 

用户体验提升

OpenAI 集成的智能提示

OpenAI 与 Azure AI Speech 的集成通过智能提示增强了用户体验,使交互更具吸引力和个性化。利用自然语言处理功能,这些系统可以理解上下文并实时生成相关响应,从而实现客户支持或虚拟助理场景中的无缝对话。此外,通过指示 OpenAI 包含标点符号,语音机器人可以利用流式传输功能生成具有适当停顿和语调的音频响应。这不仅使交互更加自然,而且还通过在合成过程中逐步播放音频来减少延迟,从而增强整体用户体验。

 

<span style="background-color:#2b2b2b"><span style="color:#f8f8f2"><code class="language-applescript"><span style="color:#00e0e0">*</span><span style="color:#00e0e0">*</span>Conversation Protocol<span style="color:#00e0e0">*</span><span style="color:#00e0e0">*</span><span style="color:#00e0e0">1</span>. You converse <span style="color:#00e0e0">with</span> customer <span style="color:#00e0e0">in</span> simple<span style="color:#fefefe">,</span> short <span style="color:#fefefe">,</span> sentences.<span style="color:#00e0e0">2</span>. You use punctuations frequently <span style="color:#00e0e0">-</span> <span style="color:#fefefe">,</span>;.!?<span style="color:#00e0e0">3</span>. You generate <span style="color:#abe338">text</span> so <span style="color:#00e0e0">that</span> <span style="color:#00e0e0">in</span> <span style="color:#00e0e0">the</span> begining you have a small phrase ending <span style="color:#00e0e0">in</span> punctuations <span style="color:#fefefe">,</span>;.!?</code></span></span>

 

号召行动:了解如何将智能提示集成到您的应用程序中以提升客户互动并简化沟通流程!

 

通过实时语音转文本流实现低延迟

使用 Azure Speech SDK 进行实时语音转文本 (STT) 流式传输PushAudioInputStream可实现语音的即时转录,从而提供响应迅速且自然的用户体验。此方法非常适合需要快速反馈的场景,例如客户支持、实时转录和交互式语音系统。

主要优点

即时反馈:使用PushAudioInputStream实时 STT 可确保语音在说出后立即转录,保持对话的流畅性并增强整体用户体验。

 

<span style="background-color:#2b2b2b"><span style="color:#f8f8f2"><code class="language-applescript">
speech_config <span style="color:#00e0e0">=</span> speechsdk.SpeechConfig<span style="color:#fefefe">(</span>subscription<span style="color:#00e0e0">=</span>speech_key<span style="color:#fefefe">,</span> region<span style="color:#00e0e0">=</span>speech_region<span style="color:#fefefe">)</span><span style="color:#d4d0ab"># Create a push audio input stream and audio configuration</span>
stream <span style="color:#00e0e0">=</span> speechsdk.audio.PushAudioInputStream<span style="color:#fefefe">(</span><span style="color:#fefefe">)</span>
audio_config <span style="color:#00e0e0">=</span> speechsdk.audio.AudioConfig<span style="color:#fefefe">(</span>stream<span style="color:#00e0e0">=</span>stream<span style="color:#fefefe">)</span><span style="color:#d4d0ab"># Create the SpeechRecognizer with push stream input</span>
speech_recognizer <span style="color:#00e0e0">=</span> speechsdk.SpeechRecognizer<span style="color:#fefefe">(</span>language<span style="color:#00e0e0">=</span>lang<span style="color:#fefefe">,</span> speech_config<span style="color:#00e0e0">=</span>speech_config<span style="color:#fefefe">,</span> audio_config<span style="color:#00e0e0">=</span>audio_config<span style="color:#fefefe">)</span><span style="color:#d4d0ab"># Global list to store recognized text</span>
<span style="color:#abe338">text</span> <span style="color:#00e0e0">=</span> []<span style="color:#d4d0ab"># Callback function to handle recognized speech</span>
def handle_recognized<span style="color:#fefefe">(</span>evt<span style="color:#fefefe">)</span><span style="color:#fefefe">:</span><span style="color:#00e0e0">if</span> evt.result.reason <span style="color:#00e0e0">=</span><span style="color:#00e0e0">=</span> speechsdk.ResultReason.RecognizedSpeech<span style="color:#fefefe">:</span><span style="color:#abe338">text</span>.append<span style="color:#fefefe">(</span>evt.result.<span style="color:#abe338">text</span><span style="color:#fefefe">)</span>print<span style="color:#fefefe">(</span>f<span style="color:#abe338">"Recognized: {evt.result.text}"</span><span style="color:#fefefe">)</span><span style="color:#d4d0ab"># Connect the callback function to the recognized event</span>
speech_recognizer.recognized.connect<span style="color:#fefefe">(</span>handle_recognized<span style="color:#fefefe">)</span><span style="color:#d4d0ab"># Start continuous recognition</span>
speech_recognizer.start_continuous_recognition<span style="color:#fefefe">(</span><span style="color:#fefefe">)</span></code></span></span>

 

参考链接:

语音 SDK 音频输入流概念 - Azure AI 服务 | Microsoft Learn

 

采用流式架构的实时中断处理

在对话式 AI 中,妥善处理中断对于创建自然的对话流至关重要。借助流式架构,语音机器人可以实时检测并响应用户中断。通过在流式传输机器人响应的同时持续监控人类语音,系统可以在检测到用户讲话时立即停止播放。这可确保机器人不会继续打断用户说话,使交互更加自然,减少挫败感。利用 Azure Speech SDK 的实时功能,开发人员可以构建机器人,不仅可以在用户输入时停止 TTS 流,还可以准确管理对话上下文并无缝切换回聆听模式,从而增强整体用户体验。

号召行动:如何在语音机器人中实现实时中断处理可以创造更自然、响应更快的交互,从而提高用户满意度!

 

通过实时分类实现说话人识别

实时语音区分是一项强大的功能,可以区分音频流中的说话者,使系统能够识别和转录特定说话者的语音片段。此功能在会议或多参与者讨论等场景中特别有用,因为知道谁说了什么可以提高清晰度和理解力。通过采用单通道音频流,该技术可以准确识别不同的声音并将其与相应的对话关联起来,从而提供包含说话者标签的结构化转录输出。

行动号召:探索如何通过集成实时日记化来改善呼叫分析和增强客户互动,从而提升您的呼叫中心运营!

参考链接:

https://techcommunity.microsoft.com/t5/ai-azure-ai-services-blog/announcing-general-availability-of-...

 

多语言能力

自动语言检测和翻译

Azure 自动语言检测和翻译功能可实现实时翻译,无需用户指定输入语言,从而显著增强了用户交互。此功能允许应用程序无缝识别口语,从而促进多语言场景中的交流。语音翻译 API 可以在单个会话中处理多种语言,根据需要自动在它们之间切换,同时以文本或音频形式提供准确的翻译。此外,Azure AI 文本转语音提供 400 多种声音和 140 多种语言和区域设置。单个预构建的逼真神经语音具有 多语言 支持,可以轻松以同一种声音阅读多种语言的内容。 

行动号召:了解如何通过整合自动语言检测和翻译来提升您在不同市场的客户互动!

参考链接:Announcing-video-translation-and-speech-translation-api

 

结论

Azure AI 创新助力成功之路

Azure AI Speech、Azure AI Speech 和 Azure Open AI 的创新为语音机器人领域的持续成功铺平了道路。

 

博客文章缩略图 2,标题为“下一代语音机器人:通过 Azure Speech 实现类人交互”

Azure 尖端技术为语音机器人开发中的关键挑战提供了全面的解决方案。凭借低延迟、高准确度、经济高效的扩展和类似人类的交互,Azure 使企业能够提供响应迅速且引人入胜的语音体验,满足并超越客户期望。通过利用这些功能,组织可以增强其沟通策略并推动有意义的用户参与。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/416563.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

jmeter中上传文件接口,当文件名为中文时出现乱码

1、在jmeter5.1.1中配置上传文件接口&#xff0c;当上传的文件为中文名称时&#xff0c;文件名称会显示乱码如图 2、解决方案是需要更换jmeter/lib/ext文件中的ApacheJMeter_http.jar 包 3、更换jar包经过多次实验&#xff0c;发现有的上传文件接口中文名正常&#xff0c;但是有…

负载均衡--资源申请说明(三)

1.负载方式&#xff1a;分为四层负载和七层负载 2.负载协议&#xff1a;四层负载为TCP和UDP&#xff0c;七层负载为HTTP和HTTPS 4.负载端口&#xff1a;填写虚地址的端口&#xff08;一般与后端服务端口保持一致&#xff09; 5.真实服务IP&#xff1a;指被负载的后台真实服务…

从零开始:理解并实践Prompt Flow

在人工智能领域中&#xff0c;代码先行与模型紧密结合的Prompt Flow逐渐成为开发者关注的新焦点。今天&#xff0c;我们将共同探索如何快速启动Prompt Flow项目&#xff0c;深入了解流&#xff08;flow&#xff09;的概念&#xff0c;并学习如何使用VS Code Extension或YAML来编…

基于Python的机器学习系列(26):PyTorch中的梯度计算

在本篇中&#xff0c;我们将探讨PyTorch的autograd功能&#xff0c;它为张量操作提供自动微分。我们将学习如何使用torch.autograd工具计算梯度并进行反向传播。 自动微分&#xff08;Autograd&#xff09; PyTorch的autograd包自动计算张量的梯度。当一个张量的.requires_gra…

C++和Python混合编程——C++调用Python入门

大纲 代码结构初始化 Python 解释器获取 GIL为什么需要 GIL&#xff1f;GIL 的影响 导入 Python 模块并执行代码释放 GIL终止 Python 解释器 完整代码编译执行结果项目地址 在《C和Python混合编程——Python调用C入门》一文中&#xff0c;我们熟悉了Python调用C编译的动态库的方…

集成电路学习:什么是PWM脉冲宽度调制

一、PWM&#xff1a;脉冲宽度调制 PWM&#xff0c;全称为脉冲宽度调制&#xff08;Pulse Width Modulation&#xff09;&#xff0c;是一种通过调整脉冲信号的宽度来控制电路输出的技术。在PWM中&#xff0c;信号的输出由一系列等幅值的脉冲组成&#xff0c;这些脉冲的宽度根据…

上海亚商投顾:深成指、创业板指均涨超1%,华为产业链反复活跃

上海亚商投顾前言&#xff1a;无惧大盘涨跌&#xff0c;解密龙虎榜资金&#xff0c;跟踪一线游资和机构资金动向&#xff0c;识别短期热点和强势个股。 一.市场情绪 大小指数昨日走势分化&#xff0c;沪指全天震荡调整&#xff0c;2800点失而复得&#xff0c;深成指、创业板指…

golang

一.go执行流程 4&#xff09;go run运行时间明显要比第一种时间长一点 【3】编译后的文件可以替换名称 二.语法注意 1.源文件以“go”为扩展名 2.程序的执行入口是main&#xff08;&#xff09;函数。 3.严格区分大小写 4.方法由一条条语句构成&#xff0c;每个语句后不需…

Docker安全

Docker安全 和本地共享资源&#xff0c;会有安全性问题 1. Cgroups 对资源的上限进行控制 /sys/devices/system1.1 cpu资源限制 # 进行cpu控制&#xff0c;只使用20%的资源 docker run -it --rm --cpu-period 100000 --cpu-quota 20000 ubuntu# 测试cpu使用 dd if/dev/zer…

【题目全解】蓝桥杯24省赛C++中高级组题干题解

本帖只提供六道编程题的解题思路&#xff0c;部分题目并不提供实际的代码&#xff08;因为我赛时忘记把代码截图下来了&#xff09;。 T1 - 看书 题干描述&#xff1a; 一本书共 n n n 页&#xff0c;小明计划第一天看 x x x 页&#xff0c;此后每一天都要比前一天多看 y y…

【面试八股总结】MySQL 锁:全局锁、表级锁、行级锁

1. 全局锁 顾名思义&#xff0c;全局锁就是对整个数据库实例加锁。 MySQL 提供了⼀个加全局读锁的方法&#xff1a; flush tables with read lock 释放全局锁&#xff0c;执行命令&#xff1a; unlock tables 需要让整个库处于只读状态的时候&#xff0c;可以使用全局锁命…

鸿蒙(API 12 Beta6版)图形【NativeImage开发指导 (C/C++)】方舟2D图形服务

场景介绍 NativeImage是提供Surface关联OpenGL外部纹理的模块&#xff0c;表示图形队列的消费者端。开发者可以通过NativeImage接口接收和使用Buffer&#xff0c;并将Buffer关联输出到OpenGL外部纹理。 针对NativeImage&#xff0c;常见的开发场景如下&#xff1a; 通过Nati…

linux系统中USB模块鼠标驱动实现

各位开发者大家好,今天主要给大家分享一下,Linux系统中使用libusb的方法以及鼠标驱动实现。 第一:libusb概述 参考网址:* libusb GIT仓库:https://github.com/libusb/libusb.git * libusb 官网:https://libusb.info/ * libusb API接口:https://libusb.sourceforge.io/…

mysql 使用 general 开启SQL跟踪功能

查看当前状态 mysql> SHOW VARIABLES LIKE %general%; 启用 临时启用 SET GLOBAL general_logon; SET GLOBAL general_log_file/tmp/general.log; 永久启用 通过修改配置文件来启用,需要重启mysql服务 [mysqld] general_logON general_log_file/tmp/general.log 再次查看状态…

【Redis】Redis 持久化机制详解:RDB、AOF 和混合持久化的工作原理及优劣分析

目录 持久化RDB触发机制流程说明RDB ⽂件的处理RDB 的优缺点 AOF使⽤ AOF命令写⼊⽂件同步重写机制启动时数据恢复 混合持久化小结 持久化 回顾 MySQL 的事务的特性&#xff1a; 原子性一致性持久性&#xff08;持久化&#xff09;隔离性 持久化&#xff1a;把数据存储在硬盘上…

CAN总线之一篇文章讲清楚Motorala和inter格式

前言&#xff1a; 之前的工作中&#xff0c;其实对Motorala和inter格式并不是了解的十分透彻。最近由于工作需要&#xff0c;研究了一下这两种格式&#xff0c;发现里面的门道其实挺复杂的。 特此作了一些总结&#xff1a;和大家一起分享。 我查了不少文档&#xff0c;描述其…

MongoDB 向 PostgreSQL 宣战

上周 MongoDB 发布了一份亮眼的季度财报&#xff0c;盘后股价涨幅超过 18%。 值得一提的是&#xff0c;MongoDB 的 CEO Dev Ittycheria 特别提到 MongoDB 正在借助自己的数据库服务 Atlas 从 PostgreSQL 那里挖角。原话是举了一个博彩网站的例子&#xff1a; “Initially, th…

【C++ 第十八章】C++11 新增语法(4)

前情回顾&#xff1a; 【C11 新增语法&#xff08;1&#xff09;&#xff1a;1~6 点】 C11出现与历史、花括号统一初始化、initializer_list初始化列表、 auto、decltype、nullptr、STL的一些新变化 【C11 新增语法&#xff08;2&#xff09;&#xff1a;7~8 点】 右值引用和…

uniapp插槽用法

目录 什么是插槽? 基本概念 默认插槽 命名插槽 作用域插槽 场景一:子插槽向父组件传递一个字符串 场景二:子插槽向父组件传递对象 什么是插槽? 在 UniApp 中&#xff0c;插槽&#xff08;Slot&#xff09;是一种允许父组件向子组件特定位置插入HTML内容的方式。这种方式使得组…

快速便捷地解决 reCAPTCHA 的方法

reCAPTCHA 是一种流行的挑战-响应系统&#xff0c;旨在通过提供人类易于解决但机器难以解决的难题来保护网站免受机器人和自动化滥用。无论您是处理网络抓取项目中的 reCAPTCHA 的开发人员&#xff0c;还是在各种网站上浏览的用户&#xff0c;了解如何有效地处理 reCAPTCHA 都可…