2.5k 词
iOS端 ASR优化一、ASR(Automatic Speech Recognition)简介ASR是一种将语音信号转换为文本的技术,它可以帮助人们更方便地与计算机进行交互。我们的AI作业小节在录制过程中会同步调用ASR服务商实时将用户录制的语音转成为文字,在录制完成后根据ASR结果计算流畅度、语速评分,在上传作业的时候将ASR结果同时上传到服务端进行AI分析。 可见AI作业的流畅度维度评分、语速维度评分和AI分析报告中的关键词分析、口头禅分析、停顿分析都是建立在获得准确的ASR结果上的。所以构建一个准确可靠的语音识别服务是AI作业小节的基本要求,也是AI作业小节的分析准确度和用户满意度的关键。 二、ASR存在的问题2.1 热词/词库问题ASR服务需要手工校准一些生僻专业词语的发音或同音词识别,这也就意味着需要ASR服务商提供词库/热词功能,同时对不同的用户/企业甚至每一次ASR识别过程都可能需要不同的热词。 解决方案: 针对CN、CO、COM/TW/IO 这三个环境平台,调研支持热词的服务商并测试效果。CN 采用了阿里听悟,CO...
1.1k 词
ChatGPT使用技巧手册 目录 核心技巧 代码优化与重构 多语言处理 开发辅助 跨平台适配 扩展应用 核心技巧Prompt生成方法论 多Prompt生成 通过生成多个prompt迭代优化输出质量 示例流程:1# 生成初始Prompt → 评估结果 → 生成改进Prompt → 最终优化 角色扮演 作为超级语言解释器(处理复杂语义) 作为提示词训练器(生成领域专用Prompt) 格式规范 强制JSON/YAML结构化输出 表格化数据呈现 代码优化与重构10大即时代码重构技巧 优化方向 典型操作 适用场景 性能优化 算法复杂度分析 循环结构 兼容性 多语言语法适配 跨平台项目 可维护性 模块化拆分 大型工程 重构步骤示例: 使用最新库版本替换过时代码 将ArrayList改为ConcurrentHashMap(数据结构优化) 添加try-with-resources错误处理 多语言处理多语种翻译工作流关键注意事项: 使用 LANG_CODE作为字典key 保留原始文本占位符(如 {0}) 优先处理...
2.1k 词
本文整理了iOS开发者所需掌握的核心技能和学习路径,帮助开发者规划职业发展。 🌟 基础能力1. 编程语言 Swift 掌握语法基础(变量、控制流、函数、闭包) 深入理解 Optional、泛型、协议、async/await 学习 Swift Concurrency(Task、Actor、Sendable) Objective-C(可选) 理解与 Swift 的混编机制 阅读遗留代码库的兼容性 2. 开发工具 Xcode 熟练使用 Interface Builder、Storyboard/XIB 掌握 LLDB 调试、Instruments 性能分析 熟悉 Swift Package Manager(SPM)依赖管理 终端工具 基础 Shell 命令(xcodebuild、xcrun) Fastlane 自动化(构建、测试、发布) 🎨 UI/UX 开发1. 原生框架 UIKit Auto Layout 与自适应布局 核心组件(UITableView、UICollectionView) 自定义视图与动画(CALayer、UIViewPr...
1.5k 词
本文整理了常见的算法面试题目,包括数据结构、基础算法和高级算法等多个方面的典型题目。 📚 数据结构与基础算法1. 数组与链表 两数之和题目:在数组中找出和为 target 的两个元素的下标。考察点:哈希表、空间换时间优化:cite[3]:cite[7] 合并两个有序链表题目:将两个升序链表合并为一个新链表。考察点:指针操作、递归/迭代实现:cite[3]:cite[7] 反转链表题目:将单链表反转(迭代或递归实现)。考察点:指针操作、递归思维:cite[2]:cite[7] 2. 字符串 最长回文子串题目:找到字符串中的最长回文子串。考察点:中心扩散法、动态规划:cite[2]:cite[7] 第一个不重复的字符题目:找到字符串中第一个只出现一次的字符的下标。考察点:哈希表统计频率:cite[7] 版本号排序题目:将版本号数组按从大到小排序(如 ['10.2.1', '0.402.1'])。考察点:字符串分割、多级比较:cite[7] 3. 树与图 对称二叉树题目:判断二叉树是否镜像对称。考察点:递归遍历、层序遍历:cite[3...
1.4k 词
本文总结了iOS开发面试中的高频问题,涵盖语言基础、框架应用、性能优化等多个方面。 🎯 语言基础(Swift) 值类型 vs 引用类型 结构体/枚举与类的本质区别? 如何选择 struct 和 class 的使用场景? 协议与泛型 associatedtype 的作用是什么? 如何实现类型擦除(Type Erasure)? 内存管理 解释 weak、unowned、strong 的区别 如何检测和解决循环引用问题? Swift Concurrency async/await 与 Combine 框架的适用场景对比 Sendable 协议的作用与实现要求 🖥️ iOS 框架UIKit 生命周期 viewDidLoad 和 viewWillAppear 的区别 如何正确管理视图控制器的内存? 布局与渲染 Auto Layout 性能优化技巧 解释 drawRect 与 layoutSubviews 的调用时机 响应链与手势 描述 iOS 事件传递机制(Hit-Testing) 如何实现自定义手势识别器? SwiftUI 状...
iOS
2.6k 词
iOS签名机制概要背景在iOS开发中,配置证书总是一件繁琐的工作,网上的教程有很多,基本都是手把手的教操作,但是如果不了解为什么要配置这些东西,对配置流程就不会有深刻的印象。 配置证书最大的作用就是保证安全性,安全性主要表现在以下的几个方面: 1.保证苹果手机下载的App是从苹果官网认证的途径下载 2.保证App在苹果官方注册过的设备上运行 3.保证App在特定的设备中运行(开发需要) 技术支持苹果采用的是数字签名进行加密,它是基于非对称加密算法和摘要算法实现的,和对称加密算法不同的是**,**对称加密通过同一份密钥加密和解密数据,而非对称加密有两个密钥,分别是公钥和私钥,用公钥加密的数据,要用私钥才能解密;用私钥加密的数据,要用公钥才能解密。这里的非对称加密就是我们熟知的RSA,想要深入理解的童鞋可以自主了解。 为了更好的理解非对称加密的好处,我举一个场景例子:A要发送邮件给B,这个过程中要确保在传输中邮件内容没有被篡改,也就是只有B可以查看邮件的内容;还要确保这个邮件是A发送过来的,不是其他人发送的。我们用非对称加密的方式来处理:首先存A和B各有一对公私钥,A持有他自己的私钥...
iOS
25k 词
什么是SwiftUISwiftUI 于 2019 年度 WWDC 全球开发者大会上发布,它是基于 Swift 建立的声明式UI框架。 该框架可以用于 watchOS、tvOS、macOS、iOS 等平台的应用开发,等于说统一了苹果生态圈的开发工具。 SwiftUI provides views, controls, and layout structures for declaring your app’s user interface. The framework provides event handlers for delivering taps, gestures, and other types of input to your app, and tools to manage the flow of data from your app’s models down to the views and controls that users will see and interact with. SwiftUI Hello World创建新项目并预览画布 和平时创建...
iOS
6.7k 词
XCUITest iOS自动化UI测试框架XCUITest简介XCUITest是Apple提供的内嵌到xcode中的一套UI自动化测试框架。 UI测试依赖于两项核心技术:XCTest框架和Accessibility。 XCTest提供了UI测试功能的框架,与Xcode集成在一起。创建和使用UI测试扩展了您对使用XCTest和创建单元测试的了解。您创建了一个UI测试目标,并将创建UI测试类和UI测试方法作为项目的一部分。您可以使用XCTest断言来验证预期结果是否为真。你也可以通过Xcode Server和xcodebuild实现持续集成。XCTest与Objective-C和Swift完全兼容。 Accessibility是一项核心技术,它允许残疾用户获得与其他用户相同的iOS和macOS丰富体验。它包含了一组丰富的UI语义数据,用户可以使用它来指导他们使用你的应用。可访问性集成了UIKit和AppKit,并有api允许你调整行为和对外公开的使用。UI测试使用这些数据来执行其功能。 在源代码中创建UI测试类似于创建单元测试。你为你的应用创建一个UI测试目标;然后Xcode为你创...
iOS
7.7k 词
iOS 一键唤起APP方案参考移动端业务发展过程中,几乎每个公司都会有活动宣传或者运营引流的需求。这些需求的实现不外乎开发一些吸引人的HTML页面,在页面的某些事件的响应中引导用户下载APP或者打开已经下载的APP。 基本流程为: 策划运营投放活动链接(新用户送红包或者PDD砍一刀) 用户点击活动链接进入活动页面 用户被吸引或诱导点击某个按钮触发事件 H5页面调起相关APP APP响应调起并接力打开对应页面 我们这里主要说一说4、5两步其中的细节处理,也是对最近相关的业务的一个总结。 DeepLink技术在iOS9之前只有通过URL Scheme能够唤起一个APP。 Scheme可以理解为一个APP的名字,因为是URL Scheme所以遵循URL的书写格式,类比于http://www.baidu.com,其中http就是它的Scheme。 每个APP可以设置自己的Scheme,即给自己起个名字,方便”别人“叫我的时候我可以听得懂。 例如我们起了个Scheme叫kr,那么在H5页面内可以通过 openURL()的方式打开 kr://testPage链接调起我们的APP...
iOS
11k 词
如何做一个九宫格GIF播放器需求背景APP V9.4.0版本上线了类似朋友圈的动态,包含文字及最多9张图片。 动态2期内容中九宫格图片内追加了GIF格式的图片,并要求多张GIF图片在九宫格内循环播放,且优先播放信息流内第一个动态中包含的GIF图片。可参考微博信息流内GIF组的播放表现。 技术实现GIF播放GIF图是包含若干帧图片的图片组,由于阿里云存储或者其他存储容器中的文件特征,许多图片路径并不带.gif或.GIF的后缀,所以不能仅通过比对文件名来识别GIF图。而通过二进制数据中来标记其文件类型的固定的位特征来区分较为准确。 目前我们项目中集成了优秀的开源网络图片框架 'Kingfisher',其中包含的 AnimatedImageView类能有效识别GIF文件类型和实现精细的播放控制,且使用方便,仅需要给图片view设置网络图片的URL。 图片对齐方式需求中同时需要支持图片设置顶部对齐裁剪和左部对齐裁剪,1期项目中 KrShortContentImageView类已使用 UIImageViewAlignmentMask来实现此需求。 UIImageViewAl...