• [互动交流] unimrcp对接华为云ASR websocket linux版,在触发voice_start时没有进行有效打断操作
    我根据ASR-beginer大佬发表的博客unimrcp对接华为云ASR(Linux版)(https://bbs.huaweicloud.com/blogs/423604)成功实现了unimrcp插件化华为云的asr引擎。环境: centos7.9 +freeswtich 1.10.13 +unimrcp 1.8.0问题描述:使用fs拨号 1001测试并调用lua脚本,脚本逻辑 播放欢迎语 并可随时打断,目前没有进行打断操作。脚本命令:result = session:execute("play_and_detect_speech", "say:'" .. text .. "' detect:unimrcp:uni2 {barge_in=true,no-input-timeout=5000}builtin:speech/transcribe")  I0722 08:46:05.645720  9722 RasrListener.h:38] rasr receive event{"resp_type":"EVENT","trace_id":"a3f26933-33fc-4333-b345-c550b5aeeb15","event":"VOICE_START","timestamp":1753145165}I0722 08:46:10.086721  9722 RasrListener.h:38] rasr receive event{"resp_type":"EVENT","trace_id":"a3f26933-33fc-4333-b345-c550b5aeeb15","event":"VOICE_END","timestamp":1753145170}I0722 08:46:10.086751  9722 RasrListener.h:22] rasr receive {"resp_type":"RESULT","trace_id":"a3f26933-33fc-4333-b345-c550b5aeeb15","segments":[{"start_time":0,"end_time":10500,"is_final":true,"result":{"text":"喂喂喂喂喂喂喂","score":0.6077518463134766}}]}2025-07-22 08:46:13:470782 [INFO]   Synthesis completed2025-07-22 08:46:13:470820 [INFO]   Process SPEAK-COMPLETE Event <4030c67197fa4d00@speechsynth> [1]2025-07-22 08:46:13:470839 [NOTICE] State Transition SPEAKING -> IDLE <4030c67197fa4d00@speechsynth>2025-07-22 08:46:13:470879 [INFO]   Send MRCPv2 Data 172.29.121.237:1544 <-> 172.29.121.237:58672 [122 bytes]MRCP/2.0 122 SPEAK-COMPLETE 1 COMPLETEChannel-Identifier: 4030c67197fa4d00@speechsynthCompletion-Cause: 000 normal关键日志说明:播放过程中在05秒识别到说话,10秒识别完成,13秒播放tts语音结束。期望表现:在05秒识别开始时发送打断信号。目前问题的核心代码:case Status::voice_start: apt_log(RECOG_LOG_MARK, APT_PRIO_INFO, "Detected Voice Activity " APT_SIDRES_FMT, MRCP_MESSAGE_SIDRES(recog_channel->recog_request)); huawei_recog_start_of_input(recog_channel); recog_channel->call_back->SetStatus(Status::recognizing); break;没有发送打断信息。后面我尝试更改代码发送打断信号:case Status::voice_start: { apt_log(RECOG_LOG_MARK, APT_PRIO_INFO, "Voice start detected, triggering barge-in"); // 保持voice_start状态直到语音结束 huawei_recog_start_of_input(recog_channel); recog_channel->call_back->SetStatus(Status::recognizing); // 发送立即打断指令 mrcp_message_t* bargein_msg = mrcp_event_create( recog_channel->recog_request, RECOGNIZER_START_INPUT_TIMERS, // 关键指令 recog_channel->recog_request->pool ); mrcp_engine_channel_message_send(recog_channel->channel, bargein_msg); break;}还是没有效果,我尝试更改指令:mrcp_message_t* bargein_msg = mrcp_event_create( recog_channel->recog_request, RECOGNIZER_BARGE_IN_OCCURRED, // 关键修改:使用标准事件 recog_channel->recog_request->pool);但是编译过程遇到:src/huawei_recog_engine.cc:764:21: error: 'RECOGNIZER_BARGE_IN_OCCURRED' was not declared in this scope                     RECOGNIZER_BARGE_IN_OCCURRED,  // 关键修改:使用标准事件请求帮忙,如何让我顺利的进行打断操作?
  • [互动交流] 华为 语音识别,支持方言吗?
    华为 语音识别,支持方言吗?
  • [问题求助] 鲲鹏920跑pytorch cpu训练速度很慢
    如题,pytorch cpu训练很慢,使用的是开源的wenet语音识别框架,搭了一个nvidia/cuda:11.6.1-cudnn8-runtime-ubuntu20.04镜像,但用的是cpu,训练可以正常运行,性能表现是模型前向计算很慢,一个小时的训练数据,batchsize 16, num_worker 4, 模型参数量80M, 需要一个小时才能跑一个batch,16小时跑一个epoch,这是因为什么问题导致的呢,大佬们帮忙看看我仔细分析了下,发现是torch.nn.Conv1d这个函数跑的慢, X86跑了0.016秒,arm跑了0.254秒,这是测试代码: import torch import time  # Create random input input_data = torch.randn(1, 256, 1000)  # Create convolutional layer #conv1d_layer = torch.nn.Conv1d(in_channels=1, out_channels=1, kernel_size=3) #start_time_x86 = time.time() conv1d_layer = torch.nn.Conv1d(             256,             256,             15,             stride=1,             padding=0,             groups=256,             bias=True,         ) # Perform convolution on x86 start_time_x86 = time.time() output_x86 = conv1d_layer(input_data) end_time_x86 = time.time() time_elapsed_x86 = end_time_x86 - start_time_x86 print('Time elapsed on x86:', time_elapsed_x86) print(output_x86) 
  • [其他问题] 基于QT for andriod添加第三方库
    基于QT for andriod添加第三方库的时候一直调用失败,找不到函数的定义
  • 浅谈实时语音识别应用场景_公安
    实时语音识别技术将语音、自然语音理解、语音合成等技术应用在公安部门的工作中,场景为笔录制作,电话报警语音识别,语音转写文字等。对于公安民警在案件处理时,需要与案件相关人员对话了解案情,清楚记录何时、何人、何事,等相关重要信息。以往传统的笔录制作需要两名警员,一个负责记录,一个负责询问,记录依靠笔记。随着时代的发展,用电脑代替了打字。虽然改变了传统的记录方式,但电脑打字记录还是会消耗大量的人力和修改的工作量,询问时还要兼顾记录人员的打字速度。笔录整理还需记录员的总结能力,对询问内容总结出主旨,形成一份合格的笔录文档。通过结合实时语音识别技术和自然语言理解技术,当询问笔录开始制作时,实时办案民警与被询问人之间的对话内容进行识别,并将识别到的内容按照语法和自然语言调整识别结果。自然语言理解技术还可以将语音中出现的语气词自动过滤,对关键词类型提取,最终输出正确、精练的文字。将生成的识别结果与原始识别数据进行比对,回听音频文件对文档归纳总结,简单修改即可按照笔录模板输出笔录。使公安了解案情时,笔录制作更方便快捷,减少人员精力投入,提高笔录制作的效率,辅助公安办案业务的完成。公安部门在审讯时常常会收集到很多有价值的信息,关键词识别技术能够为公安侦查破案提供技术支持和帮助。作为破案的关键性信息,如地址、涉案人员信息等,关键词识别技术分析问答内容,提取关键数据,并对文字结果特殊显示。从视觉上更直观的关注到重点、有价值的信息,提醒办案人员。实时语音识别技术中的离线转写功能能够将民警外出办案记录的录音文件或视频文件转写成文字,满足多文档同步识别转写,转写速度快的功能。民警不用跟着录音边听边整理,提高笔录整理的效率。应用在快速记录询问笔录,可根据公安办案业务流程和工作习惯,中增加法律条款的查询等。当需要告知被询问人法律法规时,通过文本朗读功能代替人为宣读,减少办案人员精力投入,提高办案效率,推动公安业务与智能化手段融合。
  • [其他] 浅谈语音识别
    什么是语音语音指的是人类通过发声器官发出来具有一定意义、用来沟通交流的声音。计算机中语音存储:以波形文件的方式存储,通过波形反映语音的变化,从而可以获取音强、音长等参数信息。音域参数:傅利叶谱、梅尔频率到谱系数,主要用来提取语音内容以及音色的差别,用来更进一步辨别语音信息。什么是语音识别语音识别简单来说就是把语音内容自动转换为文字的过程,是人与机器交互的一种技术。涉及领域:声学、人工智能、数字信号处理、心理学等方面。语音识别的输入:对一段声音文件进行播放的序列。语音识别的输出:输出的结果是一段文本序列。语音识别的原理语音识别需要经过特征提取、声学模型、语音模型、语音解码和搜索算法四个部分。特征提取:把要分析的信号从最原始信号提取出来,这个阶段主要是对语音的幅度标准化、频响校正、分帧、加窗、始末端点检测等预处理操作,为声学模型提供需要特征向量。声学模型:依靠声学模型进行语音参数分析(语音共振峰频率、幅度等)和对语音的线性预测参数进行分析。语言模型:根据相关语言学理论,计算出声音片段可能词组序列的概率。语音解码和搜索算法:根据声学模型+发音词典+语音模型构建的搜索空间,找到最合适的路径。解码完成后最终输出文本。语音识别系统的组成一个完整的语音识别系统包括:预处理、特征提取、声学模型训练、语言模型训练语音解码器。预处理对输入的原始声音信号进行处理,过滤掉其中的背景噪音、非重要信息,还要对找到语音信号的开始和结束、语音分帧、提升高频部分的信号等操作。最常用的特征提取方法为梅尔顿到谱系数(MFCC),因为它拥有良好的抗噪性和健壮性。声学模型训练根据悬恋语音库的特征参数训练出声学模型参数,从而可以在识别时与声学模型进行匹配得到相应结果。目前主流语音识别系统一般都会采用HMM进行声学模型建模。语言模型训练用来预测哪个词序列正确的可能性更大。语音解码器解码器也就是语音识别技术中的识别过程,根据输入的语音信号,然后和训练好的HMM声学模型、语言模型、发音字典建立一个搜索空间,根据搜索算法找到最合适的路径。从而找到最合适的词串。语音识别的使用场景语音识别在日常生活中使用非常广泛主要分为封闭式和开放式应用。封闭式应用:主要指针对特定控制指令的应用。
  • [其他] 浅谈语音识别
    什么是语音语音指的是人类通过发声器官发出来具有一定意义、用来沟通交流的声音。计算机中语音存储:以波形文件的方式存储,通过波形反映语音的变化,从而可以获取音强、音长等参数信息。音域参数:傅利叶谱、梅尔频率到谱系数,主要用来提取语音内容以及音色的差别,用来更进一步辨别语音信息。什么是语音识别语音识别简单来说就是把语音内容自动转换为文字的过程,是人与机器交互的一种技术。涉及领域:声学、人工智能、数字信号处理、心理学等方面。语音识别的输入:对一段声音文件进行播放的序列。语音识别的输出:输出的结果是一段文本序列。语音识别的原理语音识别需要经过特征提取、声学模型、语音模型、语音解码和搜索算法四个部分。特征提取:把要分析的信号从最原始信号提取出来,这个阶段主要是对语音的幅度标准化、频响校正、分帧、加窗、始末端点检测等预处理操作,为声学模型提供需要特征向量。声学模型:依靠声学模型进行语音参数分析(语音共振峰频率、幅度等)和对语音的线性预测参数进行分析。语言模型:根据相关语言学理论,计算出声音片段可能词组序列的概率。语音解码和搜索算法:根据声学模型+发音词典+语音模型构建的搜索空间,找到最合适的路径。解码完成后最终输出文本。语音识别系统的组成一个完整的语音识别系统包括:预处理、特征提取、声学模型训练、语言模型训练、语音解码器。预处理对输入的原始声音信号进行处理,过滤掉其中的背景噪音、非重要信息,还要对找到语音信号的开始和结束、语音分帧、提升高频部分的信号等操作。特征提取最常用的特征提取方法为梅尔顿到谱系数(MFCC),因为它拥有良好的抗噪性和健壮性。声学模型训练根据悬恋语音库的特征参数训练出声学模型参数,从而可以在识别时与声学模型进行匹配得到相应结果。目前主流语音识别系统一般都会采用HMM进行声学模型建模。语言模型训练用来预测哪个词序列正确的可能性更大。语音解码器解码器也就是语音识别技术中的识别过程,根据输入的语音信号,然后和训练好的HMM声学模型、语言模型、发音字典建立一个搜索空间,根据搜索算法找到最合适的路径。从而找到最合适的词串。
  • [互动交流] RPA 控件里的非必填参数如何动态赋值
    动态读取不同sheet页的数据,但是不能指定sheet
  • [通用服务] 【AI使能】政务语音分析
    算法能力描述调用方式接口详细说明一句话识别一句话识别接口,用于短语音的同步识别。一次性上传1min以内音频,能快速返回识别结果。POST链接Websocket链接录音文件识别录音文件识别接口,用于识别长录音文件。POST链接GET链接语音合成语音合成,是一种将文本转换成逼真语音的服务。用户通过实时访问和调用API获取语音合成结果,将用户输入的文字合成为音频。通过音色选择、自定义音量、语速,为企业和个人提供个性化的发音服务。POST链接分类文档链接备注华为云在线课程语音处理理论、应用与实验(免费)链接本课程就语音处理的理论及应用做了介绍,介绍了大量具体的语音识别与语音合成的模型,不同模型各有特点,适应于不同的应用场AI技术应用场景--语音识别(收费)链接语音识别技术的应用在我们的日常生活中非常常见,人机交互、智能家居、智能问答等等,本课程将从语音识别的基础出发,带领大家一步步深入语音识别技术的内在机制,帮助大家讲语音识别技术快速落地到实际的应用场景中。
  • [技术干货] Ubuntu20.04 使用Python实现全过程离线语音识别(包含语音唤醒,语音转文字,指令识别,文字转语音)-转载
     一、简单说点   因为手头有一个项目,该项目需要在香橙派上实现语音控制,并且带有语音唤醒功能。简单来说,就是通过唤醒词唤醒香橙派,然后说出相关指令,香橙派去执行指令。   但是,在弄香橙派的时候,自带的麦克风不好使了,单独进行麦克风测试的时候是好使的,但是程序跑起来怎么说话都没反应了。买了个USB接口的麦克风,还没到,就先在ubuntu系统上先试试流程,跑通下,到时在香橙派上弄的时候心里也有个数了。   这是这篇记录博客的由来了。开发语言使用的Python,不得不说,使用Python来进行语音识别,是真的方便,第三方库太强大了。基本上是把环境配置好,剩下简单写点流程逻辑代码就完成了。   emmm,对了,为了防止在复现过程中出现一些莫名其妙的bug,每一个环境的配置,还有Python包我都会附上相应的版本号,理论上来说按照流程来走应该是没什么问题,中间的坑我都踩的差不多了。好了,闲话说到这,进入正文。  Ubuntu: 20.04 Python: 3.8  二、相关技术介绍 语音唤醒使用的是Snowboy,这个官方已经不维护了,最后一个版本是1.3.0,官方的自定义语音唤醒词训练的网站已经停掉了,不过还有第三方的网站可以用。 语音转文字使用的Speechbrain,这个可以自己训练自己的相关模型,为了提高自己指令识别精度可以这么做。要省事可以使用官方提供预先训练好的模型。 文字转语音使用的Pyttsx3,这个怎么说,用来做demo程序是绝对够用了,但如果想要更好体验,需要解决下音色的问题。 三、语音唤醒 版本号:1.3.0 Snowboy的GitHub地址:  https://github.com/Kitt-AI/snowboy 1 如果在GitHub上下载压缩包的源码,那么我们需要先进行解压:  tar xvf snowboy-1.3.0.tar.gz 1 当然,我们也能直接使用git命令进行下载源码:  git clone https://github.com/Kitt-AI/snowboy.git 代码下载完成后,先留着备用,接下来我们配置代码所需要的环境,snowboy需要swig,alsa等等,直接看配置:  sudo apt-get install swig  版本号:4.0.1 sudo apt-get install libatlas-base-dev sudo apt-get install sox  版本号:14.4.2 sudo apt-get install libasound2-dev   这个里面,sox少了会怎么样,我没测试过,不知道sox会不会对snowboy的编译造成直接影响,起码可以通过 sox -d -d 命令来测试你的麦克风跟外放,执行命令之后,对着麦克风说话,你可以听到自己的声音。   libasound2少了会出问题,这个我一开忘了安装,结果报错了。这个是snowboy的C++编译中下载portaudio这个库的时候会用到,如果执行下载portaudio的操作前没有安装libasound2,会报下面错误:"Fail to open PortAudio stream, error message is “Device unavailable”。   还有,需要注意的是,swig的版本号要大于3.10(没记错的话,不然就是3.12 <-_<- )  环境弄好之后,我们进入下载好的snowboy文件中,就可以进行相关编译工作了。 这里先说下,Snowboy的C++编译操作。 进入下面目录:  cd examples/C++/ 1 然后,进行安装portaudio,还是当前路径下:  ./install_portaudio.sh 1 安装完成之后,进行编译操作:  make 1 如果是在Ubuntu20.04的环境下,是没什么问题的。其他环境,可能会报一个如下错误:/usr/bin/ld: …/…//lib/ubuntu64/libsnowboy-detect.a:error adding symbols:file in wrong format 这个时候,我们只需找到当前目录下的demo.mk文件,修改如下内容(第37行):  修改前: SNOWBOYDETECTLIBFIE := $(TOPDIR)/lib/ubuntu64/libsnowboy-detect.a 修改后: SNOWBOYDETECTLIBFIE := $(TOPDIR)/lib/aarche64-ubuntu1604/libsnowboy-detect.a 修改完成后,在执行make。(可以在make之前,执行下make clean,清楚下上次编译文件)   编译完成之后,我们就行执行demo程序了:  ./demo 1 demo程序默认的唤醒词是snowboy。唤醒之后控制台会输出:Hotword 1 detected!。我们也可以对demo程序进行修改:在代码中打印前加上一句system(“play resources/ding.wav”),这样在识别到唤醒词时会自动播放一个叮的声音。  demo程序运行完之后,我们可以仿照demo程序,进行自己的二次开发,加入唤醒之后需要进行的操作。因为我用的Python语言,后面我会给出Python的相关需要修改得部分,这里的修改也可以参考Python部分的。  Snowboy的Python编译: 安装相关环境:  sudo apt-get install swig  版本:4.0.1 sudo apt-get install libatlas-base-dev 注意:这两个包如果在C++编译那里安装了,这里就不用重复安装了。 接下来安装pyaudio  sudo apt-get install portaudio19-dev python-all-dev python3-all-dev jackd1 portaudio19-doc jack-tools meterbridge liblo-dev sudo apt-get install pyaudio 这里需要注意一个点,安装pyaudio之前一定要先安装前面那部分环境,因为pyaudio需要依赖portaudio,这里如果报错了,注意一下吧,亲身经历。 如果还报什么依赖问题,把下面这个执行一下(这里跟上面有些是重复的,删除重复的就行): sudo apt-get install libasound-dev portaudio19-dev libportaudio2 libportaudiocpp0 环境备好之后,进入:  cd swig/Python3 进入之后,编译:  ./make 这里如果出现错误:/usr/bin/ld: …/…//lib/ubuntu64/libsnowboy-detect.a:error adding symbols:file in wrong format 我们打开当前路径下的makefile文件,进行如下修改:  修改前: SNOWBOYDETECTLIBFIE := $(TOPDIR)/lib/ubuntu64/libsnowboy-detect.a 修改后: SNOWBOYDETECTLIBFIE := $(TOPDIR)/lib/aarche64-ubuntu1604/libsnowboy-detect.a 如果没错误,就不用管了。编译完成之后,我们就可以进入目录:  cd examples/Python3 1 来运行官方demo了,不过运行之前,我们需要该一个文件: 打开当前路径snowboydecoder.py文件,将:  from * import snowboydetect 修改为import snowboydetect 1 修改完之后,我们运行:  python3 demo.py resources/models/snowboy.umdl 1 唤醒词为snowboy,唤醒之后会有叮的一声。  根据demo程序,来进行二次开发 接下来,创建一个python虚拟环境(最好这样,后面在安装一些python包的时候防止跟本地的一些包冲突)。我们snowboy编译之后的如下文件:  resources文件夹;demo.py ; snowboydecoder.py ;snowboydetect.py; _snowboydetect.so (_snowboydetect.so 在swig/Python3的目录下) 1 2 将上面文件都放到我们新创建的目录下,运行demo.py没问题后,我们在来对创建自己的语音唤醒代码:  import snowboydecoder import signal  interrupted = False  def signal_handler(signal, frame):     global interrupted     interrupted = True  def interrupt_callback():     global interrupted     return interrupted  # 语音唤醒之后播放的应答 model = 'resources/models/snowboy.umdl'  # 终止方法为ctrl+c signal.signal(signal.SIGINT, signal_handler)  # 这里可以设置识别灵敏度 detector = snowboydecoder.HotwordDetector(model, sensitivity=0.5) print('Listening... Press Ctrl+C to exit')  def callback():     print("唤醒之后的回调函数")     print("在这里实现唤醒之后需要进行的操作")  detector.start(detected_callback=callback, # 自定义回调函数                interrupt_check=interrupt_callback,                sleep_time=0.03)  # 释放资源 detector.terminate()  好了,这样就能把语音唤醒给运用起来了。snowboy的相关说明到这就结束。 哦,不对,差点忘了,如果想训练自己的唤醒词,可以在下面这个网站训练,上传三段自己录制的唤醒词语音就行,唤醒识别精度跟你上传的语音有很大关系:  https://snowboy.hahack.com/ 1 四、语音转文字 获取语音 想要实现语音转文字,首先,我们得获取用户的语音输入。这里使用Python的speech_recognition包来进行语音获取,使用这个的好处是,他会在用户说话结束时,自动停止语音获取,这里我们就不用自己去写该什么停止语音获取的逻辑了,这点我认识是相当爽。 speech_recognition包的版本号:3.8.1 在安装speech_recognition包前我们还需要安装相应的依赖资源库: PS. Python版本需为2.6或2.7或3.3+  pip install PyAudio  版本号:0.2.11 ps.这里跟上面使用apt-get安装的pyaudio是不一样的,这个安装是当前项目下  PS. PocketSphinx这个包可以暂时不安装,先看看能不能跑通,我安装这个是我一开始也试了使用 里面的recognition_sphinx()来进行语音识别,结果发现效果不太好,就放弃了。但我现在不清楚这个 有没有对后面安装产生什么影响,这个包我记得蛮大,可以暂时不安装,先试试后面流程再说。  pip install PocketSphinx  版本号:0.1.15 如果安装失败,那就是少了下面的一些依赖: apt-get install libasound2-dev bison sudo apt-get install pulseaudio sudo apt-get install libpulse-dev sudo apt-get install osspd 上面完成之后,安装:  pip install SpeechRecognition  版本号:3.8.1 1 然后,我们可以通过下面代码来验证语音的获取:  import speech_recognition as sr  #从系统麦克风拾取音频数据,采样率为 16000 def rec(rate=16000):     r = sr.Recognizer()     with sr.Microphone(sample_rate=rate) as source:         print('正在获取声音中...')         audio = r.listen(source)      with open("recording.wav", "wb") as f:         f.write(audio.get_wav_data())         print('声音获取完成.')      return 1  if __name__ == '__main__':     rec()  如果在当前项目目录下得到了recording.wav文件,并且播放正常的话,那就没问题了。  语音转文字 语音转文字使用speechbrain 安装:  pip install speechbrain  版本号:0.5.11 pip install SoundFile  版本号:0.10.3.post1 pip install sox  版本号:1.4.1 1 2 3 这个识别默认是英文识别,我们可以使用官方的预先训练好的中文模型,官网地址:  官网地址:https://speechbrain.github.io/ GitHub仓库地址:https://github.com/speechbrain/speechbrain 1 2 我这里下载好了:  下载地址:https://download.csdn.net/download/qq_44323019/85399454 1 原来上传资源可以关闭自动调整积分。。。上面链接我设置的0积分,免费下载。 下载解压之后,会得到一个pretrained_models文件夹,把这个文件夹放到当前目录的根目录即可。 测试代码:  from speechbrain.pretrained import EncoderDecoderASR import torch import torchaudio  def voice_into_word():     asr_model = EncoderDecoderASR.from_hparams(source="speechbrain/asr-transformer-aishell",                                                savedir="pretrained_models/asr-transformer-aishell")      audio_1 = r"./test.wav"     ddd = torchaudio.list_audio_backends()      print('start...')      snt_1, fs = torchaudio.load(audio_1)     wav_lens = torch.tensor([1.0])     res = asr_model.transcribe_batch(snt_1, wav_lens)      word = res[0][0].replace(' ', '')     print(word)      return word  if __name__ == '__main__':     voice_into_word()  ok,到这里我们能将语音转文字,得到文字之后,那我们能操作的空间就大。  五、指令识别 这一部分其实没什么可说的,如果只是简单的指令识别,只要判断上一步我们得到的语音转成的文字部分有没有我们指令的关键字,然后再向用户确定一下就ok了。  其实这里我们还行实现语音聊天机器人功能。我们上一步不是得到了文字吗,这里只要我们能接一个聊天机器人接口就行了,比如图灵机器人。这里我没这个需求,有需求的可以自己去搜索,直接调用就行了。  六、文字转语音 要完成一个完整对话,当然少不了我们的终端也需要“说”了。这里我们使用pyttsx3来实现说的功能。 先安装:  sudo apt install libespeak1 pip install pyttsx3 1 2 PS.这里说一句,单纯安装pyttsx3大概率是不行的,我当时是莫名其妙报了一大堆错,都蒙了,后面是在一个论坛上面看到需要libspeak这个。  安装完成之后,测试代码:  import pyttsx3  def speakout(workText):     engine = pyttsx3.init()      # 获取发音人     voices = engine.getProperty('voices')      #这里可以获取你设备当前支持的发音,可以配置下面代码使用,我这里使用zh偷懒了          engine.setProperty('voice', 'zh')  # 开启支持中文      rate = engine.getProperty('rate')     engine.setProperty('rate', rate-40) #控制发音语速,可以自己调      # 设置音量  范围为0.0-1.0  默认值为1.0     engine.setProperty('volume', 0.7)      engine.say(workText)     engine.runAndWait()  speakout('你好哇')  七、其他一些 到这里应该是结束了,语音唤醒,语音识别,文字转语音都有了,整套流程是通了,更深入的就需要自己慢慢去琢磨了。我这里给出我整个项目安装过的包,防止上面我有漏写了的。其中一些包肯定是用不到的,因为中间我尝试了好几种方案,所以安装过其他一些包。只做参考。  Package            Version ------------------ ------------ certifi            2021.10.8 cffi               1.15.0 charset-normalizer 2.0.12 filelock           3.7.0 huggingface-hub    0.6.0 HyperPyYAML        1.0.1 idna               3.3 joblib             1.1.0 numpy              1.22.3 packaging          21.3 pip                22.1 pocketsphinx       0.1.15 PyAudio            0.2.11 pycparser          2.21 pyparsing          3.0.9 pyttsx3            2.71 PyYAML             6.0 requests           2.27.1 ruamel.yaml        0.17.21 ruamel.yaml.clib   0.2.6 scipy              1.8.0 sentencepiece      0.1.96 setuptools         62.2.0 SoundFile          0.10.3.post1 sox                1.4.1 speechbrain        0.5.11 SpeechRecognition  3.8.1 torch              1.11.0 torchaudio         0.11.0 tqdm               4.64.0 typing_extensions  4.2.0 urllib3            1.26.9 wheel              0.37.1  到这里了,如果对你有帮助,点个小小的赞吧。头一次一篇博客分了两天来写。 ->_<- ———————————————— 版权声明:本文为CSDN博主「@Mrxu」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/qq_44323019/article/details/124808289