当前位置:   article > 正文

百度AI接口的简单使用

百度ai接口简介

百度云(https://cloud.baidu.com/)提供了许多人工智能的API接口,有一些是可以免费使用的。

image.png

环境配置

使用环境

  • windows7 x64

  • python3.7

  • vscode 编辑器,用于写代码

  • ffmpeg 用于将wav格式的音频文件转化成pcm格式,可在其官网(https://www.ffmpeg.org/)上下载
    ffmpeg 下载后解压,不用安装,将bin中三个文件复制到system32目录下即可。
    使用到的python包有

  • aip 百度AI接口库 使用pip install baidu-aip安装

  • pyaudio python3.7使用pip安装会报错,可以下载whl文件(https://github.com/intxcc/pyaudio_portaudio/releases),离线安装pip install PyAudio-0.2.11-cp37-cp37m-win_amd64.whl,pyaudio库的使用可参考https://people.csail.mit.edu/hubert/pyaudio/,上面有例子代码

  • wave 使用pip install wave安装

代码实现

工具函数

  1. #-*- coding:utf-8 -*-
  2. """音频处理"""
  3. import os
  4. import pyaudio
  5. import wave
  6. CHUNK = 1024
  7. FORMAT = pyaudio.paInt16
  8. CHANNELS = 2
  9. #RATE = 44100
  10. RATE = 16000
  11. RECORD_SECONDS = 5
  12. #用来播放声音,声音文件为wav格式
  13. def play_wav(filename):
  14. wf = wave.open(filename, 'rb')
  15. p = pyaudio.PyAudio()
  16. stream = p.open(format=p.get_format_from_width(wf.getsampwidth()),
  17. channels=wf.getnchannels(),
  18. rate=wf.getframerate(),
  19. output=True)
  20. data = wf.readframes(CHUNK)
  21. while len(data) != 0:
  22. stream.write(data)
  23. data = wf.readframes(CHUNK)
  24. stream.stop_stream()
  25. stream.close()
  26. p.terminate()
  27. #录音,将声音保存为wav格式
  28. def record(output_filename):
  29. p = pyaudio.PyAudio()
  30. stream = p.open(format=FORMAT,
  31. channels=CHANNELS,
  32. rate=RATE,
  33. input=True,
  34. frames_per_buffer=CHUNK)
  35. print("开始录音,最长为5s")
  36. frames = []
  37. over_flag = False
  38. for i in range(0, int(RATE / CHUNK * RECORD_SECONDS)):
  39. data = stream.read(CHUNK)
  40. frames.append(data)
  41. print("录音结束")
  42. stream.stop_stream()
  43. stream.close()
  44. p.terminate()
  45. wf = wave.open(output_filename, 'wb')
  46. wf.setnchannels(CHANNELS)
  47. wf.setsampwidth(p.get_sample_size(FORMAT))
  48. wf.setframerate(RATE)
  49. wf.writeframes(b''.join(frames))
  50. wf.close()
  51. #调用ffmpeg将wav格式的音频文件转化成pcm格式,返回pcm格式文件名
  52. #可参考https://www.cnblogs.com/DragonFire/p/9212935.html
  53. #http://ai.baidu.com/docs#/ASR-Tool-convert/top
  54. def wav2pcm(wav_file_name):
  55. # 假设 wav_file = "音频文件.wav"
  56. # wav_file.split(".") 得到["音频文件","wav"] 拿出第一个结果"音频文件" 与 ".pcm" 拼接 等到结果 "音频文件.pcm"
  57. pcm_file = "%s.pcm" %(wav_file_name.split(".")[0])
  58. # 就是此前我们在cmd窗口中输入命令,这里面就是在让Python帮我们在cmd中执行命令
  59. os.system("ffmpeg -y -i %s -acodec pcm_s16le -f s16le -ac 1 -ar 16000 %s > ffmpeg.log"%(wav_file_name,pcm_file))
  60. return pcm_file

测试代码

  1. #-*- coding:utf-8 -*-
  2. from aip import AipSpeech
  3. import pyaudio
  4. import wave
  5. import sys
  6. from pyaudio_utils import play_wav,record,wav2pcm
  7. """ 你的 APPID AK SK """
  8. #如何获取这三个参数可参考官方文档
  9. APP_ID = 'xxxx'
  10. API_KEY = 'xxxx'
  11. SECRET_KEY = 'xxx'
  12. client = AipSpeech(APP_ID, API_KEY, SECRET_KEY)
  13. #语音合成
  14. #参考https://cloud.baidu.com/doc/SPEECH/TTS-Online-Python-SDK.html#.E8.AF.B7.E6.B1.82.E8.AF.B4.E6.98.8E
  15. def text2sound(msg):
  16. result = client.synthesis(msg, 'zh', 1, {
  17. 'vol': 5,'aue':6
  18. })
  19. # 识别正确返回语音二进制 错误则返回dict 参照下面错误码
  20. if not isinstance(result, dict):
  21. with open('auido.wav', 'wb') as f:
  22. f.write(result)
  23. play_wav('auido.wav')
  24. #语音识别
  25. #参考https://cloud.baidu.com/doc/SPEECH/ASR-Online-Python-SDK.html#.E8.AF.B7.E6.B1.82.E8.AF.B4.E6.98.8E
  26. def sound2text(sound_filename,fmt):
  27. # 识别本地文件
  28. res = client.asr(open(sound_filename,'rb').read(), fmt, 16000, {
  29. 'dev_pid': 1536,
  30. })
  31. print(res)
  32. if 'result' in res.keys():
  33. return(res['result'][0])
  34. return ''
  35. def test():
  36. while True:
  37. #录音
  38. record('output.wav')
  39. #播放录音
  40. play_wav('output.wav')
  41. #将wav转化为pcm文件
  42. pcm_filename = wav2pcm('output.wav')
  43. #将声音转化为文字
  44. res = sound2text(pcm_filename,'pcm')
  45. if res:
  46. #将文字转化为声音并读出
  47. text2sound(res)
  48. test()

参考资料

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小桥流水78/article/detail/922513
推荐阅读
相关标签
  

闽ICP备14008679号