小爱同学语音API(不需要小米账号)

先看下运行效果

小爱同学语音API(不需要小米账号)_第1张图片

1找一个免费的API接口

输入你好,返回参数如下

小爱同学语音API(不需要小米账号)_第2张图片

参数分析:

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():            #播放个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(15)  # 说话快慢  数字越大越慢

附:下面来几个GIF

小爱同学语音API(不需要小米账号)_第3张图片

如果上面的你都不满意,看看这张雷军的3Q!

小爱同学语音API(不需要小米账号)_第4张图片

完整代码

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+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)           #将爬取语音保存下来w
    print('小爱:'+gu.json().get('data').get('txt')) #输出小爱回复文字
    pygame.mixer.music.load(fl)
    pygame.mixer.music.play(1)   #播放语音
    while pygame.mixer.music.get_busy():  # 在音频播放为完成之前不退出程序
        gif()
        pass
    gus.close()
    gu.close()  #关闭
    if s=='再见':
        print('顾某')
        break

小学生写代码很多需要改进的地方 希望大家给予宝贵的建议

你可能感兴趣的:(json,python)