语音交互服务 SIS
语音交互服务 SIS
- 最新动态
- 服务公告
- 产品介绍
- 快速入门
- 用户指南
- SDK参考
- API参考
-
常见问题
- 产品咨询类
- 计费类
-
API使用类
- 如何查看接口调用量
- 为什么WebSocket一直连接不成功
- 为什么会出现识别结果非常差的情况
- 如何使用Websocket调用实时语音识别
- 有哪些途径可以使用语音交互的API
- 返回状态正常,但识别结果为空
- Token消息体中user name,domain name和project name分别指的是什么
- 如何调整并发
- 为什么录音文件识别出现重复转写结果
- 调用语音交互的API显示auth failed
- 调用语音交互的API超时怎么处理(connect timeout)
- 为什么服务端返回OBS链接不可用(data url is unreachable)
- 语音合成的base64编码如何使用
- 录音文件识别多久可以返回结果
- 语音合成能不能支持返回立体音(双声道)格式的音频
- 如何解决“The silence time is too long, and the audio will not be recognized”报错
- Token怎么获取
- 如何申请公测
- 如何修改发音人
- 实时语音识别多人同时使用,如何区分各自识别结果
- 使用HTML5 Websocket API发送websocket请求如何携带token
- 如何查看实时语音识别的中间结果
- SDK使用类
- 错误码类
- 部署类
- 区域与可用区
- 权限类
- 服务声明类
- 文档下载
- 通用参考
链接复制成功!
一句话识别
前提条件
- 确保已经按照配置好iOS开发环境。
- 已经保存好1分钟内音频文件,建议使用16k16bit进行录音并保存为wav格式。
- 请参考SDK(websocket)获取最新版本SDK包。
初始化Client
初始化SASRClient,参数为AuthInfo,详见表1。
请求参数
请求类为SASRConfig和语音数据data,详见表2。
参数名称 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
config |
是 |
Config object |
配置信息。 |
data |
是 |
String |
本地音频文件经过Base64编码后的字符串,音频文件时长小于60s。 |
参数名称 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
audioFormat |
是 |
String |
音频格式,具体信息请参见《API参考》中一句话识别章节。 |
property |
是 |
String |
属性字符串,语言_采样率_模型,如chinese_16k_general。具体信息请参见《API参考》中一句话识别章节。 |
addPunc |
否 |
String |
表示是否在识别结果中添加标点,取值为yes 、 no,默认no。 |
digitNorm |
否 |
String |
表示是否将语音中的数字识别为阿拉伯数字,取值为yes 、 no,默认为yes。 |
vocabularyId |
否 |
String |
热词表id,不使用则不填写。 创建热词表请参考《API参考》中创建热词表章节。 |
响应参数
响应类为SASRResponse,详见表4。调用失败处理方法请参见错误码。
参数名 |
是否必选 |
参数类型 |
说明 |
---|---|---|---|
traceId |
是 |
String |
服务内部的令牌,可用于在日志中追溯具体流程,调用失败无此字段。 在某些错误情况下可能没有此令牌字符串。 |
result |
是 |
SASRResult |
调用成功表示识别结果,调用失败时无此字段。请参考表5。 |
代码示例
如下示例仅供参考,最新代码请前往SDK(websocket)章节获取并运行。
import SwiftUI import AVFoundation import SIS struct Config { static let region = "cn-north-4" static let projectId = "" } class HTTPClientDelegate: HTTPDelegate, ObservableObject { @Published var result = "" func onMessage(response: SASRResponse) { self.result = response.result.text } func onError(response: SASRErrorResponse) { self.result = response.errorMsg } } enum STATE { case IDLE case RECORDING } struct SASRView: View { @ObservedObject var delegate = HTTPClientDelegate() @State var client: SASRClient? @State var recordStatus = STATE.IDLE @State var recorder: AudioFileRecorder? var body: some View { VStack { Button("开始录音") { do { try AVAudioSession.sharedInstance().setCategory(.record) try AVAudioSession.sharedInstance().setActive(true) } catch { self.delegate.result = "初始化录音失败" return } //认证用的AK和SK硬编码在代码中或明文存储都有很大安全风险,建议在配置文件或环境变量中密文存放,使用时解密,确保安全。 //本示例以AK和SK保存在环境变量中来实现身份验证为例,运行本示例请先在本地环境中设置环境变量HUAWEICLOUD_SDK_AK和HUAWEICLOUD_SDK_SK。 let ak = ProcessInfo.processInfo.environment["HUAWEICLOUD_SDK_AK"]! let sk = ProcessInfo.processInfo.environment["HUAWEICLOUD_SDK_SK"]! let authInfo = AuthInfo(ak: ak, sk: sk, region: Config.region, projectId: Config.projectId) self.client = SASRClient(auth: authInfo) self.client!.delegate = self.delegate self.recorder = AudioFileRecorder() self.recorder?.start() self.delegate.result = "" self.recordStatus = .RECORDING } .buttonStyle(.borderedProminent) .disabled(self.recordStatus == .RECORDING) Button("停止录音") { self.recorder?.stop() let filePath = self.recorder?.filePath let binData = try! Data(contentsOf: URL(fileURLWithPath: filePath!)) let base64Data = binData.base64EncodedData() let strData = String(decoding: base64Data, as: UTF8.self) var config = SASRConfig() config.addPunc = "yes" config.digitNorm = "no" let sasrRequest = SASRRequest(config: config, data: strData) self.client!.transcribe(request: sasrRequest) self.recordStatus = .IDLE } .buttonStyle(.borderedProminent) .disabled(self.recordStatus == .IDLE) Text(delegate.result) } .padding() } } struct ContentView_Previews: PreviewProvider { static var previews: some View { SASRView() } }
父主题: iOS SDK