---
name: "startRecordTransfer"
mode: "kit"
versionRequirements:
  - { name: "WearKit", version: "1.0.0" }
  - { name: "@ray-js/ray", version: "1.7.14" }
platform:
  - "iOS"
  - "Android"
async: true
title: "wear.startRecordTransfer - 开始录音转写任务"
---

## startRecordTransfer

> [VERSION] WearKit >= 1.0.0 | @ray-js/ray >= 1.7.14

> [PLATFORM] iOS, Android

> ⚡ **支持 Promise 调用** — 不传 success / fail / complete 回调时，该方法返回 Promise。

### 描述

开始录音转写

### 参数

| 属性 | 类型 | 必填 | 默认值 | 最低版本 | 描述 |
| --- | --- | --- | --- | --- | --- |
| `deviceId` | `string` | 是 | - | `1.0.0` | 设备id |
| `config` | `StartRecordTransferConfig` | 是 | - | `1.0.0` | 配置 |
| `complete` | `() => void` | 否 | - | - | 接口调用结束的回调函数（调用成功、失败都会执行） |
| `success` | `() => void` | 否 | - | - | 接口调用成功的回调函数 |
| `fail` | `(params: Object) => void` ↓见下方 | 否 | - | - | 接口调用失败的回调函数 |

#### fail 回调参数

| 属性 | 类型 | 描述 |
| --- | --- | --- |
| `errorMsg` | `string` | 错误信息 |
| `errorCode` | `string \| number` | 错误码 |
| `innerError` | `Object` | 错误扩展 |

##### fail(params).innerError 的属性

| 属性 | 类型 | 描述 |
| --- | --- | --- |
| `errorCode` | `string \| number` | 错误扩展码 |
| `errorMsg` | `string` | 错误扩展信息 |


### 错误码

| 错误码 | 错误信息 |
| --- | --- |
| `10001` | 内部错误 |
| `10002` | 设备PID未关联Agent |
| `10021` | 超时 |
| `10041` | 操作错误 |
| `10042` | 已处于开始状态 |
| `10046` | 已在请求中 |
| `10047` | 设备已在录音中 |
| `10061` | 设备错误 |
| `10062` | 设备不支持录音控制dpCode |
| `10063` | DP值错误 |
| `10064` | 设备未全部连接 |
| `10071` | 音频格式错误 |
| `10073` | 音频引擎初始化失败 |
| `10081` | 需要付费 |
| `10082` | 蓝牙连接错误 |
| `10083` | 设备离线 |

### 引用对象

##### `interface` StartRecordTransferConfig

| 属性 | 类型 | 最低版本 | 描述 |
| --- | --- | --- | --- |
| `recordType` | `number` | `1.0.0` | 录音类型，0呼叫，1会议，2同声传译 3:f2f翻译 |
| `controlTimeout` | `number` | `1.0.0` | dp控制超时时间 单位秒 |
| `recordChannel` | `number` | `1.1.3` | 录音通道 0 ble(opus) 1 Bt 2 micro 默认是0 为了适配原有逻辑 |
| `f2fChannel` | `number` | `1.1.3` | 仅用于recordType == 3（面对面翻译确认数据来源方向） 0: default  1: left 2:right |
| `dataTimeout` | `number` | `1.0.0` | 灌流超时时间 单位秒 |
| `transferType` | `number` | `1.0.0` | 转写模式 0文件转写，1实时转写. 同声传译使用实时转写模式，设置为0并不起作用 |
| `needTranslate` | `boolean` | `1.0.0` | 是否需要翻译. 同声传译需要翻译，设置为false并不起作用 |
| `originalLanguage` | `string` | `1.0.0` | 会议或者电话模式，表示起始语言 同声传译模式，表示左耳语言 |
| `targetLanguage` | `string` | `1.0.0` | 会议或者电话模式，表示目标语言 同声传译模式，表示右耳语言 |
| `agentId` | `string` | `1.0.0` | 智能体id |
| `ttsEncode` | `number` | `1.1.7` | (废弃)TTS流编码方式，通过编码后将流写入到耳机设备 0: opus_silk  1:opus_celt |
| `ttsConfig` | `TtsConfig` | `1.4.0` | TTS配置(新增) |
| `needTts` | `boolean` | `1.1.7` | 是否需要TTS. true:需要  false:不需要 |
| `recordTransfer3Aconfig` | `RecordTransfer3AConfig` | `1.2.2` | 3A配置 |

##### `interface` TtsConfig

| 属性 | 类型 | 最低版本 | 描述 |
| --- | --- | --- | --- |
| `devId` | `string` | `1.4.0` | 设备id 如输出源为设备时，需下发设备ID；BT和MIC通道传空 |
| `ttsOutput` | `number` | `1.4.0` | TTS 输出源 0:默认配置，不开启TTS 1：系统MIC通道 2：系统BT通道 3：设备 |
| `ttsEncode` | `number` | `1.4.0` | TTS 编码方式 0：默认编码，当输出源为MIC和BLUETOOTH时使用该编码方式 1：opus_silk  输出源为Pro耳机，且接收的音频流为opus_silk时返回该编码方式 2：opus_celt 输出源为Pro耳机，且接收的音频流为opus_celt时返回该编码方式 |
| `ttsOutputChannel` | `number` | `1.4.0` | TTS 输出通道 0：默认输出通道，双耳同时输出 1：左耳输出 2：右耳输出 |

##### `interface` RecordTransfer3AConfig

| 属性 | 类型 | 最低版本 | 描述 |
| --- | --- | --- | --- |
| `rnAnsEnable` | `boolean` | `1.3.0` | 是否需要RN降噪 |
| `ansEnable` | `boolean` | `1.2.2` | 是否需要降噪 |
| `ansLevel` | `number` | `1.2.2` | 降噪等级 0:low，1:medium，2:high，3:very high |
| `agcEnable` | `boolean` | `1.2.2` | 是否需要增益 |
| `aecEnable` | `boolean` | `1.2.2` | 是否开启回声消除 |


### 示例代码

#### 基础用法

```tsx
import { wear } from '@ray-js/ray'

wear.startRecordTransfer({
  deviceId: 'dev',
  config: {
    recordType: 0,
    controlTimeout: 0,
    recordChannel: 0,
    f2fChannel: 0,
    dataTimeout: 0,
    transferType: 0,
    needTranslate: false,
    originalLanguage: 'zh',
    targetLanguage: 'en',
    needTts: false,
  },
  success: () => {
    console.log('startRecordTransfer success');
  },
  fail: error => {
    console.error(error);
  },
});
```

> 相关链接：[https://developer.tuya.com/](https://developer.tuya.com/)
