更新记录

1.2.1(2025-04-07)

修复android某些机型只能播报一次的问题

1.2.0(2025-03-18)

重要更新:1.2版本开始调整安卓的的API调用方式,需要升级的可以参考示例调整之前的代码

1.1.1(2025-02-22)

优化

查看更多

平台兼容性

Vue2 Vue3
App 快应用 微信小程序 支付宝小程序 百度小程序 字节小程序 QQ小程序
HBuilderX 4.45,Android:5.0,iOS:12,HarmonyNext:不支持 × × × × × ×
钉钉小程序 快手小程序 飞书小程序 京东小程序 鸿蒙元服务
× × × × ×
H5-Safari Android Browser 微信浏览器(Android) QQ浏览器(Android) Chrome IE Edge Firefox PC-Safari
× × × × × × × × ×

xwq-tts-speaker

注意!1.2版本开始调整的android的API调用方式,需要升级的可以参考示例调整写法

利用系统TTS将文本转成语音播报,可以自定义第三方TTS引擎(仅支持androi端)

  • Methods 方法(安卓)(旧) 废弃

    • init 初始化
    • startSpeak 开始播报
    • setSpeechRate 设置速度
    • getEngines 获取引擎列表
  • Methods 方法(安卓)(新)

    • startSpeech 开始
    • stopSpeech 暂停
    • getEngines 获取引擎列表
  • Methods 方法(ios)

    • startSpeech 开始
    • pauseSpeech 暂停
    • continueSpeech 继续
    • stopSpeech 停止
  • 代码示例

在UniappX项目中使用(Android示例)


<template>
    <view>
        <view class="area">
            <textarea @input="iptHandle"
                style="width: 100%;border: 1px solid #ccc;padding: 15px;background-color: #f2f2f2;margin-bottom: 15px;" />
            <button type="default" @click="start">文本转语音播报</button>
            <button type="default" @click="stop">播报暂停</button>
            <button type="default" @click="getEnginesList">获取手机播报引擎</button>
        </view>
        <view class="eng-list" style="padding: 15px;">
            <view class="title">
                <text style="font-weight: bold;font-size: 20px;">引擎列表:</text>
            </view>
            <view v-for="(i,k) in engineList" :key='k' class="item">
                {{i}}
            </view>
        </view>
    </view>
</template>

<script setup>
    import { startSpeech, getEngines, stopSpeech, continueSpeech, pauseSpeech } from "@/uni_modules/xwq-tts-speaker";
    import { Option, Info } from "@/uni_modules/xwq-tts-speaker/utssdk/interface.uts";

    const iptVal = ref("");
    const engineList = ref([] as string[]);

    const iptHandle = (e : UniInputEvent) => {
        iptVal.value = e.detail.value;
    };

    //开始播报,在开始之前要先初始化TTS,成功后再开始
    const start = () => {
        startSpeech(
            {
                content: iptVal.value,
                enginesName: null, //自定义第三方TTS引擎,前提是手机上已安装
                // speechRate: 0.5,//播报速度,有些系统TTS不支持设置
                pitch: 0.4,//语调设置,默认1,越小越像男生
                fail: (val : Info) => {
                    console.log(val);
                },
                finish: () => {
                    console.log('播报结束')
                }
            } as Option)
    };
    //停止播报
    const stop = () => {
        stopSpeech();
    };
    //获取引擎列表,没有默认系统TTS
    const getEnginesList = () => {
        let result = getEngines();
        engineList.value = result;
    }
</script>

在Uniapp项目中使用


<template>
    <view>
        <view class="area">
            <textarea @input="iptHandle"
                style="width: 100%;border: 1px solid #ccc;padding: 15px;background-color: #f2f2f2;margin-bottom: 15px;" />
            <button type="default" @click="start">文本转语音播报</button>
            <button type="default" @click="stop">播报暂停</button>
            <button type="default" @click="getEnginesList">获取手机播报引擎</button>
        </view>
        <view class="eng-list" style="padding: 15px;">
            <view class="title">
                <text style="font-weight: bold;font-size: 20px;">引擎列表:</text>
            </view>
            <view v-for="(i,k) in engineList" :key='k' class="item">
                {{i}}
            </view>
        </view>
    </view>
</template>

<script setup>
    import { startSpeech, getEngines, stopSpeech, continueSpeech, pauseSpeech } from "@/uni_modules/xwq-tts-speaker";
    import { Option, Info } from "@/uni_modules/xwq-tts-speaker/utssdk/interface.uts";

    const iptVal = ref("");
    const engineList = ref([] as string[]);

    const iptHandle = (e : UniInputEvent) => {
        iptVal.value = e.detail.value;
    };

    //开始播报,在开始之前要先初始化TTS,成功后再开始
    const start = () => {
        startSpeech(
            {
                content: iptVal.value,
                enginesName: null, //自定义第三方TTS引擎,前提是手机上已安装
                // speechRate: 0.5,//播报速度,有些系统TTS不支持设置
                pitch: 0.4,//语调设置,默认1,越小越像男生
                fail: (val) => {
                    console.log(val);
                },
                finish: () => {
                    console.log('播报结束')
                }
            })
    };
    //停止播报
    const stop = () => {
        stopSpeech();
    };
    //获取引擎列表,没有默认系统TTS
    const getEnginesList = () => {
        let result = getEngines();
        engineList.value = result;
    }
</script>

在UniappX项目中使用(IOS示例)

<template>
    <view>
        <button type="default" @click="start">开始播报</button>
        <button type="default" @click="pause">暂停播报</button>
        <button type="default" @click="contine">继续播报</button>
        <button type="default" @click="stop">停止播报</button>
    </view>
</template>

<script setup>
    import { startSpeech,pauseSpeech,continueSpeech,stopSpeech, Option } from '@/uni_modules/xwq-tts-speaker';
    const start=()=>{
        startSpeech({
            content:"我家住在一个遥远的地方,美丽又安静!",//内容
            speechRate:0.5,//设置语速,范围 0.0~1.0
            pitch:0.9,// 音高,范围 0.5~2.0
            language:'zh-CN',//语言
            finish:()=>{
                console.log('播报结束')
            }
        }as Option)
    };

    const pause=()=>{
        pauseSpeech()
    };
    const contine=()=>{
        continueSpeech()
    };
    const stop=()=>{
        stopSpeech()
    };
</script>

隐私、权限声明

1. 本插件需要申请的系统权限列表:

<uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> <uses-permission android:name="android.permission.READ_PHONE_STATE"/> <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

使用中有什么不明白的地方,就向插件作者提问吧~ 我要提问