先看下运行效果
1找一个免费的API接口
输入你好,返回参数如下
参数分析:
txt为返回文字
tts为返回文字的语音网址
2返回文字部分
import requests
urk='https://xiaoapi.cn/API/lt_xiaoai.php?type=json&msg='
s = input("我:") #你提出的问题
url=urk+s
gu = requests.get(url)
print('小爱:'+gu.json().get('data').get('txt')) #返回的文字
3语音部分处理
(1)语音爬取
import requests,time
urk='https://xiaoapi.cn/API/lt_xiaoai.php?type=json&msg='
s = input("我:")
url = urk + s
gu = requests.get(url)
gum = gu.json().get('data').get('tts') # 语音网址
gus = requests.get(gum)
guf = time.strftime("%Y%m%d%H%M%S", time.localtime()) # 用时间当文件名
fl = 'D:/' + guf + '.mp3'
with open(fl, 'wb') as f:f.write(gus.content) # 将爬取语音保存下来
(2)语音播放
import pygame
pygame.mixer.init() #初始化
pygame.mixer.music.load(r"file") #文件位置
pygame.mixer.music.play(1) #播放语音
while pygame.mixer.music.get_busy(): # 在音频播放为完成之前不退出程序pass
4找个纸片人让他动起来
from PIL import Image, ImageSequence
import cv2
import numpy #图像部分
pic_name = "111.gif"
def gif(): #播放个GIFim = Image.open(pic_name)for frame in ImageSequence.Iterator(im): # 使用迭代器frame = frame.convert('RGB')cv2_frame = numpy.array(frame)show_frame = cv2.cvtColor(cv2_frame, cv2.COLOR_RGB2BGR)cv2.imshow(pic_name, show_frame)cv2.waitKey(15) # 说话快慢 数字越大越慢
附:下面来几个GIF
如果上面的你都不满意,看看这张雷军的3Q!
完整代码
import requests
import time,pygame
from PIL import Image, ImageSequence
import cv2
import numpy
urk='https://xiaoapi.cn/API/lt_xiaoai.php?type=json&msg='
pygame.mixer.init()
pic_name = "125.gif"
im = Image.open(pic_name)
print('输入--“再见”--结束程序')
def gif():im = Image.open(pic_name)for frame in ImageSequence.Iterator(im): # 使用迭代器frame = frame.convert('RGB')cv2_frame = numpy.array(frame)show_frame = cv2.cvtColor(cv2_frame, cv2.COLOR_RGB2BGR)cv2.imshow(pic_name, show_frame)cv2.waitKey(10) # 说话快慢 越大越慢
while True:s = input("我:")url=urk+sgu = requests.get(url)gum=gu.json().get('data').get('tts') #语音网址gus=requests.get(gum)guf = time.strftime("%Y%m%d%H%M%S", time.localtime()) #用时间当文件名fl='D:/'+guf+'.mp3'with open(fl,'wb')as f:f.write(gus.content) #将爬取语音保存下来wprint('小爱:'+gu.json().get('data').get('txt')) #输出小爱回复文字pygame.mixer.music.load(fl)pygame.mixer.music.play(1) #播放语音while pygame.mixer.music.get_busy(): # 在音频播放为完成之前不退出程序gif()passgus.close()gu.close() #关闭if s=='再见':print('顾某')break
小学生写代码很多需要改进的地方 希望大家给予宝贵的建议