我们不需要更多的布局部分,因为我们的应用程序将只定义一页。

主页

主页面的实现在文件:src/pages/IndexPage.vue

这是我们将放置文本字段和保存按钮的主页。

对于此文件,我们只需从模板(\\\"创建发音评估应用程序(第 标签)中删除 Quasar 徽标,并修改脚本部分以使用 vueJS 3 组合 api,以便源看起来像以下文件:

我们现在将使用 Quasar 组件 QInput 添加文本字段

为此,我们将 q-input 组件添加到页面模板中:

您可以看到文本字段显示在屏幕中央,这是由于 Quasar flex 和 flex-center 类所致。这些类由 Quasar 定义:Flexbox。我们将通过将文本字段放置在屏幕顶部来解决此问题,我们还将利用它来设置组件的样式。

Quasar 甚至为我们提供了一个 Flex Playground 来进行实验并找到要放置的类。

正如你所看到的,我们在脚本部分定义了一个句子引用来存储用户输入的值。它通过 v-model 指令关联到 q-input 组件

我们将通过添加允许录制单词或句子发音的按钮来完成第一部分。为此,我们将简单地使用 Quasar 的 q 按钮组件并将其放置在文本字段之后。

请注意,我们添加了 q-mt-lg 类,通过在每个组件上方留出一些空间来稍微放松界面。关于间距可以参考Quasar文档。

应用程序将如下所示:

\\\"Create

接下来我们要做什么

因此,我们成功获得了应用程序的框架。

在后面的部分我们将了解如何获取音频,然后如何通过 SpeechSuper API 获取分数

结论

不要犹豫评论帖子!第 2 部分即将推出!

","image":"http://www.luping.net/uploads/20240828/172485325166cf2c030035a.png","datePublished":"2024-08-28T21:54:10+08:00","dateModified":"2024-08-28T21:54:10+08:00","author":{"@type":"Person","name":"luping.net","url":"https://www.luping.net/articlelist/0_1.html"}}
”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > 创建发音评估应用程序(第 1 部分)

创建发音评估应用程序(第 1 部分)

发布于2024-08-28
浏览:447

本教程的目的是创建一个应用程序来控制用户的发音。

要遵循它,您必须了解 javascript,更理想的是 Vue.js 3。

这个想法

我最近决定回到德语。我在使用这种语言时遇到的主要困难是正确发音。通常我会听一个例子,然后把自己重复的录音录下来,然后再听一遍。这是一个复杂的过程,我必须承认我的耳朵不太好。

基于这一观察,我想知道是否有一个应用程序或 API 可以告诉我我的德语单词或句子的发音是否正确!经过一些调查和重大发现后,我想编写自己的应用程序来解决我的问题。

我就是这样做的!

可用的API

经过一番研究,我找到了解决我问题的应用程序。但总的来说,发音验证通常只是付费应用程序(或与订阅一起使用的应用程序)的一项附加功能。然后我决定寻找 API。

以下是执行此操作的 API 列表:

  • Google Cloud 语音转文本 API
  • Microsoft Azure 语音服务
  • iSpeech 发音
  • 言语学
  • 演讲
  • 现在的艾莎
  • 语音超级

这些 API 是付费的,但通常允许您获得 2 周的测试和实验访问权限。

由于我想检查我的德语发音,所以我选择使用SpeechSuper API进行测试,因为它支持包括德语在内的多种语言。在本教程的后面部分,我们将尝试 Speechace API 来演示根据您的需求从一个 API 切换到另一个 API 是多么容易。

应用程序人体工程学的定义

目标是实现一个简单的应用程序,允许您输入单词、录制您的声音、将录音发送到 API 并显示您的分数。

应用程序如下所示:

Create a pronunciation assessment App (Part 1)

因此,我们将创建一个应用程序,该应用程序将显示一个允许输入单词或句子的文本字段。一个按钮将允许您收听它。
然后我们有一个按钮来录制我们的声音,这个按钮在录音模式下会改变风格。只需点击它即可停止并发送到API以获取发音分数。
获得分数后,它会显示为一个图块,其颜色代表我们的分数,从红色到绿色到橙色。

应用程序的初始化

理想的情况是能够将应用程序部署为 Web 应用程序,同时也能够部署为原生 Android 应用程序。因此我们将使用 Quasar。

类星体框架

Quasar 是一个开源 Vue.js 框架,用于使用单个代码库开发应用程序。它们可以部署在网络上(SPA、PWA、SSR)、作为移动应用程序(Android、iOS)或桌面应用程序(MacOs、Windows、Linux)。

准备

如果还不是这种情况,您需要安装 NodeJS。更好的是使用 volta,因为它允许您根据您的项目使用不同版本的 NodeJ。

我们将首先使用 Quasar 脚手架工具初始化我们的项目。

npm i -g @quasar/cli
npm init quasar

cli会问我们几个问题,选择以下选项:

选项列表
  • 使用 Quasar CLI 的应用程序
  • 项目文件夹:learn2speak
  • 类星体 v2
  • Javascript
  • Quasar 应用程序与 Vite
  • 软件包名称:learn2speak
  • 项目产品名称:学说话
  • 项目描述:评估你的发音
  • 作者:你自己
  • CSS 预处理器:具有 SCSS 语法的 Sass
  • 所需功能:
    • ESLint
    • axios
  • ESLint 预设:标准
  • 安装项目依赖项:是,使用 npm

命令执行后,您可以进入该目录并在本地为应用程序提供服务:

cd learn2speak
npm run dev

您的默认浏览器应打开以下地址的页面:http://localhost:9000

Create a pronunciation assessment App (Part 1)

修改建议的骨架以获得目标人体工程学

示例应用程序可用,我们将删除不需要的元素。为此,我们将在 VSCode 中打开源代码(您当然可以使用其他编辑器)

code .

布局修改

Quasar 为我们提供了布局的概念,以及后者中包含的页面的概念。页面和布局是通过路由器选择的。对于本教程,我们不需要了解这些概念,但您可以在这里学习它们:Quasar 布局

我们不需要抽屉,至少现在不需要,所以我们将从 src/layouts/MainLayout.vue 文件中删除它。为此,删除 ... 标记之间包含的

然后我们可以删除整个脚本部分并用以下代码替换它:

我们不需要更多的布局部分,因为我们的应用程序将只定义一页。

主页

主页面的实现在文件:src/pages/IndexPage.vue

这是我们将放置文本字段和保存按钮的主页。

对于此文件,我们只需从模板(创建发音评估应用程序(第 1 部分) 标签)中删除 Quasar 徽标,并修改脚本部分以使用 vueJS 3 组合 api,以便源看起来像以下文件:

我们现在将使用 Quasar 组件 QInput 添加文本字段

为此,我们将 q-input 组件添加到页面模板中:

您可以看到文本字段显示在屏幕中央,这是由于 Quasar flex 和 flex-center 类所致。这些类由 Quasar 定义:Flexbox。我们将通过将文本字段放置在屏幕顶部来解决此问题,我们还将利用它来设置组件的样式。

Quasar 甚至为我们提供了一个 Flex Playground 来进行实验并找到要放置的类。

正如你所看到的,我们在脚本部分定义了一个句子引用来存储用户输入的值。它通过 v-model 指令关联到 q-input 组件

我们将通过添加允许录制单词或句子发音的按钮来完成第一部分。为此,我们将简单地使用 Quasar 的 q 按钮组件并将其放置在文本字段之后。

请注意,我们添加了 q-mt-lg 类,通过在每个组件上方留出一些空间来稍微放松界面。关于间距可以参考Quasar文档。

应用程序将如下所示:

Create a pronunciation assessment App (Part 1)

接下来我们要做什么

因此,我们成功获得了应用程序的框架。

在后面的部分我们将了解如何获取音频,然后如何通过 SpeechSuper API 获取分数

  • 第 2 部分:获取音频
  • 第三部分:通过SpeechSuper API获取分数
  • 第 4 部分:打包应用程序

结论

不要犹豫评论帖子!第 2 部分即将推出!

版本声明 本文转载于:https://dev.to/jeromemare/create-a-pronunciation-assessment-app-part-1-dob?1如有侵犯,请联系[email protected]删除
最新教程 更多>
  • 这里是我如何在 jQuery Datatable 中实现基于游标的分页。
    这里是我如何在 jQuery Datatable 中实现基于游标的分页。
    在 Web 应用程序中处理大型数据集时,分页对于性能和用户体验至关重要。标准的基于偏移量的分页(通常与数据表一起使用)对于大型数据集可能效率低下。 基于游标的分页提供了一种性能更高的替代方案,特别是在处理实时更新或大量数据加载时。在本文中,我将引导您了解如何在 jQuery DataTable 中...
    编程 发布于2024-11-05
  • 为什么同步引擎可能是 Web 应用程序的未来
    为什么同步引擎可能是 Web 应用程序的未来
    在不断发展的 Web 应用程序世界中,效率、可扩展性和无缝实时体验至关重要。传统的 Web 架构严重依赖于客户端-服务器模型,这些模型可能难以满足现代对响应能力和同步的需求。这就是同步引擎发挥作用的地方,它为开发人员当今面临的许多挑战提供了一个有前途的解决方案。但同步引擎到底是什么?为什么它们可能是...
    编程 发布于2024-11-05
  • Python 计算机视觉简介(第 1 部分)
    Python 计算机视觉简介(第 1 部分)
    注意:在这篇文章中,我们将仅使用灰度图像以使其易于理解。 什么是图像? 图像可以被认为是值的矩阵,其中每个值代表像素的强度。图像格式主要分为三种类型: Binary:此格式的图像由值为 0(黑色)和 1(白色)的单个二维矩阵表示。这是最简单的图像表示形式。 Grey-Scale:在此...
    编程 发布于2024-11-05
  • 网站 HTML 代码
    网站 HTML 代码
    我一直在尝试建立一个与航空公司相关的网站。我只是想确认我是否可以使用人工智能生成代码来生成整个网站。 HTML 网站是否兼容博客,或者我应该使用 JavaScript?这是我用作演示的代码。 <!DOCTYPE html> <html lang="en">[](url) &l...
    编程 发布于2024-11-05
  • 像程序员一样思考:学习 Java 基础知识
    像程序员一样思考:学习 Java 基础知识
    本文介绍了 Java 编程的基本概念和结构。它首先介绍了变量和数据类型,然后讨论了操作符和表达式,以及控制流流程。其次,它解释了方法和类,然后介绍了输入和输出操作。最后,本文通过一个工资计算器的实际示例展示了这些概念的应用。像程序员一样思考:掌握 Java 基础1. 变量和数据类型Java 使用变量...
    编程 发布于2024-11-05
  • PHP GD 可以比较两个图像的相似性吗?
    PHP GD 可以比较两个图像的相似性吗?
    PHP GD 可以确定两个图像的相似度吗?正在考虑的问题询问是否可以使用以下命令确定两个图像是否相同PHP GD 通过比较它们的差异。这需要获取两个图像之间的差异并确定它是否完全由白色(或任何统一的颜色)组成。根据提供的答案,散列函数(如其他响应所建议的那样)不适用于此语境。比较必须涉及图像内容而不...
    编程 发布于2024-11-05
  • 使用这些键编写高级测试(JavaScript 中的测试需求)
    使用这些键编写高级测试(JavaScript 中的测试需求)
    在本文中,您将学习每个高级开发人员都应该了解的 12 个测试最佳实践。您将看到 Kent Beck 的文章“Test Desiderata”的真实 JavaScript 示例,因为他的文章是用 Ruby 编写的。 这些属性旨在帮助您编写更好的测试。了解它们还可以帮助您在下一次工作面试中取得好成绩。 ...
    编程 发布于2024-11-05
  • 通过将 matlab/octave 算法移植到 C 来实现 AEC 的最佳解决方案
    通过将 matlab/octave 算法移植到 C 来实现 AEC 的最佳解决方案
    完毕!对自己有点印象。 我们的产品需要回声消除功能,确定了三种可能的技术方案, 1)利用MCU检测audio out和audio in的音频信号,编写算法计算两侧声音信号的强度,根据audio out和audio in的强弱在两个通道之间进行可选的切换,实现半双工通话效果,但现在市场上都是全双工通话...
    编程 发布于2024-11-05
  • 逐步构建网页:探索 HTML 中的结构和元素
    逐步构建网页:探索 HTML 中的结构和元素
    ?今天标志着我软件开发之旅的关键一步! ?我编写了第一行代码,深入研究了 HTML 的本质。涵盖的元素和标签。昨天,我探索了构建网站的拳击技术,今天我通过创建页眉、页脚和内容区域等部分将其付诸实践。我还添加了各种 HTML 元素,包括图像元素和链接元素,甚至尝试在单页网站上进行内部链接。看到这些部分...
    编程 发布于2024-11-05
  • 项目创意不一定是独特的:原因如下
    项目创意不一定是独特的:原因如下
    在创新领域,存在一个常见的误解,即项目创意需要具有开创性或完全独特才有价值。然而,事实并非如此。我们今天使用的许多成功产品与其竞争对手共享一组核心功能。让他们与众不同的不一定是想法,而是他们如何执行它、适应用户需求以及在关键领域进行创新。 通讯应用案例:相似但不同 让我们考虑一下 M...
    编程 发布于2024-11-05
  • HackTheBox - Writeup 社论 [已退休]
    HackTheBox - Writeup 社论 [已退休]
    Neste writeup iremos explorar uma máquina easy linux chamada Editorial. Esta máquina explora as seguintes vulnerabilidades e técnicas de exploração: S...
    编程 发布于2024-11-05
  • 强大的 JavaScript 技术可提升您的编码技能
    强大的 JavaScript 技术可提升您的编码技能
    JavaScript is constantly evolving, and mastering the language is key to writing cleaner and more efficient code. ?✨ Whether you’re just getting starte...
    编程 发布于2024-11-05
  • 如何在 ReactJS 中创建可重用的 Button 组件
    如何在 ReactJS 中创建可重用的 Button 组件
    按钮无疑是任何 React 应用程序中重要的 UI 组件,按钮可能用于提交表单或打开新页面等场景。您可以在 React.js 中构建可重用的按钮组件,您可以在应用程序的不同部分中使用它们。因此,维护您的应用程序将变得更加简单,并且您的代码将保持 DRY(不要重复自己)。 您必须首先在组件文件夹中创建...
    编程 发布于2024-11-05
  • 如何在 Apache HttpClient 4 中实现抢占式基本身份验证?
    如何在 Apache HttpClient 4 中实现抢占式基本身份验证?
    使用 Apache HttpClient 4 简化抢占式基本身份验证虽然 Apache HttpClient 4 已经取代了早期版本中的抢占式身份验证方法,但它提供了替代方法以实现相同的功能。对于寻求直接抢占式基本身份验证方法的开发人员,本文探讨了一种简化方法。为了避免向每个请求手动添加 Basic...
    编程 发布于2024-11-05
  • 异常处理
    异常处理
    异常是运行时发生的错误。 Java 中的异常处理子系统允许您以结构化和受控的方式处理错误。 Java为异常处理提供了易于使用且灵活的支持。 主要优点是错误处理代码的自动化,以前必须手动完成。 在旧语言中,需要手动检查方法返回的错误码,既繁琐又容易出错。 异常处理通过在发生错误时自动执行代码块(异常...
    编程 发布于2024-11-05

免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

Copyright© 2022 湘ICP备2022001581号-3