快速用Python做一个能讲笑话的机器人

本文介绍如何使用Python的pyjokes、百度翻译API和pyttsx3库创建一个能讲笑话并用语音朗读的简单应用。首先,通过pip安装所需库,然后使用pyjokes获取笑话,再用百度翻译将英文笑话翻译为中文,最后通过pyttsx3将翻译后的笑话转换为语音输出。虽然笑话可能偏向程序员风格,但这个项目作为一个学习示例十分有趣。
摘要由CSDN通过智能技术生成

 

Python有很多有意思的库,利用这些库可以生成一个有意思的应用。

这里展示一个用三个库来快速生成一个能够自动讲笑话的机器人。这个机器人能够自动生成一个笑话,并且用语音读出来。

程序员无废话,直接进入主题。该机器人分三步:

第一步:安装pyjokes,并且调用随机生成一个笑话。

pip install pyjokes

调用例子

pyjokes.get_joke()

第二步:申请百度翻译的开发者,可以免费使用。这里使用百度,也可以根据需要使用别的翻译引擎。

用如下代码,将百度翻译说明文档进行封装,方便后续使用。将代码中的‘INPUT——YOUR—APPID','INPUT——YOUR--APPkey’替换成你自己申请的。

将下面的代码保存到文件trans.py中。

# Please refer to `https://api.fanyi.baidu.com/doc/21` for complete api document

import requests

import random

import json

from hashlib import md5


class Translate_Baidu():

    def __init__(self):


        # Set your own appid/appkey.这里的appid和appkey可以在百度中申请开发者来获得。

        self.appid = 'INPUT——YOUR--APPID'

        self.appkey = 'INPUT——YOUR--APPkey'


        # For list of language codes, please refer `https://api.fanyi.baidu.com/doc/21`

        self.from_lang = 'en'

        self.to_lang =  'zh'


        self.endpoint = 'http://api.fanyi.baidu.com'

        self.path = '/api/trans/vip/translate'

        self.url = self.endpoint + self.path


    # Generate salt and sign

    def make_md5(self, s, encoding='utf-8'):

        return md5(s.encode(encoding)).hexdigest()



    def translate(self, query):

        salt = random.randint(32768, 65536)

        sign = self.make_md5(self.appid + query + str(salt) + self.appkey)


        # Build request

        headers = {'Content-Type': 'application/x-www-form-urlencoded'}

        payload = {'appid': self.appid, 'q': query, 'from': self.from_lang, 'to': self.to_lang, 'salt': salt, 'sign': sign}


        # Send request

        r = requests.post(self.url, params=payload, headers=headers)

        result = r.json()


        # Show response

        return json.dumps(result, indent=4, ensure_ascii=False)

第三步:安装pyttsx3, 并且调用

pip install pyttsx3

调用例子

pp = pyttsx3.init()

pp.say("hello")

pp.runAndWait()

将以上的整合起来编码成下面代码:

将代码保存到jokes.py中

from trans import Translate_Baidu as baidutrs

import pyjokes as pyjokes

import json

import pyttsx3



# 利用pyttsx3进行文字转语音

trs = baidutrs()

result = json.loads(trs.translate(query=pyjokes.get_joke()))

print(result['trans_result'][0]['src'])

print(result['trans_result'][0]['dst'])



# 利用pyttsx3进行文字转语音

pp = pyttsx3.init()

pp.say(result['trans_result'][0]['dst'])

pp.runAndWait()

运行:

% python3 jokes.py

Why did Microsoft name their search engine BING? Because It's Not Google.

为什么微软将其搜索引擎命名为BING?因为这不是谷歌。

后记:

这个机器人有点不足的地方,一个是笑话都太程序猿化,一般人get不到笑点,可以开发自己感兴趣的笑话库。这里只做学习展示用。

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

老猿讲编程

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值