avatar
文章
268
标签
109
分类
39

首页
分类
归档
反馈
叶落花开的博客
搜索
首页
分类
归档
反馈
ios+swift集成sherpa-onnx实现高质量的文本朗读
发表于2025-04-06|客户端开发文本朗读

要使用 sherpa-onnx 存储库在 iOS 上结合 Swift 实现文本朗读(Text-to-Speech, TTS),需要完成以下步骤。sherpa-onnx 是一个基于 ONNX Runtime 的开源项目,支持离线语音识别和语音合成,适用于多种平台,包括 iOS。以下是具体实现指南:


1. 准备工作

(1) 环境要求

  • Xcode: 确保已安装最新版本的 Xcode(推荐 15.x 或更高)。
  • CMake: 用于构建 sherpa-onnx,需要安装 CMake(可以通过 Homebrew 安装:brew install cmake)。
  • iOS 设备或模拟器: iOS 版本建议 12.0 或更高。
  • 预训练模型: 需要下载适用于 TTS 的 ONNX 模型,例如 VITS 模型。

(2) 下载 sherpa-onnx 源码

从 GitHub 克隆存储库:

git clone https://github.com/k2-fsa/sherpa-onnx.git
cd sherpa-onnx

(3) 下载预训练 TTS 模型

访问 sherpa-onnx 预训练模型页面,选择一个支持你所需语言的 TTS 模型。例如:

  • 下载并解压 VITS 模型(比如vits-zh-aishell3.tar.bz2):
    tar xvf vits-zh-aishell3.tar.bz2
    这是一个支持中文的模型,解压后会得到 model.onnx 和 tokens.txt 等文件。

2. 构建 sherpa-onnx for iOS

sherpa-onnx 提供了一个脚本 build-ios.sh 来为 iOS 编译静态库。你需要运行这个脚本生成适用于 iOS 的库文件。

阅读全文
k8s里flannel启动报错:memory.memsw.limit_in_bytes: no such file or directory: unknown
发表于2025-02-26|服务端开发容器技术

k8s的flannel启动报错,查看日志:

kubectl describe pod kube-flannel-ds-v9j5t -n kube-flannel

Normal Pulled 39m (x4 over 40m) kubelet Container image "docker.io/rancher/mirrored-flannelcni-flannel:v0.20.2" already present on machine
Normal Created 39m (x4 over 40m) kubelet Created container kube-flannel
Warning Failed 39m (x4 over 40m) kubelet Error: failed to create containerd task: failed to create shim task: OCI runtime create failed: runc create failed: unable to start container process: error during container init: error setting cgroup config for procHooks process: open /sys/fs/cgroup/memory/kubepods.slice/kubepods-burstable.slice/kubepods-burstable-podfe68f366_ef34_4535_9366_51041b92f3bf.slice/cri-containerd-kube-flannel.scope/memory.memsw.limit_in_bytes: no such file or directory: unknown
Warning BackOff 40s (x186 over 40m) kubelet Back-off restarting failed container

我们还不知道确切的原因,但它目前发生在 containerd.io 版本:1.6.13 中。

$ containerd --version
containerd containerd.io 1.6.13 78f51771157abb6c9ed224c22013cdf09962315d

解决方法是从版本 1.6.13 重新安装到版本 1.6.12-1。

阅读全文
Mac安装完mysql命令不可用解决方案
发表于2025-02-21|服务端开发数据库

1.在.zshrc以及.bash_profile文件下添加如下内容:

export PATH="${PATH}:/usr/local/mysql/bin"

2.分别执行以下命令

source ~/.zshrc
source ~/.bash_profile

阅读全文
Okhttp3 java.lang.NoSuchFieldError: Companion
发表于2025-02-17|服务端开发Java

使用腾讯的tencentcloud-sdk-java时,启动程序报错:java.lang.NoSuchFieldError: Companion。

报错原因

com.squareup.okio包版本不兼容okhttp3版本

引发这个问题的原因可能和其他SDK包引用冲突

解决办法

1、和冲突的包换个位置,用高版本的okio包即可
2、或者添加依赖冲突的sdk的时候排除指定包即可

如何找到冲突的包

1、使用mvn dependency:tree命令查看Maven项目中的jar包依赖关系

阅读全文
Swift-RealmSwift中实现多表联合查询(二)
发表于2025-02-16|客户端开发Swift开发

swift里的Realm对象,如何实现多表联合查询(使用RealmSwift),以实现类似于mysql的 select a.* from a,b where a.id=b.id and b.name=? 呢?

一.A 和 B 没有关系

如果 A 和 B 之间没有直接的关系,可以通过手动查询和过滤来实现联合查询。

数据模型

import RealmSwift

class A: Object {
@Persisted var id: Int
@Persisted var name: String
// 其他字段...
}

class B: Object {
@Persisted var id: Int
@Persisted var name: String
// 其他字段...
}

查询实现

let realm = try! Realm()

// 目标 name
let targetName = "someName"

// 1. 查询 B 中符合条件的 id
let bResults = realm.objects(B.self).filter("name == %@", targetName)

// 2. 提取 B 中符合条件的 id 列表
let bIds = bResults.map { $0.id }

// 3. 查询 A 中 id 在 bIds 列表中的记录
let aResults = realm.objects(A.self).filter("id IN %@", bIds)

// 输出结果
for a in aResults {
print("A: \(a)")
}

二.A 和 B 是一对一关系

如果 A 和 B 是一对一关系,可以在 A 中定义一个 B 的引用,然后直接通过关系查询。

阅读全文
Swift开发-使用自带api朗读英语单词(美音或英音)
发表于2025-02-15|客户端开发Swift开发

在 Swift 开发中,iOS 系统提供了 AVFoundation 框架的 AVSpeechSynthesizer 类,可以通过设置 AVSpeechSynthesisVoice 的语音标识符(Voice Identifier)来选择美式英语(en-US)或英式英语(en-GB)发音。以下是具体实现方法:


1. 使用 AVSpeechSynthesizer 实现语音合成

通过 AVSpeechSynthesizer 可以将文本转换为语音,并通过 AVSpeechSynthesisVoice 指定发音类型:

import AVFoundation

let synthesizer = AVSpeechSynthesizer()

// 输入需要发音的单词
let word = "swift"

// 创建语音内容
let utterance = AVSpeechUtterance(string: word)

// 设置语音类型(美音或英音)
if let voice = AVSpeechSynthesisVoice(language: "en-US") { // 美音
utterance.voice = voice
} else if let voice = AVSpeechSynthesisVoice(language: "en-GB") { // 英音
utterance.voice = voice
}

// 播放发音
synthesizer.speak(utterance)
阅读全文
12…45
avatar
叶落花开
持续学习,记录后端技术、web技术,以及对认知、技术变现的思考。
文章
268
标签
109
分类
39
友情链接
  • 各大高校博士招生信息
  • 小新软件安装服务
分类
  • IT技术35
    • Anki19
    • Linux7
    • Mac1
    • Windows2
  • Web技术23
    • Electron2
    • Hexo搭建博客教程9
标签
Anki Apache Containerd Corba Docker Dockerd Electron English Git Hexo JNA JacORB Java Javascript Jmeter K8s Kubernetes Kuboard Linux Mac Maven MongoDB Moviepy Node Nodejs OpenAI PMD PV PVC Python Realm RealmSwift Selenium Service Simulator Spring SpringBoot SpringMVC Sqlite Statefuset
网站资讯
文章数目 :
268
最后更新时间 :
©2020 - 2025 By 叶落花开
框架 Hexo|主题 Butterfly
本地搜索
数据库加载中