第一句子网 - 唯美句子、句子迷、好句子大全
第一句子网 > 调用云服务实现语音识别合成以及感情分析

调用云服务实现语音识别合成以及感情分析

时间:2022-02-05 08:19:50

相关推荐

调用云服务实现语音识别合成以及感情分析

目录:

语音识别1.实验环境准备2.SDK获取以及配置3.利用 pyaudio 实现语音录入a.安装 pyaudiob.实现录音功能4.语音识别语音合成1.环境准备2.SDK获取以及配置3.实现语音合成功能并自动播放感情分析1.实验环境准备2.SDK获取以及配置3.实现感情分析代码实现总结

语音识别

1.实验环境准备

注册并登陆华为云账号华: 华为云.了解语语音识别相关文档,详见

/api-sis/sis_03_0040.html开通语音合成与语音识别服务:登录语音交互服务管理控制台(/speech/?region=cn-north-4)

选择左侧的“定制语音识别”和“定制语音合成”,然后在“定制语音识别”项,选择“一句话识别”,然后在界面单击“开通服务”

4.准备华为云账号的AK/SK。如果之前可以获取过,可以继续使用之前的AK/SK。如果之前没有生成过AK/SK,可登录华为云,在用户名处点击“我的凭证”,在“我的凭证”界面,选择“管理访问密钥 > 新增访问密钥”来获取,下载认证账号的AK/SK,请妥善保管AK/SK信息。之后的实验不用再新增,可以直接使用此AK/SK信息。

新增加密钥

选择立刻下载(在下载的文档中可以找到我们的Access Key IdSecret Access Key他们就是我们的AK/SK)

5.准备project_id。如果之前已经获取过,还可以继续使用之前的project_id。如果没有获取过,可在“我的凭证”界面的项目列表中查看项目ID,复制所属区域的项目ID为自己的project_id。

一般默认使用华北-北京四

2.SDK获取以及配置

1.下载语音交互服务的Python SDK(/sis-sdk/python/huaweicloud-python-sdk-sis-1.0.0.rar)并解压。data文件夹中的数据我们可以用,代码与data文件夹同级别即可,我们也可以使用自己的数据放在data文件夹中。

2.请确认已安装Python包管理工具setuptools,请确认已安装requests和websocket-client,可通过“pip list”命令查看已安装列表。如果没有安装,请使用以下命令安装:

pip install setuptools

pip install requests

pip install websocket-client

3.在Python SDK解压目录中输入cmd,回车。

4.在SDK目录中,执行python setup.py install命令安装Python SDK到开发环境,或者将.py文件直接引入项目。

activate TensorFlow2-gpupython setup.py install

(1) 输入activate TensorFlow2-gpu(TensorFlow2-gpu是自己运行的虚拟环境名字)进入运行的虚拟环境。

(2)再输入python setup.py install,执行命令安装Python SDK到开发环境

3.利用 pyaudio 实现语音录入

a.安装 pyaudio

pyaudio 介绍:

pyaudio库,使用这个可以进行录音,播放,生成wav文件等等。PyAudio 提供了 PortAudio 的 Python 语言版本,这是一个跨平台的音频 I/O 库,使用 PyAudio 你可以在 Python 程序中播放和录制音频。为PoTaTudio提供Python绑定,跨平台音频I/O库。使用PyAudio,您可以轻松地使用Python在各种平台上播放和录制音频,例如GNU/Linux、微软Windows和苹果Mac OS X/MACOS。

安装

pip install pyaudio

如果安装失败,可以到下面地址去下载whl文件进行安装

https://www.lfd.uci.edu/~gohlke/pythonlibs/#pyaudio

pyaudio有这么几个功能:

提取特征训练并且使用分类器语音分割功能内容关系可视化

b.实现录音功能

创建 pyaudio_record_generate.py 在里面写入代码导入依赖

import waveimport loggingimport pyaudio

定义录音函数

def Record():'''调用麦克风进行录音:return:a'''CHUNK = 1024 # 缓存区大小FORMAT = pyaudio.paInt16 # 采样的深度CHANNELS = 1 # 通道数RATE = 16000 # 采样率RECORD_SECONDS = 5 # 录音的时间# 要保存的文件名WAVE_OUTPUT_FILENAME = 'train.wav'# 创建pyaudio对象p = pyaudio.PyAudio()'''open(self, *args, **kwargs):打开声卡format:采样的深度channels:通道数rate:采样率input:输入frames_per_buffer:采样点的缓存数量'''# 打开数据流stream = p.open(format = FORMAT,channels = CHANNELS,rate = RATE,input = True,frames_per_buffer = CHUNK)logging.info('录音中....')# 开始录音frames = [] # 存放语音数据print(RATE / CHUNK * RECORD_SECONDS)for i in range(0,int(RATE / CHUNK * RECORD_SECONDS)):data = stream.read(CHUNK) # 每次读取的数据量frames.append(data)# 停止流stream.stop_stream()stream.close()# 关闭pyaudiop.terminate()# 保存录音文件wf = wave.open(WAVE_OUTPUT_FILENAME,'wb') # 打开语音文件wf.setnchannels(CHANNELS) # 设置通道数wf.setsampwidth(p.get_sample_size(FORMAT))wf.setframerate(RATE)wf.writeframes(b''.join(frames))wf.close()logging.info('录音结束,识别中....')Record()

4.语音识别

创建文件 Huawei_identify.py 写入以下代码导入相应的工具包

#%%# 导入相应的工具包# -*- coding: utf-8 -*-from huaweicloud_sis.client.asr_client import AsrCustomizationClientfrom huaweicloud_sis.bean.asr_request import AsrCustomShortRequestfrom huaweicloud_sis.bean.asr_request import AsrCustomLongRequestfrom huaweicloud_sis.exception.exceptions import ClientExceptionfrom huaweicloud_sis.exception.exceptions import ServerExceptionfrom huaweicloud_sis.utils import io_utilsfrom huaweicloud_sis.bean.sis_config import SisConfigimport json

配置相关参数

这里填入环境准备时保存的ak/sk,要选择对应区域 project_id(一般默认是北京-4区)

#%%# 配置相关参数ak = "****" #配置自己的aksk = "****" #配置自己的skproject_id = "****" #配置自己的project_idregion = "cn-north-4" #默认使用北京-4区,对应的区域代码即为cn-north-4

配置数据参数和属性

#%%# 配置数据参数和属性# 一句话识别参数,我们使用语音合成的语音数据,1min以内的音频path = './train.wav' path_audio_format = 'wav' # 音频格式,默认是wav 可选 wav、mp3、pcmpath_property = 'chinese_8k_common' # language_sampleRate_domain, 语音合成特征字符串 “语种_人员标识_领域” 如:chinese_8k_common,默认是chinese_xiaoyan_common

#%%# 初始化客户端config = SisConfig()config.set_connect_timeout(5) # 设置连接超时config.set_read_timeout(10) # 设置读取超时asr_client = AsrCustomizationClient(ak, sk, region, project_id, sis_config=config)#初始化客户端 初始化Client

#%%# 构造请求data = io_utils.encode_file(path)asr_request = AsrCustomShortRequest(path_audio_format, path_property, data)# 所有参数均可不设置,使用默认值# 设置是否添加标点,yes or no,默认noasr_request.set_add_punc('yes')

#%%#发送请求,返回结果,返回结果为json格式result = asr_client.get_short_response(asr_request)print(json.dumps(result, indent=2, ensure_ascii=False))

在对应的路径上放入音频文件就可以进行识别了

语音合成

1.环境准备

(1)注册并登录华为云管理控制台。

(2)通过/api-sis/sis_03_0111.html了解华为语音合成服务。

(3)获取华为云凭证AK/SK ,并下载语音交互的python SDK (/sis-sdk/python/huaweicloud-python-sdk-sis-1.0.0.rar)

(4)安装所需的依赖库setuptools, requests和websocket-client(可以通过pip下载)

(5)在解压的python DSK目录下进入cmd ,然后执行python setup.py install命令安装Python SDK到开发环境

(6)实现自动播放合成的音频文件需要pydub 库

pip install pydub

2.SDK获取以及配置

获取的SDK和配置操作和语言识别相同,

3.实现语音合成功能并自动播放

3.1导入相应的工具包

#%%# 导入相应工具包from huaweicloud_sis.client.tts_client import TtsCustomizationClientfrom huaweicloud_sis.bean.tts_request import TtsCustomRequestfrom huaweicloud_sis.bean.sis_config import SisConfigfrom huaweicloud_sis.exception.exceptions import ClientExceptionfrom huaweicloud_sis.exception.exceptions import ServerExceptionimport json

3.2配置相关参数

这里填入环境准备时保存的ak/sk,要选择对应区域 project_id(一般默认是北京-4区)

#%%# 配置相关参数ak = "****" #配置自己的aksk = "****" #配置自己的skproject_id = "****" #配置自己的project_idregion = "cn-north-4" #默认使用北京-4区,对应的区域代码即为cn-north-4text = '今天你要喝QQ捏捏好喝到咩噗茶吗?' # 待合成文本,不超过500字path = './data/test.wav' # 保存路径,可在设置中选择不保存本地

3.3初始化客户端

#%%# 初始化客户端config = SisConfig()config.set_connect_timeout(5) # 设置连接超时,单位sconfig.set_read_timeout(10) # 设置读取超时,单位s ttsc_client = TtsCustomizationClient(ak, sk, region, project_id, sis_config=config)

3.4构造请求

#%%# 构造请求ttsc_request = TtsCustomRequest(text)# 设置请求,所有参数均可不设置,使用默认参数# 设置属性字符串, language_speaker_domain, 默认chinese_xiaoyan_common, 参考api文档ttsc_request.set_property('chinese_xiaoyan_common')# 设置音频格式,默认wav,可选mp3和pcmttsc_request.set_audio_format('wav')# 设置采样率,8000 or 16000, 默认8000ttsc_request.set_sample_rate('8000')# 设置音量,[0, 100],默认50ttsc_request.set_volume(50)# 设置音高, [-500, 500], 默认0ttsc_request.set_pitch(0)# 设置音速, [-500, 500], 默认0ttsc_request.set_speed(0)# 设置是否保存,默认Falsettsc_request.set_saved(True)# 设置保存路径,只有设置保存,此参数才生效ttsc_request.set_saved_path(path)

3.5语音合成

#%%# 语音合成测试#发送请求,返回结果。如果设置保存,可在指定路径里查看保存的音频。result = ttsc_client.get_ttsc_response(ttsc_request)print(json.dumps(result, indent=2, ensure_ascii=False))

3.6自动播放合成的音频

#%%# 自动播放合成的音频from pydub import AudioSegmentfrom pydub.playback import playsong = AudioSegment.from_wav(path)play(song)

感情分析

1.实验环境准备

(1)注册并登录华为云管理控制台。

(2)通过/sdkreference-nlp/nlp_06_0053.html了解华为云感情分析(基础版)服务。

(3)获取华为云身份凭证AK/SK ,并下载自然语言处理python SDK (https://nlp--north-/nlp-sdk-python.zip)

(4)安装所需的依赖库setuptools, requests和jieba(可以通过pip下载)

(5)在解压的python DSK目录下进入cmd ,然后执行python setup.py install命令安装Python SDK到开发环境

基本流程和语言合成和语言识别是相同的,使用前得开通nlp处理服务

在华为云搜索自然语言处理基础 ,点击‘立刻使用’

选择开通《情感分析(基础版)》

2.SDK获取以及配置

下载对应的 pythonSDK.在解压的python DSK目录下进入cmd ,然后执行python setup.py install命令安装Python SDK到开发环境

3.实现感情分析

情感分析(基础版)3.1AK/SK 认证方式

import json

from huaweicloud_nlp.NluClient import NluClient

from huaweicloud_nlp.HWNlpClientAKSK import HWNlpClientAKSK

akskClient = HWNlpClientAKSK(“ak”, # 用户的ak

“sk”, # 用户的sk

“cn-north-4”,#region 值 “058ac67cb6100f602f6bc002d454b770”) # projectId

Proxy = {“http”: “http://username:password@”, “https”: “http://username:password@”}

#如果需要,可以使用http代理,否则不需要 akskClient.set_proxy(proxy) # 如果需要,可以使用http代理,否则不需要

nluClient= NluClient(akskClient)

代码实现

4.1导入相应的工具包

#%%# 导入相应工具包import jsonfrom huaweicloud_nlp.NluClient import NluClientfrom huaweicloud_nlp.HWNlpClientAKSK import HWNlpClientAKSK

4.2配置相关参数和初始化客户端

#%%# 初始化 Client & 配置相关参数akskClient = HWNlpClientAKSK("SLBEMI16MQXC3VRUAYB7", # 用户的ak"WPurkzjmGSNiBm7Ypnbm4MuNX7DRwp2xsjwCSXiZ", # 用户的sk"cn-north-4", # region值"0f5a6e66b500f5fc2faec001bae06d7d") # projectIdnluClient= NluClient(akskClient)

4.3调用端口,返回结果

#%%# 根据初始化Client章节选择认证方式构造完成nluClient后调用## 输入进行分析的文本文字response = nluClient.get_sentiment("花开花落总归尘") # 进行感情分析的句子# 结果为code和json结构体print('状态码:',response.code)# 打印输出结果# print(json.dumps(response.res,ensure_ascii=False))test_shuchu = json.dumps(response.res,ensure_ascii=False)

4.4对输出结果进行处理并打印输出

#%%# 剪切属性并输出s = test_shuchu.split(",")[1]y = test_shuchu.split(",")[0].split(':')[-1]z = s.split(":")[-1]q = test_shuchu.split(",")[-1].split('}')[0]print('接收输出:',s)print(y + '的情感属性属于:' + "消极" if int(z)==0 else "积极")print('识别准确率为:',q)

运行结果

总结

华为云服务对于一般学生学习使用还是挺友好的,大多数服务都是免费的。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。