参考文档 | 包(下载) | GitHub 上的其他示例

在本快速入门中,你将创建并运行应用程序以实时识别语音并将其转录为文本。

若要改为异步听录音频文件,请参阅什么是批量听录。 如果不确定哪种语音转文本解决方案适合自己,请参阅什么是语音转文本?

先决条件

Azure 订阅。 可以免费创建一个帐户。 在 Azure 门户中创建语音资源。 获取语音资源密钥和区域。 部署语音资源后,选择“转到资源”以查看和管理密钥。

设置环境

适用于 Swift 的语音 SDK 目前以框架捆绑包的形式分发。 框架同时在 iOS 和 macOS 上支持 Objective-C 和 Swift。

可在 Xcode 项目中将语音 SDK 用作 CocoaPod,也可以直接下载并手动与其建立链接。 本指南使用 CocoaPod。 根据安装说明中所述,安装 CocoaPod 依赖项管理器。

设置环境变量。

需要对应用程序进行身份验证才能访问 Azure AI 服务。 对于生产环境,请使用安全方式来存储和访问凭据。 例如,获取语音资源的密钥后,请将其写入运行应用程序的本地计算机上的新环境变量。

重要 如果使用 API 密钥,请将其安全地存储在某个其他位置,例如 Azure Key Vault 中。 请不要直接在代码中包含 API 密钥,并且切勿公开发布该密钥。 有关 Azure AI 服务安全性的详细信息,请参阅对 Azure AI 服务的请求进行身份验证。

若要为语音资源密钥和区域设置环境变量,请打开控制台窗口,并按照操作系统和开发环境的说明进行操作。

SPEECH_KEYSPEECH_REGION setx SPEECH_KEY your-key setx SPEECH_REGION your-region setsetxexport SPEECH_KEY=your-key export SPEECH_REGION=your-region source ~/.bashrcexport SPEECH_KEY=your-key export SPEECH_REGION=your-region source ~/.bash_profileSPEECH_KEYSPEECH_REGIONwestus

识别来自麦克风的语音

按照以下步骤识别 macOS 应用程序中的语音。

helloworldpod installhelloworld.xcworkspacehelloworld.xcworkspaceapplicationDidFinishLaunchingrecognizeFromMicimport Cocoa @NSApplicationMain class AppDelegate: NSObject, NSApplicationDelegate { var label: NSTextField! var fromMicButton: NSButton! var sub: String! var region: String! @IBOutlet weak var window: NSWindow! func applicationDidFinishLaunching(_ aNotification: Notification) { print("loading") // load subscription information sub = ProcessInfo.processInfo.environment["SPEECH_KEY"] region = ProcessInfo.processInfo.environment["SPEECH_REGION"] label = NSTextField(frame: NSRect(x: 100, y: 50, width: 200, height: 200)) label.textColor = NSColor.black label.lineBreakMode = .byWordWrapping label.stringValue = "Recognition Result" label.isEditable = false self.window.contentView?.addSubview(label) fromMicButton = NSButton(frame: NSRect(x: 100, y: 300, width: 200, height: 30)) fromMicButton.title = "Recognize" fromMicButton.target = self fromMicButton.action = #selector(fromMicButtonClicked) self.window.contentView?.addSubview(fromMicButton) } @objc func fromMicButtonClicked() { DispatchQueue.global(qos: .userInitiated).async { self.recognizeFromMic() } } func recognizeFromMic() { var speechConfig: SPXSpeechConfiguration? do { try speechConfig = SPXSpeechConfiguration(subscription: sub, region: region) } catch { print("error \(error) happened") speechConfig = nil } speechConfig?.speechRecognitionLanguage = "en-US" let audioConfig = SPXAudioConfiguration() let reco = try! SPXSpeechRecognizer(speechConfiguration: speechConfig!, audioConfiguration: audioConfig) reco.addRecognizingEventHandler() {reco, evt in print("intermediate recognition result: \(evt.result.text ?? "(no result)")") self.updateLabel(text: evt.result.text, color: .gray) } updateLabel(text: "Listening ...", color: .gray) print("Listening...") let result = try! reco.recognizeOnce() print("recognition result: \(result.text ?? "(no result)"), reason: \(result.reason.rawValue)") updateLabel(text: result.text, color: .black) if result.reason != SPXResultReason.recognizedSpeech { let cancellationDetails = try! SPXCancellationDetails(fromCanceledRecognitionResult: result) print("cancelled: \(result.reason), \(cancellationDetails.errorDetails)") print("Did you set the speech resource key and region values?") updateLabel(text: "Error: \(cancellationDetails.errorDetails)", color: .red) } } func updateLabel(text: String?, color: NSColor) { DispatchQueue.main.async { self.label.stringValue = text! self.label.textColor = color } } } sub = ProcessInfo.processInfo.environment["SPEECH_KEY"] region = ProcessInfo.processInfo.environment["SPEECH_REGION"] en-USes-ESen-USSPEECH_KEYSPEECH_REGION

选择应用中按钮并讲几句话后,应会在屏幕下方看到你讲出的文本。 首次运行该应用时,系统应会提示你是否允许该应用访问计算机的麦克风。

注解

recognizeOnce

Objective-C

Objective-C 版语音 SDK 与 Swift 版语音 SDK 共享客户端库和参考文档。 有关 Objective-C 代码示例,请参阅 GitHub 中的在 macOS 上使用 Objective-C 识别来自麦克风的语音示例项目。

清理资源

可以使用 Azure 门户或 Azure 命令行接口 (CLI) 删除创建的语音资源。