aardio调用python库播放语音

redchina 13天前 172

import win.ui;
/*DSG{{*/
var winform = win.form(text="aardio form";right=759;bottom=469)
winform.add(
button={cls="button";text="Button";left=229;top=257;right=413;bottom=305;z=1};
edit={cls="edit";text="Edit";left=170;top=60;right=580;bottom=246;edge=1;multiline=1;z=2}
)
/*}}*/

//aardio 执行 Python 代码
import process.python; 
import console;
console.open();


var pyCode = /** 
try:
    import pyttsx3
    
    def init_engine():
        engine = pyttsx3.init()
        
        # 设置基本参数
        # 设置语速 (范围一般在100-300之间)
        engine.setProperty('rate', 150)
        # 设置音量 (范围为0.0-1.0)
        engine.setProperty('volume', 0.8)
        
        return engine
    
    def print_voice_info(engine):
        # 获取并打印当前设置
        rate = engine.getProperty('rate')
        volume = engine.getProperty('volume')
        print(f'当前语速:{rate}')
        print(f'当前音量:{volume}')
        
        # 查看可用声音
        voices = engine.getProperty('voices')
        for voice in voices:
            print(f'声音ID:{voice.id}')
            print(f'声音名称:{voice.name}')
            print(f'语言:{voice.languages}')
            print('---')
        
        return voices

    def main():
        engine = init_engine()
        voices = print_voice_info(engine)
        
        if voices:
            # 设置第一个可用的声音
            engine.setProperty('voice', voices[0].id)
            # 测试新设置
            engine.say("aardio 专用于 Windows 桌面软件开发aardio 是历经 20 年活跃更新的桌面软件开发工具,专用于 Windows 操作系统。因为放弃了跨平台的负担,aardio 大幅降低了桌面软件开发的复杂度,也因此可以专注发挥和利用 Windows 的特性和优势。没有跨平台负担所带来的回报是丰厚的。例如 aardio 的图形界面库就只用了少量纯 aardio 代码编写,而且很好用。甚至整个aardio 标准库基本都是用纯 aardio 代码编写的。")
            engine.runAndWait()
        else:
            print("未找到可用的声音")

    if __name__ == "__main__":
        main()
        
except ImportError:
    print("请先安装 pyttsx3 模块:pip install pyttsx3")
except Exception as e:
    print(f"发生错误:{str(e)}")
**/

winform.button.oncommand = function(id,event){
	try{
		var python = process.python.exec( pyCode );
		python.logResponse();
		
		//检查Python是否有错误输出
		if(python.stderr){
			win.msgbox(python.stderr,"错误信息");
			return; //有错误时直接返回
		}
	}
	catch(e){
		win.msgbox(e.message,"执行异常");
	}
}



winform.show();
win.loopMessage();


最新回复 (4)
  • 光庆 13天前
    0 2

  • 光庆 13天前
    0 3

    太难了

  • redchina 11天前
    0 4
    import win.ui;
    /*DSG{{*/
    var winform = win.form(text="aardio form";right=759;bottom=469)
    winform.add(
    button={cls="button";text="Button";left=229;top=257;right=413;bottom=305;z=1};
    edit={cls="edit";text="Edit";left=6;top=49;right=750;bottom=235;edge=1;multiline=1;z=2};
    edit2={cls="edit";text="Edit";left=60;top=334;right=548;bottom=434;edge=1;multiline=1;z=3}
    )
    /*}}*/
    
    //aardio 执行 Python 代码
    import process.python; 
    import console;
    console.open();
    
    var pyCode = /** 
    import sys
    
    def process_text(text):
        return text
    
    if __name__ == "__main__":
        text = sys.argv[1]  # 获取命令行参数
        result = process_text(text)
        print(result)  # 输出结果到标准输出
    try:
        import pyttsx3
        
        def init_engine():
            engine = pyttsx3.init()
            
            # 设置基本参数
            # 设置语速 (范围一般在100-300之间)
            engine.setProperty('rate', 150)
            # 设置音量 (范围为0.0-1.0)
            engine.setProperty('volume', 0.8)
            
            return engine
        
        def print_voice_info(engine):
            # 获取并打印当前设置
            rate = engine.getProperty('rate')
            volume = engine.getProperty('volume')
            #print(f'当前语速:{rate}')
            #print(f'当前音量:{volume}')
            
            #查看可用声音
            voices = engine.getProperty('voices')
            for voice in voices:
                print(f'声音ID:{voice.id}')
                #print(f'声音名称:{voice.name}')
                #print(f'语言:{voice.languages}')
                #print('---')
            
            return voices
           
        def main():
            engine = init_engine()
            voices = print_voice_info(engine)
            
            if voices:
                # 设置第一个可用的声音
                engine.setProperty('voice', voices[0].id)
                # 测试新设置
                engine.say("aardio 专用于 Windows 桌面软件开发aardio 是历经 20 年活跃更新的桌面软件开发工具,专用于 Windows 操作系统。因为放弃了跨平台的负担,aardio 大幅降低了桌面软件开发的复杂度,也因此可以专注发挥和利用 Windows 的特性和优势。没有跨平台负担所带来的回报是丰厚的。例如 aardio 的图形界面库就只用了少量纯 aardio 代码编写,而且很好用。甚至整个aardio 标准库基本都是用纯 aardio 代码编写的。")
                engine.runAndWait()
            else:
                print("未找到可用的声音")
        if __name__ == "__main__":
            main()
            
    except ImportError:
        print("请先安装 pyttsx3 模块:pip install pyttsx3")
    except Exception as e:
        print(f"发生错误:{str(e)}")
    **/
    winform.edit.text = "aardio 专用于 Windows 桌面软件开发,是历经 20 年活跃更新的桌面软件开发工具,专用于 Windows 操作系统";
    winform.button.oncommand = function(id,event){
        try{
            //获取编辑框文本并处理特殊字符
            var text = string.replace(winform.edit.text,'\"','\\"'); //转义双引号
            text = string.replace(text,'\r\n','\\n'); //处理换行符
           
            //执行Python代码
            var python = process.python.exec(pyCode,text);
            
            //输出Python的返回信息到控制台
            python.logResponse();
              // 读取 Python 进程的输出
        	//var result = python.engine.say(result);
            //winform.edit2.text = python.result;
           
            //检查Python是否有错误输出
            if(python.stderr){
                win.msgbox(python.stderr,"错误信息");
                return; 
            }
        }
        catch(e){
            win.msgbox(e.message,"执行异常");
        }
    }
    
    winform.show();
    win.loopMessage();


  • redchina 11天前
    0 5
    读取edit内容进行语音播报
返回