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

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

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

语音识别 1.实验环境准备
  • 注册并登陆华为云账号华: 华为云.
  • 了解语语音识别相关文档,详见
    https://support.huaweicloud.com/api-sis/sis_03_0040.html
  • 开通语音合成与语音识别服务:登录语音交互服务管理控制台(https://console.huaweicloud.com/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(https://mirrors.huaweicloud.com/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-gpu
python 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.实现录音功能
  1. 创建 pyaudio_record_generate.py 在里面写入代码
  2. 导入依赖
import wave
import logging
import pyaudio
  1. 定义录音函数
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()

    # 关闭pyaudio
    p.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.语音识别
  1. 创建文件 Huawei_identify.py 写入以下代码
  2. 导入相应的工具包
#%%
# 导入相应的工具包
# -*- coding: utf-8 -*-
from huaweicloud_sis.client.asr_client import AsrCustomizationClient
from huaweicloud_sis.bean.asr_request import AsrCustomShortRequest
from huaweicloud_sis.bean.asr_request import AsrCustomLongRequest
from huaweicloud_sis.exception.exceptions import ClientException
from huaweicloud_sis.exception.exceptions import ServerException
from huaweicloud_sis.utils import io_utils
from huaweicloud_sis.bean.sis_config import SisConfig
import json
  1. 配置相关参数
    这里填入环境准备时保存的ak/sk,要选择对应区域 project_id(一般默认是北京-4区)
#%%
# 配置相关参数
ak = "****"  #配置自己的ak
sk = "****"  #配置自己的sk
project_id = "****" #配置自己的project_id
region = "cn-north-4" #默认使用北京-4区,对应的区域代码即为cn-north-4
  1. 配置数据参数和属性
#%%
# 配置数据参数和属性
# 一句话识别参数,我们使用语音合成的语音数据,1min以内的音频
path = './train.wav'  
path_audio_format = 'wav'  # 音频格式,默认是wav  可选 wav、mp3、pcm
path_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,默认no
asr_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)通过https://support.huaweicloud.com/api-sis/sis_03_0111.html了解华为语音合成服务。
(3)获取华为云凭证AK/SK ,并下载语音交互的python SDK (https://mirrors.huaweicloud.com/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.实现语音合成功能并自动播放
  1. 3.1导入相应的工具包
#%%
# 导入相应工具包
from huaweicloud_sis.client.tts_client import TtsCustomizationClient
from huaweicloud_sis.bean.tts_request import TtsCustomRequest
from huaweicloud_sis.bean.sis_config import SisConfig
from huaweicloud_sis.exception.exceptions import ClientException
from huaweicloud_sis.exception.exceptions import ServerException
import json
  1. 3.2配置相关参数
    这里填入环境准备时保存的ak/sk,要选择对应区域 project_id(一般默认是北京-4区)
#%%
# 配置相关参数
ak = "****"  #配置自己的ak
sk = "****"  #配置自己的sk
project_id = "****" #配置自己的project_id
region = "cn-north-4" #默认使用北京-4区,对应的区域代码即为cn-north-4

text = '今天你要喝QQ捏捏好喝到咩噗茶吗?'    # 待合成文本,不超过500字
path = './data/test.wav'           # 保存路径,可在设置中选择不保存本地
  1. 3.3初始化客户端
#%%
# 初始化客户端
config = SisConfig()
config.set_connect_timeout(5)       # 设置连接超时,单位s
config.set_read_timeout(10)         # 设置读取超时,单位s    
ttsc_client = TtsCustomizationClient(ak, sk, region, project_id, sis_config=config)

  1. 3.4构造请求
#%%
# 构造请求
ttsc_request = TtsCustomRequest(text)
# 设置请求,所有参数均可不设置,使用默认参数
# 设置属性字符串, language_speaker_domain, 默认chinese_xiaoyan_common, 参考api文档
ttsc_request.set_property('chinese_xiaoyan_common')
# 设置音频格式,默认wav,可选mp3和pcm
ttsc_request.set_audio_format('wav')
# 设置采样率,8000 or 16000, 默认8000
ttsc_request.set_sample_rate('8000')
# 设置音量,[0, 100],默认50
ttsc_request.set_volume(50)
# 设置音高, [-500, 500], 默认0
ttsc_request.set_pitch(0)
# 设置音速, [-500, 500], 默认0
ttsc_request.set_speed(0)
# 设置是否保存,默认False
ttsc_request.set_saved(True)
# 设置保存路径,只有设置保存,此参数才生效
ttsc_request.set_saved_path(path)
  1. 3.5语音合成
#%%
# 语音合成测试
#发送请求,返回结果。如果设置保存,可在指定路径里查看保存的音频。
result = ttsc_client.get_ttsc_response(ttsc_request)
print(json.dumps(result, indent=2, ensure_ascii=False))
  1. 3.6自动播放合成的音频
#%%
# 自动播放合成的音频
from pydub import AudioSegment
from pydub.playback import play
song = AudioSegment.from_wav(path)
play(song)
感情分析 1.实验环境准备

(1)注册并登录华为云管理控制台。
(2)通过https://support.huaweicloud.com/sdkreference-nlp/nlp_06_0053.html了解华为云感情分析(基础版)服务。
(3)获取华为云身份凭证AK/SK ,并下载自然语言处理python SDK (https://nlp-sdk.obs.cn-north-4.myhuaweicloud.com/nlp-sdk-python.zip)
(4)安装所需的依赖库setuptools, requests和jieba(可以通过pip下载)
(5)在解压的python DSK目录下进入cmd ,然后执行python setup.py install命令安装Python SDK到开发环境

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

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

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

2.SDK获取以及配置
  1. 下载对应的 pythonSDK.
  2. 在解压的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:[email protected]”, “https”: “http://username:[email protected]”}
#如果需要,可以使用http代理,否则不需要 akskClient.set_proxy(proxy) # 如果需要,可以使用http代理,否则不需要
nluClient= NluClient(akskClient)

代码实现
  1. 4.1导入相应的工具包
#%%
# 导入相应工具包
import json
from huaweicloud_nlp.NluClient import NluClient
from huaweicloud_nlp.HWNlpClientAKSK import HWNlpClientAKSK
  1. 4.2配置相关参数和初始化客户端
#%%
# 初始化  Client & 配置相关参数
akskClient = HWNlpClientAKSK("SLBEMI16MQXC3VRUAYB7", # 用户的ak
 "WPurkzjmGSNiBm7Ypnbm4MuNX7DRwp2xsjwCSXiZ", # 用户的sk
 "cn-north-4", # region值
 "0f5a6e66b500f5fc2faec001bae06d7d") # projectId
nluClient= NluClient(akskClient)
  1. 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)
  1. 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)
  1. 运行结果
总结

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

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/726420.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-26
下一篇 2022-04-26

发表评论

登录后才能评论

评论列表(0条)

保存