william-weng/wwmlwhisper
- [Speech-to-text: STT (using whisper.cpp)](https://github.com/ggml-org/whisper.cpp)
[Introduction - 簡介](https://swiftpackageindex.com/William-Weng)
https://github.com/user-attachments/assets/4711890f-c1f4-4d87-b0ef-a3754d6f2e5c
[Installation with Swift Package Manager](https://medium.com/彼得潘的-swift-ios-app-開發問題解答集/使用-spm-安裝第三方套件-xcode-11-新功能-2c4ffcf85b4b)
dependencies: [
.package(url: "https://github.com/William-Weng/WWMLWhisper.git", .upToNextMajor(from: "1.1.3"))
]可用函式 (closure)
|函式|說明| |-|-| |loadModel(_:for:useGPU:useFlashAttention:progress:completion:)|載入模型| |transcribe(with:wave:result:)|把分析的結果抄寫下來| |transcription()|將分析的結果轉寫成文字|
可用函式 (await / async)
|函式|說明| |-|-| |loadModel(_:for:useGPU:useFlashAttention:)|載入模型| |transcribe(with:wave:)|把分析的結果抄寫下來|
Example
import UIKit
import AVFoundation
import WWMLWhisper
final class ViewController: UIViewController {
private var audioPlayer: AVAudioPlayer?
@IBOutlet weak var messageLabel: UILabel!
@IBAction func loadModel(_ sender: UIBarButtonItem) {
Task {
for try await result in await WWMLWhisper.shared.loadModel(.tiny(.default)) {
switch result {
case .error(let error): self.messageLabel.text = "\(error)"
case .progress(let progress): print(progress)
case .finished(let url): self.messageLabel.text = "\(url)"
}
}
}
}
@IBAction func playSound() {
guard let url = Bundle.main.url(forResource: "jfk", withExtension: "wav") else { return }
do {
try AVAudioSession.sharedInstance().setCategory(.playback, mode: .default)
try AVAudioSession.sharedInstance().setActive(true)
audioPlayer = try AVAudioPlayer(contentsOf: url)
audioPlayer?.play()
} catch let error {
messageLabel.text = "\(error)"
}
}
@IBAction func whiper(_ sender: UIBarButtonItem) {
guard let waveURL = Bundle.main.url(forResource: "jfk", withExtension: "wav"),
let data = try? Data(contentsOf: waveURL)
else {
return
}
Task {
do {
try await WWMLWhisper.shared.transcribe(wave: (data, ._16bits))
let message = try await WWMLWhisper.shared.transcription().get()
messageLabel.text = message
} catch {
messageLabel.text = "\(error)"
}
}
}
}Package Metadata
Repository: william-weng/wwmlwhisper
Default branch: main
README: README.md