马小力
马小力
  • 发布:2025-04-18 16:59
  • 更新:2025-04-18 17:00
  • 阅读:29

【报Bug】TextToSpeech 类型不匹配: 推断类型是`<no name provided>`,但预期的是(Int) -> Unit

分类:uni-app

产品分类: uniapp/App

PC开发环境操作系统: Windows

PC开发环境操作系统版本号: Windows 10 专业版

HBuilderX类型: 正式

HBuilderX版本号: 4.45

手机系统: Android

手机系统版本号: Android 12

手机厂商: 华为

手机机型: p50

页面类型: vue

vue版本: vue2

打包方式: 云端

项目创建方式: HBuilderX

示例代码:

// import { TSpeakInitParams, TSpeakResult } from "../interface.uts"  

import TextToSpeech from "android.speech.tts.TextToSpeech";  
import Locale from "java.util.Locale";  
import Context from "android.content.Context";  

import { TSpeakInitParams, TSpeakResult } from '../interface.uts'  

export class RockTtsSpeaker {  

    tts : TextToSpeech | null = null;  
    constructor() {  
        // this.tts = this.init({}, (e) => {  
        //  console.log(99999, 111)  
        // })  

    }  
    init(params : TSpeakInitParams, callback : (res : TSpeakResult) => void) : TextToSpeech {  
        const context = UTSAndroid.getUniActivity()!;  
        var speaker : TextToSpeech | null = null  
        speaker = TextToSpeech(context, TextToSpeech.OnInitListener({  
            onInit(status : UInt) {  

                if (status == TextToSpeech.SUCCESS as UInt) {  
                    // 设置语言为中文  
                    const result = speaker?.setLanguage(Locale.CHINA);  
                    if (result === TextToSpeech.LANG_MISSING_DATA || result === TextToSpeech.LANG_NOT_SUPPORTED) {  
                        callback({ success: status, message: 'TTS 不支持中文语音' });  
                    } else {  
                        callback({ success: status, message: '初始化成功' });  
                    }  
                    callback({ success: status, message: '初始化成功' });  
                } else {  
                    // callback({ success: Number.from(status), message: '初始化失败' });  
                    callback({ success: status, message: '初始化失败' });  
                }  
            }  
        }));  
        this.tts = speaker  
        return speaker  
    }  

}  

interface.uts

/* 同步函数定义 */  
export type MyApiSync = (paramA : boolean) => MyApiResult  

export type TSpeakResult = {  
    success : UInt  
    message : string  
}  

export type TSpeakInitParams = {  
    lang ?: 'ZH' | string  
    country ?: 'CN' | string  
    speechRate?:UInt  
}

操作步骤:

运行程序

预期结果:

可以正确编译插件

实际结果:

报错:
error: 类型不匹配: 推断类型是<no name provided>,但预期的是(Int) -> Unit。‌
16:50:41.032 at uni_modules/rock-tts/utssdk/app-android/RockTtsSpeaker.uts:22:62

bug描述:

自定义了uts插件,uni_moudles/utssdk/app-android 中,使用TextToSpeech进行文字语音播报,但是在创建TextToSpeech实例的代码段报错,无法正确编译插件
TextToSpeech 类型不匹配: 推断类型是<no name provided>,但预期的是(Int) -> Unit

2025-04-18 16:59 负责人:无 分享
已邀请:
马小力

马小力 (作者) - AI技术AI生活

test-tts.zip是代码包

要回复问题请先登录注册