搜索源码定位到打印日志位置:SharedMetadata#151
临时解决方案
借用AS 新版Logcat 过滤语法进行过滤即可,过滤语法如下
-tag:gralloc4
即排除掉tag为gralloc4的日志
搜索源码定位到打印日志位置:SharedMetadata#151
借用AS 新版Logcat 过滤语法进行过滤即可,过滤语法如下
-tag:gralloc4
即排除掉tag为gralloc4的日志
说下应用场景,最近安卓要加载一些第三方网站进行用户的开放使用,这些第三方网站基本都是全英文的外国网站,于是产品需求希望能对网站进行中文翻译,类似pc浏览器的谷歌翻译网页
private void translateWeb() {
        String javaScript = "javascript:function appendScrip() {" +
                "var head= document.getElementsByTagName('head')[0]; var script= document.createElement('script'); script.src= 'https://res.zvo.cn/translate/translate.js'; head.appendChild(script);" +
                "}" +
                "appendScrip();";
        bwvContent.evaluateJavascript(javaScript, new ValueCallback() {
            @Override
            public void onReceiveValue(String s) {
                MyLogUtils.e("javaScript.onReceiveValue:" + s);
                bwvContent.postDelayed(new Runnable() {
                    @Override
                    public void run() {
                        if (bwvContent==null) {
                            return;
                        }
                        String javaScript2 = "javascript:function startTranslate() {" +
                                "translate.localLanguage='zh-CN';translate.selectLanguageTag.show = false;translate.executeByLocalLanguage();" +
                                "}" +
                                "startTranslate();";
                        bwvContent.evaluateJavascript(javaScript2, new ValueCallback() {
                            @Override
                            public void onReceiveValue(String s) {
                                MyLogUtils.e("javaScript2.onReceiveValue:" + s);
                            }
                        });
                    }
                }, 500);
            }
        });
    }
注意点
1.这里的bwvContent用的是腾讯的webview,在执行注入脚本的时候用的evaluateJavascript方法,原生webview如果没有的话用loadurl也可
2.第一段脚本注入和第二段脚本注入加了个500ms的延时操作,因为实测过程中,连续执行的情况下容易没能顺利进行翻译,所以加了个500ms加高成功率,可自行调试测试
3.该方法的注入,选择时机放在了onProgressChanged回调里,当加载进度progress==100时,进行延时1000ms后执行该方法做自动网页翻译,或者由用户手动点击翻译按钮的时候调用,时机的选择自行调试
使用的注入脚本的相关链接:网页多语言翻译 js v1.2,更新翻译接口 – OSCHINA – 中文开源技术交流社区
目录、后端和前端。在翻译前更新到最新版测试
/www/server/panel/BTPanel/languages/
/www/server/panel/BTPanel/static/vite/lang/
语言配置文件:/www/server/panel/BTPanel/languages/settings.json
测试7.0.10 官方已自带脚本翻译,只需把settings.json加入中文即可
{
    "default": "zh",
    "languages": [
        {
            "name": "zh",
            "google": "zh",
            "title": "\u7b80\u4f53\u4e2d\u6587",
            "cn": "\u7b80\u4f53\u4e2d\u6587"
        },
        {
            "name": "cht",
            "google": "zh-tw",
            "title": "\u7e41\u9ad4\u4e2d\u6587",
            "cn": "\u7e41\u9ad4\u4e2d\u6587"
        },
        {
            "name": "en",
            "google": "en",
            "title": "English",
            "cn": "\u82f1\u8bed"
        }     
    ]
}
	拉取
git -c http.proxy='http://127.0.0.1:7890' pull
推送
git -c http.proxy='http://127.0.0.1:7890' push
1.yum install opencv-python
2.把Python3的脚本改成Python2
python3脚本中用到了cv2,查了下需要安装opencv。
用pip3 install opencv-python安装下。
安装过程中报错少skbuild,用pip3 install scikit-build安装下。
安装过程中再次报错,提示cmake版本低,用yum install cmake3 更新下。
1.压缩包解压后中文乱码,可以把压缩包压缩成7z格式。
2.部署TP5(ThinkPHP5)项目时,需要将运行目录设置为/public。
3.TP5(ThinkPHP5)隐藏index.php入口文件,在伪静态里面选择thinkphp。
转载自:Windows7上安装pytorch1.11后报api-ms-win-core-path-l1-1-0.dll错误的解决方法
在Windows7上通过Anaconda安装PyTorch v1.11.0后,执行程序时报如下图所示错误:无法启动此程序,因为计算机中丢失api-ms-win-core-path-l1-1-0.dll。尝试重新安装该程序以解决此问题。
此Windows7上,之前已安装过PyTorch的v1.8.1,可正常执行程序。
搜索后发现Windows7本身确实没有api-ms-win-core-path-l1-1-0.dll这个库。从https://cn.dll-files.com/api-ms-win-core-path-l1-1-0.dll.html 下载此库,Verison为6.3.9600.16384,最新版本。
将此库放到C:\WINDOWS\System32目录下或D:\ProgramFiles\Anaconda3\envs\pytorch1.11.0目录下,错误会变成:应用程序无法正常启动(0xc000007b)。请单击”确定”关闭应用程序。如下图所示:出现“0xc000007b”错误,说明我们刚下载的是32位的dll,但是我们是64位的程序,因此也需要64位的dll。微软官方只提供了32位的dll。
在PyTorch v1.8.1中依赖Python的版本是3.7.11;在PyTorch v1.11.0中依赖的Python的版本是3.10.4。
根本原因是Python 3.9及以上版本已不适用于Windows7。workaround的解决方法如下:
从https://github.com/nalexandru/api-ms-win-core-path-HACK/releases 下载最新版本0.3.1,即api-ms-win-core-path-blender-0.3.1.zip,解压缩,将x64目录下的api-ms-win-core-path-l1-1-0.dll拷贝到D:\ProgramFiles\Anaconda3\envs\pytorch1.11.0目录下,再次执行以上程序显示正常,如下图所示:
GitHub: https://github.com/fengbingchun/PyTorch_Test
相关文章:
网络上通过禁止Windows update服务来禁止系统更新其实行不通,重启电脑后还是会自动更新,那有没有行之有效的办法呢?其实最有效的办法就是从源头阻止安装包下载。win系统的安装包统一下载在这个文件夹下,我们可以更改文件夹权限禁止文件的下载和读取,禁止完成后,电机文件夹显示无权限访问,返回系统更新,点击更新显示更新出错,这时就永久性的停机系统更新,如果想要更新可以使用电脑管家或者360删除文件夹,则可以继续更新。
这里我给大家介绍一种解决办法,此方法不存在不会对电脑运行产生影响
具体步骤如下:
1、输入地址 C:\Windows\SoftwareDistribution找到Download文件夹(此文件夹为系统更新安装包保存地址)
注:以下操作步骤无法成功部署,请使用官网教程。
转载自:一分钟素材、零成本、零配置搭建GPT-SoVITS最强声音克隆
GPT-SoVITS,他是由RVC创始人RVC-Boss与AI声音转换技术专家Rcell共同开发的一款跨语言TTS克隆项目,这个项目被称为“最强大中文声音克隆项目”,被众多大佬和知名博主争相推荐,自上线以来,他在github上的Stars数已达到8.6K。
之前做声音克隆,要么通过autodl线上租用GPU,要么就需要本地有GPU环境,gpt-sovits需要的配置相对低一些,基本上6G显存以上就能满足了,但bert-vites2就要4090卡,不然很容易就爆显存了。整体看下来,训练一次的价格在30元-50元人民币的范围,而且需要大量繁琐的配置,出错率极高。
本人也是踩过无数的坑(泪崩)导致训练效果特别糟糕。后来gpt-sovit推出了colab版本,而且很多配置都已经默认设置好了,这样大大就简化了搭建的经济和时间成本,比之前要节省10倍时间。想体验的小伙伴,就跟着我一起操作吧,非常easy
功能:
项目地址:https://github.com/KevinWang676
环境准备:
1.一台电脑;
2.一段1分钟音频;
这么简单?哈哈哈,就是这么简单,零成本,零配置。下面跟我一起点点点吧!
1.ViewPager2和父布局添加 android:clipChildren=”false” 属性
2.ViewPager2左右两侧增加Margin
3.ViewPager2的OffscreenPageLimit设置为大于等于1的值
binding.viewPager.setOffscreenPageLimit(1);
4.ViewPager2设置PageTransformer
binding.viewPager.setPageTransformer(new GalleryTransformer());
import android.view.View;
import androidx.viewpager2.widget.ViewPager2;
public class GalleryTransformer implements ViewPager2.PageTransformer {
    public static float MIN_ALPHA = 0.8f;
    public static float MIN_SCALE = 0.8f;
    @Override
    public void transformPage(View page, float position) {
        if (position < -1 || position > 1) {
            page.setAlpha(MIN_ALPHA);
            page.setScaleX(MIN_SCALE);
            page.setScaleY(MIN_SCALE);
        } else if (position <= 1) { // [-1,1]
            float scaleFactor = Math.max(MIN_SCALE, 1 - Math.abs(position));
            float scaleX;
            if (position < 0) {
                scaleX = 1 + 0.1f * position;
            } else {
                scaleX = 1 - 0.1f * position;
            }
            page.setScaleX(scaleX);
            page.setScaleY(scaleX);
            page.setAlpha(MIN_ALPHA + (scaleFactor - MIN_SCALE) / (1 - MIN_SCALE) * (1 - MIN_ALPHA));
        }
    }
}
参考资料: