- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我用的是Huawei ML Kit做机内翻译,下载模型总是报Exception。我正在关注 Huawei Doc On-device Translation .我已经尝试了以下代码,但我仍然不断收到异常。
plugins {
id 'com.android.application'
id 'kotlin-android'
id 'com.huawei.agconnect'
id 'kotlin-kapt'
}
android {
compileSdk 30
defaultConfig {
applicationId "com.example.huaweitestads"
minSdk 21
targetSdk 29
versionCode 1
versionName "1.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
kotlinOptions {
jvmTarget = '1.8'
}
buildFeatures {
dataBinding true
}
}
dependencies {
implementation 'androidx.core:core-ktx:1.6.0'
implementation 'androidx.appcompat:appcompat:1.3.1'
implementation 'com.google.android.material:material:1.4.0'
implementation 'androidx.constraintlayout:constraintlayout:2.1.0'
testImplementation 'junit:junit:4.13.2'
androidTestImplementation 'androidx.test.ext:junit:1.1.3'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
kapt "com.android.databinding:compiler:3.5.0"
//Huawei Dependency
implementation 'com.huawei.agconnect:agconnect-core:1.5.2.300'
implementation 'com.huawei.hms:ads-lite:13.4.45.308'
implementation 'com.huawei.hms:ads:3.4.45.308'
implementation 'com.huawei.hms:ads-identifier:3.4.39.302'
implementation 'com.huawei.hms:ads-installreferrer:3.4.39.302'
implementation 'com.huawei.hms:ml-computer-voice-asr-plugin:1.0.4.300'
implementation 'com.huawei.hms:ml-computer-translate:3.0.0.300'
implementation 'com.huawei.hms:ml-computer-translate-model:3.0.0.300'
//implementation 'com.huawei.hms:ml-computer-voice-asr:2.2.0.300'
}
class MainActivity : AppCompatActivity() {
private val permissionsRequestCode = 123
private lateinit var managePermissions: ManagePermissions
private lateinit var binding: ActivityMainBinding
private lateinit var buttonClick: Button
private var interestitialAd: InterstitialAd? = null
private lateinit var sharedPreferences: SharedPreferences
val REQUEST_CODE_ASR : Int = 100
var dialogBinding: LayCustomDialogBinding? = null
var customDialog: AlertDialog? = null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivityMainBinding.inflate(layoutInflater)
val view = binding.root
setContentView(view)
dialogBinding = DataBindingUtil.inflate(
LayoutInflater.from(this),
R.layout.lay_custom_dialog,
null,
false
)
customDialog = AlertDialog.Builder(this,0).create()
customDialog?.apply {
window?.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT))
setView(dialogBinding?.root)
setCancelable(false)
}
//initialize the Huawei Ads
HwAds.init(this)
MLApplication.getInstance().apiKey = "App Key"
val list = listOf(
Manifest.permission.READ_EXTERNAL_STORAGE,
Manifest.permission.RECORD_AUDIO,
Manifest.permission.WRITE_EXTERNAL_STORAGE
)
sharedPreferences = getSharedPreferences(getString(R.string.pref_file_name), Context.MODE_PRIVATE)
managePermissions = ManagePermissions(this, list, permissionsRequestCode, sharedPreferences)
buttonClick = findViewById(R.id.btn_click)
interestitialAd = InterstitialAd(this)
interestitialAd!!.adId = "testb4znbuh3n2"
createSharedPrefFile()
binding.btnClick.setOnClickListener {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
val checkerDialog = managePermissions.checkPermissions()
if (!checkerDialog) {
showDialogForListening()
}
}
}
}
private fun showDialogForListening() {
val intent = Intent(this, MLAsrCaptureActivity::class.java)
.putExtra(MLAsrCaptureConstants.LANGUAGE, "en-US")
.putExtra(MLAsrCaptureConstants.FEATURE, MLAsrCaptureConstants.FEATURE_WORDFLUX)
startActivityForResult(intent, REQUEST_CODE_ASR)
}
override protected fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
var text = ""
// REQUEST_CODE_ASR: request code between the current activity and speech pickup UI activity defined in step 3.
if (requestCode == REQUEST_CODE_ASR) {
when (resultCode) {
MLAsrCaptureConstants.ASR_SUCCESS -> if (data != null) {
val bundle = data.extras
// Obtain the text information recognized from speech.
if (bundle!!.containsKey(MLAsrCaptureConstants.ASR_RESULT)) {
text = bundle.getString(MLAsrCaptureConstants.ASR_RESULT).toString()
// Process the recognized text information.
if(text.isNotEmpty()){
binding.tvInput.text = text
TranslateLocally(text)
}else{
Toast.makeText(this, "Text Couldn't Recognize. Please try again", Toast.LENGTH_SHORT).show()
}
}
}
// Processing logic for recognition failure.
MLAsrCaptureConstants.ASR_FAILURE ->
if (data != null) {
val bundle = data.extras
// Check whether a result code is contained.
if (bundle!!.containsKey(MLAsrCaptureConstants.ASR_ERROR_CODE)) {
val errorCode = bundle.getInt(MLAsrCaptureConstants.ASR_ERROR_CODE)
// Perform troubleshooting based on the result code.
}
// Check whether error information is contained.
if (bundle.containsKey(MLAsrCaptureConstants.ASR_ERROR_MESSAGE)) {
val errorMsg = bundle.getString(MLAsrCaptureConstants.ASR_ERROR_MESSAGE)
// Perform troubleshooting based on the error information.
}
// Check whether a sub-result code is contained.
if (bundle.containsKey(MLAsrCaptureConstants.ASR_SUB_ERROR_CODE)) {
val subErrorCode = bundle.getInt(MLAsrCaptureConstants.ASR_SUB_ERROR_CODE)
// Process the sub-result code.
}
}
else -> {
}
}
}
}
private fun TranslateLocally(input: String){
val setting = MLLocalTranslateSetting.Factory()
.setSourceLangCode("zh")
.setTargetLangCode("en")
.create()
val mlLocalTranslator = MLTranslatorFactory.getInstance().getLocalTranslator(setting)
MLTranslateLanguage.getLocalAllLanguages().addOnSuccessListener{
for (item in it)
Log.d("SupportedLang", "TranslationBeginWithInternet: $item")
}
obtainModel()
}
private fun obtainModel() {
val manager = MLLocalModelManager.getInstance()
val sourceLangCode = "en"
val model = MLLocalTranslatorModel.Factory(sourceLangCode).create()
val downloadStrategy = MLModelDownloadStrategy.Factory()
.needWifi()
.create()
customDialog?.show()
val downloadProgressListener = MLModelDownloadListener{ alreadyDownLength, totalLength ->
runOnUiThread {
setProgressBar(alreadyDownLength,totalLength)
}
}
manager.downloadModel(model,downloadStrategy,downloadProgressListener).addOnSuccessListener{
Toast.makeText(this, "Downloading: $it", Toast.LENGTH_SHORT).show()
//customDialog?.dismiss()
}.addOnFailureListener{
// This is the line where I'm getting the error. How can I fix it?
// **//**Error is: The model doesn't Exist!****
Toast.makeText(this, "this is Error: $it", Toast.LENGTH_SHORT).show()
dialogBinding?.btnOk?.setOnClickListener{
customDialog?.dismiss()
}
}
}
private fun setProgressBar(alreadyDownlength: Long, totalLength: Long) {
dialogBinding?.customProgressBar?.setProgressWithAnimation(alreadyDownlength.toFloat())
dialogBinding?.customProgressBar?.setMax(totalLength.toInt())
}
}
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.huaweitestads">
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<application
android:name=".AdSampleApplication"
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/Theme.HuaweiTestAds"
android:usesCleartextTraffic="true">
<activity
android:name=".InterestitialActivity"
android:exported="true" />
<activity
android:name=".MainActivity"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<meta-data
android:name="com.huawei.hms.ml.DEPENDENCY"
android:value= "translate"/>
</application>
</manifest>
我已经在项目中添加了 agconnect 文件。远程翻译工作正常。
最佳答案
日志显示下载的翻译语言为en_en
,调用接口(interface)时找不到对应的接口(interface)。
所以你可以尝试改成下面的代码:
val sourceLangCode = "en"
到
val sourceLangCode = "zh"
关于android - 华为机器学习套件下载模型时出现异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69446014/
简介 在上一篇文章《机器学习:神经网络构建(上)》中讨论了线性层、激活函数以及损失函数层的构建方式,本节中将进一步讨论网络构建方式,并完整的搭建一个简单的分类器网络。 目录 网络Netwo
简介 在本篇文章中,我们采用逻辑回归作为案例,探索神经网络的构建方式。文章详细阐述了神经网络中层结构的实现过程,并提供了线性层、激活函数以及损失函数的定义(实现方法)。 目录 背景介绍
简介 在前两篇文章中,我们详细探讨了如何利用采样数据来估计回归曲线。接下来,在本节中,我们将深入讨论如何处理分类问题。 章节安排 背景介绍 数学方法 程序实现 背景介绍 线
简介 在上一篇文章《机器学习:线性回归(上)》中讨论了二维数据下的线性回归及求解方法,本节中我们将进一步的将其推广至高维情形。 章节安排 背景介绍 最小二乘法 梯度下降法 程序
PyCaret是一个开源、低代码Python机器学习库,能够自动化机器学习工作流程。它是一个端到端的机器学习和模型管理工具,极大地加快了实验周期,提高了工作效率。PyCaret本质上是围绕几个机器学习
在我的研究进展中,我现在已经将寄生虫从图像中分离出来。寄生虫看起来像蠕虫。我希望 MATLAB 读取所有输入图像,查找类似深紫色图像的蠕虫,如果检测到,则给出检测到的答复。我尝试使用直方图比较,但我认
目前我正在尝试了解机器学习算法的工作方式,但我没有真正了解的一件事是预测标签的计算准确度与视觉混淆矩阵之间的明显差异。我会尽量解释清楚。 这是数据集的片段(这里你可以看到 9 个样本(在真实数据集中大
第一章 绪论 机器学习 : 致力于研究如何通过计算的手段,利用经验来改善系统自身的性能。在计算机系统中, “经验” 通常以“数据“形式存在,因此,机器学习所研究的主要内容,是关于在计算
1. 算法原理(K-Nearest Neighbor) 本质是通过距离判断两个样本是否相似,如果距离够近就认为他们足够相似属于同一类别 找到离其最近的 k 个样本,并将这些样本称
前言 K-means是一种经典的无监督学习算法,用于对数据进行聚类。K-means算法将数据集视为具有n个特征的n维空间,并尝试通过最小化簇内平方误差的总和来将数据点划分为簇。本文将介绍K-m
目录 前言 介绍LightGBM LightGBM的背景和起源 L
前言 可以说掌握了机器学习,你就具备了与机器对话,充分利用机器为人类服务的能力。在人工智能时代,这将成为一项必备技能,就好比十年前你是编程大牛,二十年前你英语超好一样。因此,无论你是什么专业的
几个贯穿始终的概念 当我们把人类学习简单事物的过程抽象为几个阶段,再将这些阶段通过不同的方法具体化为代码,依靠通过计算机的基础能力-- 计算 。我们就可以让机器能够“学会”一些简单的事物。
1、选题背景 人脸识别技术是模式识别和计算机视觉领域最富挑战性的研究课题之一,也是近年来的研究热点,人脸性别识别作为人脸识别技术
每当我们在公有云或者私有云发布训练好的大数据模型,为了方便大家辨识、理解和运用,参照huggingface所制定的标准制作一个Model Card展示页,是种非常好的模型展示和组织形式。 下面就是一
2. 支持向量机 对偶优化 拉格朗日乘数法可用于解决带条件优化问题,其基本形式为: \[\begin{gather} \min_w f(w),\\ \mathrm{s.t.} \quad
我正在尝试运行以下代码: https://github.com/opencv/opencv/blob/master/samples/dnn/classification.cpp 我在这里找到所有经过预
我是机器学习新手。当我使用 scikit-learn 模块中的波士顿数据集练习具有默认参数的决策树回归模型时。 在此链接解决方案( How to Build a Decision tree Regre
我有用于训练的数据。当我将其输入神经网络时,该数据出现 3% 的错误。 我知道这些数据有一定的过度代表性 - 例如,第 5 类的示例大约是其他类的十分之一。 我的作业指出,我可以通过偏置训练数据(即删
我在 Python 的多类分类中使用 SVM 时遇到问题。事实上,问题在于性别分类(来自图像),其中训练数据集仅包含“y=1”或“ y=-1”作为类标签(二进制)。但是,在预测中,如果是男性,我必须预
我是一名优秀的程序员,十分优秀!