吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 476|回复: 4
上一主题 下一主题
收起左侧

[其他原创] Autojs6-调用tts语音,实现定时播报,天气预报功能

[复制链接]
跳转到指定楼层
楼主
dlufjfiqnurr 发表于 2024-5-12 01:35 回帖奖励

本文使用了安卓自带的tts语音引擎来播放语音,请确保系统有一个语音引擎。

使用网络获取数据,需要手机有网络。

1. 工具类

module.js

// 获取时间
function getTimeString() {
    var data = new Date();
    var s = data.getHours()
    var f = data.getMinutes()
    var m = data.getSeconds()
    if (s < 10) {
        s = "0" + s
    }
    if (f < 10) {
        f = "0" + f
    }
    if (m < 10) {
        m = "0" + m
    }
    var ss = String(s) + ":" + String(f) + ":" + String(m)
    return ss
};
// 获取天气和最近下雨
// 空格拼接或者直接拼接会导致空格(拼接)前面的重复读,耗时半小时
function weatherForcast(cityCode){
    var cityInfoStr="";
    var forecastStr="";
    var rainStr="";
    // 同步请求
    var res = http.get(`http://t.weather.itboy.net/api/weather/city/${cityCode}`);

    if(res.statusCode != 200){
        toast("请求失败: " + res.statusCode + " " + res.statusMessage);
        return "请求失败";
    }
    // log("html = " + res.body.string());
    let resData=res.body.json();
    // log(resData.data.forecast)

    let forecast=resData.data.forecast;
    let cityInfo=resData.cityInfo;

    cityInfoStr=cityInfo.parent+cityInfo.city+",更新时间:"+cityInfo.updateTime;
    // log(cityInfoStr)

    forecastStr="今天播报"+forecast[0].ymd+" "+forecast[0].high+" "+forecast[0].low+" "+forecast[0].week+" "+forecast[0].type;
    // log(forecastStr)

    for(let i=0;i<forecast.length;i++){
        if(forecast[i].type.indexOf("雨") && i!=0){
            // log(forecast[i].date+" "+forecast[i].type)
            rainStr=forecast[i].ymd+" "+forecast[i].type;
            break;
        }
        //log(forecast[i].date+" "+forecast[i].high+" "+forecast[i].low+" "+forecast[i].week+" "+forecast[i].type)
    }

    // 天气预报不做显示,只报当天,和最近第一个下雨的日期
    return forecastStr+"."+(rainStr?'最近下雨':'')+rainStr+"."+cityInfoStr;
}

module.exports.tools={
    getTimeString,
    weatherForcast
}

2. 播报语音

播报语音.js

注意:该脚本会会自动调大音量,student一定要关闭设置音量选项

let { tools } = require("./mokuai.js");
// 获取当前音量
let old = device.getMusicVolume();
// 设置最大音量
device.setMusicVolume(15);

importClass(android.speech.tts.TextToSpeech.Engine);
importClass(java.util.Locale);
importClass(android.speech.tts.TextToSpeech)
importClass(android.speech.tts.TextToSpeech.OnInitListener)

// 播报内容
var str = "现在是北京时间" + tools.getTimeString();

var pitch = 1.0
var speechRate = 1.0
var obj = {
    onInit: function(status) {
        if (status == TextToSpeech.SUCCESS) {
            if (tts.setLanguage(Locale.CHINESE) == TextToSpeech.SUCCESS && tts.setPitch(pitch) == TextToSpeech.SUCCESS && tts.setSpeechRate(speechRate) == TextToSpeech.SUCCESS) {
            } else {
                exit()
            }
        } else {}
    }
}
tts = new TextToSpeech(context, TextToSpeech.OnInitListener(obj))

sleep(1000)
var a = tts.speak(str, TextToSpeech.QUEUE_ADD, null);
sleep(10000)

device.setMusicVolume(old)

3. 天气预报

使用中国天气的免费api响应格式\
image

请自行:查询中国天气网api的城市代码

天气预报.js

let { tools } = require("./mokuai.js");

importClass(android.speech.tts.TextToSpeech.Engine);
importClass(java.util.Locale);
importClass(android.speech.tts.TextToSpeech)
importClass(android.speech.tts.TextToSpeech.OnInitListener)
// 城市编码
let cityCode=101200105
var str =tools.weatherForcast(cityCode);
log(str)

var pitch = 1.0
var speechRate = 1.0
var obj = {
    onInit: function(status) {
        if (status == TextToSpeech.SUCCESS) {
            if (tts.setLanguage(Locale.CHINESE) == TextToSpeech.SUCCESS && tts.setPitch(pitch) == TextToSpeech.SUCCESS && tts.setSpeechRate(speechRate) == TextToSpeech.SUCCESS) {
            }else{
                exit()
            }
        } else {}
    }
}
tts = new TextToSpeech(context, TextToSpeech.OnInitListener(obj))
sleep(1000)

var a = tts.speak(str, TextToSpeech.QUEUE_ADD, null);

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
Bayonet + 1 + 1 当闹钟不错,感谢分享!!!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

沙发
随梦期初 发表于 2024-5-16 11:00
基于autojs吗
3#
dxaw2458 发表于 2024-5-16 15:47
4#
anning666 发表于 2024-5-16 16:00
我总觉得系统自带的TTS语音效果太过僵硬,而调用第三方的tts api又涉及到收费
有没有免费的开源的效果比较好的第三方tts推荐的?
5#
 楼主| dlufjfiqnurr 发表于 2024-5-17 22:51 |楼主
anning666 发表于 2024-5-16 16:00
我总觉得系统自带的TTS语音效果太过僵硬,而调用第三方的tts api又涉及到收费
有没有免费的开源的效果比较 ...

吾爱论坛有很多啊,小爱语音,度秘语音,讯飞tts,我手机是自带的乐语音可以调音色,语音引擎都支持调音色的。主要问题是,一般第三方语音引擎,如果不启动三方tts调用(就是第三方tts没有运行),没有任何声音。系统自带的tts没有这个问题。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止灌水或回复与主题无关内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-6-11 03:28

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表