AI Python
现成的AI算法平台http://ai.baidu.com/

语音合成

根据百度大佬提供的文档,作出以下小栗子:

1.下载

  1. pip install baidu-aip

2.代码

  1. from aip import AipSpeech
  2. """ 你的 APPID AK SK
  3. 控制台 -> 百度语音-> 创建或管理应用
  4. """
  5. APP_ID = '15837844'
  6. API_KEY = '411VNGbuZVbDNZU78LqTzfsV'
  7. SECRET_KEY = '84AnwR2NARGMqnC6WFnzqQL9WWdWh5bW'
  8. client = AipSpeech(APP_ID, API_KEY, SECRET_KEY) # 实例化
  9. def text2audio(text):
  10. """一些参数的配置,详见文档"""
  11. result = client.synthesis(text, 'zh', 1, {
  12. 'vol': 5,
  13. 'per': 4,
  14. 'spd': 4,
  15. 'pit': 7,
  16. })
  17. # 识别正确返回语音二进制 错误则返回dict 参照下面错误码
  18. if not isinstance(result, dict):
  19. print(result)
  20. with open('audio.mp3', 'wb') as f:
  21. f.write(result)

语音识别

1.下载 ffmpeg 用于将语音文件转换为pcm格式

  1. pip install baidu-aip

2.代码

  1. from aip import AipSpeech
  2. import os
  3. """ 你的 APPID AK SK """
  4. APP_ID = '15837844'
  5. API_KEY = '411VNGbuZVbDNZU78LqTzfsV'
  6. SECRET_KEY = '84AnwR2NARGMqnC6WFnzqQL9WWdWh5bW'
  7. client = AipSpeech(APP_ID, API_KEY, SECRET_KEY)
  8. # 读取文件
  9. def get_file_content(filePath):
  10. os.system(f"ffmpeg -y -i {filePath} -acodec pcm_s16le -f s16le -ac 1 -ar 16000 {filePath}.pcm") # 使用ffmpeg转换格式
  11. with open(f"{filePath}.pcm", 'rb') as fp:
  12. return fp.read()
  13. # 识别本地文件
  14. res = client.asr(get_file_content('wyn.wav'), 'pcm', 16000, {
  15. 'dev_pid': 1536,
  16. })
  17. print(res.get("result")[0])
  18. # if res.get("result")[0] == "你叫什么名字":
  19. # text2audio("我叫银王八")

语音聊天机器人

  1. 为了更快捷的开发,可以调用福林机器人的API

http://www.tuling123.com/
在福林机器人里自定义机器人部分功能.

  1. 代码

    1. from aip import AipSpeech
    2. from aip import AipNlp # 自然语言处理,词义相似度
    3. import os
    4. """ 你的 APPID AK SK """
    5. APP_ID = '15837844'
    6. API_KEY = '411VNGbuZVbDNZU78LqTzfsV'
    7. SECRET_KEY = '84AnwR2NARGMqnC6WFnzqQL9WWdWh5bW'
    8. client = AipSpeech(APP_ID, API_KEY, SECRET_KEY)
    9. nlp_client = AipNlp(APP_ID, API_KEY, SECRET_KEY) # 实例化词义相似度对象

    查询文件

    1. def get_file_content(filePath):
    2. os.system(f"ffmpeg -y -i {filePath} -acodec pcm_s16le -f s16le -ac 1 -ar 16000 {filePath}.pcm")
    3. with open(f"{filePath}.pcm", 'rb') as fp:
    4. return fp.read()

    识别本地文件

    1. res = client.asr(get_file_content('jgxh.wma'), 'pcm', 16000, {
    2. 'dev_pid': 1536,
    3. })
    4. text = res.get("result")[0]

    福林机器人智能回答函数

    ```python import requests

def to_tuling(text, uid): data = { “perception”: { “inputText”: { “text”: “北京” } }, “userInfo”: { “apiKey”: “a4c4a668c9f94d0c928544f95a3c44fb”, “userId”: “123” } } data[“perception”][“inputText”][“text”] = text data[“userInfo”][“userId”] = uid res = requests.post(“http://openapi.tuling123.com/openapi/api/v2“, json=data)

  1. # print(res.content)
  2. res_json = res.json()
  3. text = res_json.get("results")[0].get("values").get("text")
  4. print(text)
  5. return text
  1. <a name="nnXKp"></a>
  2. ### 语音相似度判断函数
  3. ```python
  4. def my_nlp(text):
  5. if nlp_client.simnet(text, "你叫什么名字").get("score") >= 0.75:
  6. A = "我叫如花"
  7. return A
  8. if nlp_client.simnet(text, "你今年几岁了").get("score") >= 0.75:
  9. A = "我今年999岁了"
  10. return A
  11. A = to_tuling(text, "open123") # 如果不符合自定义条件,那么调用福林机器人API
  12. return A
  13. """开始执行"""
  14. A = my_nlp(text)
  15. result = client.synthesis(A, 'zh', 1, {
  16. 'vol': 5,
  17. 'per': 4,
  18. 'spd': 4,
  19. 'pit': 7,
  20. })
  21. # 识别正确返回语音二进制 错误则返回dict 参照下面错误码
  22. if not isinstance(result, dict):
  23. # print(result)
  24. with open('audio.mp3', 'wb') as f:
  25. f.write(result)
  26. """自动执行audio.mp3, 打开软件为默认打开软件"""
  27. os.system('audio.mp3')