人工智能 之 语音

Posted glh-ty

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了人工智能 之 语音相关的知识,希望对你有一定的参考价值。

以下技术均依靠于百度大佬提供的接口操作!调用接口语言为python

一,下载

pip install baidu-aip

二,语音合成

根据百度语言合成官网,调用即可:

#!/usr/bin/env python
# -*- coding:utf8 -*-


from aip import AipSpeech

""" 你的 APPID AK SK """  # 注册百度账号之后,创建一个应用,即可获得这些数据
APP_ID = "14446029"  
API_KEY = "fErCt9KmoKuGDpBZqDQhQB7v"
SECRET_KEY = EXTb37xV1lubXB8D5fzZnlljLHnC7VMx

client = AipSpeech(APP_ID, API_KEY, SECRET_KEY)

text = "你叫啥呀"
res = client.synthesis(text, options={
    "vol": 8,  # 
    "pit": 6,
    "spd": 5,
    "per": 4
})

if not isinstance(res, dict):
    with open(audio.mp3, wb) as f:
        f.write(res)

配置参数详见:http://ai.baidu.com/docs/#/TTS-Online-Python-SDK/top

这样我们生成的’audio‘.mp3文件就是识别后的语言!

三,语言识别

目前百度支持的语言格式:原始 PCM 的录音参数必须符合 8k/16k 采样率、16bit 位深、单声道,支持的格式有:pcm(不压缩)、wav(不压缩,pcm编码)、amr(压缩格式)(百度自己说的);

其实,百度能准确的识别的语音格式只有PCM!!!

那么我们就需要把我们的语音格式转换为PCM格式!使用下面这个工具可以完成音频任意装换格式!

FFmpeg 系统工具 : https://pan.baidu.com/s/1jonSAa_TG2XuaJEy3iTmHg 密码:w6hk 

下载之后,解压,然后配置环境变量,就可以使用了!使用命令看下面代码!

#!/usr/bin/env python
# -*- coding:utf-8 -*-

import os
from aip import AipSpeech

""" 你的 APPID AK SK """
APP_ID = "14446029"
API_KEY = "fErCt9KmoKuGDpBZqDQhQB7v"
SECRET_KEY = EXTb37xV1lubXB8D5fzZnlljLHnC7VMx

client = AipSpeech(APP_ID, API_KEY, SECRET_KEY)


def get_file_content(file_path):
    cmd_str = f"ffmpeg -y -i {file_path} -acodec pcm_s16le -f s16le -ac 1 -ar 16000 {file_path}.pcm"  # 用于转换我们的语音格式
    os.system(cmd_str)
    with open(f"{file_path}.pcm", rb) as fp:
        return fp.read()


res = client.asr(speech=get_file_content("2.m4a"), options={
    "dev_pid": 1536,
})

print(res)
print(res.get("result")[0])

参数配置详见 : http://ai.baidu.com/docs/#/ASR-Online-Python-SDK/top

 四,自然语言处理(NLP)

详见: http://ai.baidu.com/docs/#/NLP-Python-SDK/top

from aip import AipNlp


""" 你的 APPID AK SK """
APP_ID = "14446029"
API_KEY = "fErCt9KmoKuGDpBZqDQhQB7v"
SECRET_KEY = EXTb37xV1lubXB8D5fzZnlljLHnC7VMx


nip_client = AipNlp(APP_ID, API_KEY, SECRET_KEY)

def nip_handle(text):
    if nip_client.simnet("你叫什么名字", text).get("score") >= 0.72:  # 用于返回两个文本的相似度,大于72%既可以认为,2个意思基本相同!
        return "我的名字叫你的小可爱呀"
    return goto_tuling(text, "xipangzi")

 

以上是关于人工智能 之 语音的主要内容,如果未能解决你的问题,请参考以下文章

Android App实战项目之实现你问我答的智能语音机器人(超详细 附源码和演示视频)

基于神经网络的多音区语音唤醒 | 论文解读

自然语言处理NLP之文本蕴涵智能问答语音识别对话系统文本分类情感计算

HarmonyOS之AI能力·语音识别技术

HarmonyOS之AI能力·语音播报

智能家居入门DIY——LD3320之语音识别