# @dev-amirzubair/react-native-voice 中文文档

规范地址：https://npmcn.com/package/%40dev-amirzubair/react-native-voice/

版本：1\.0\.4
npm 元数据更新时间：2025-11-25T13:41:53.630Z
中文译文更新时间：2026-11-12T01:55:10.943Z
软件包许可：MIT

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40dev-amirzubair/react-native-voice
原文对照：https://npmcn.com/package/%40dev-amirzubair/react-native-voice/?lang=original
项目主页：https://github.com/dev-amirzubair/voice
源码仓库：https://github.com/dev-amirzubair/voice

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：271 kB，51 个文件
- 模块格式：CommonJS
- TypeScript 类型：包内自带
- 运行依赖：1 个
- peer 依赖：expo \>=48\.0\.0，react-native \>=0\.71\.0
- 首次发布：2025-11-25T09:57:07.155Z
- 最新版本发布：2025-11-25T13:41:53.438Z
- 近 30 天下载量：4328（2026-10-12 至 2026-11-10，npm 官方下载统计）
- 已发布版本数：5（近 12 个月 5 个）

## 中文简介

用于iOS和Android的回声原声库 - 有新架构,无桥模式和回声原声0.76+支持的分叉

## 安装

```sh
npm install @dev-amirzubair/react-native-voice
```

也可以使用：`pnpm add @dev-amirzubair/react-native-voice`、`yarn add @dev-amirzubair/react-native-voice`、`bun add @dev-amirzubair/react-native-voice`

## README

# 反应原声

[![npm](https://img.shields.io/npm/v/@dev-amirzubair/react-native-voice.svg?style=flat-square)](https://npmjs.com/package/@dev-amirzubair/react-native-voice)

语音对文本库 [原生反应](https://reactnative.dev/) 与 **新建建筑(Fabric/TurboModules)** 财务报告和审定财务报表 **无桥模式** 支助.

> **说明:** 这个图书馆是一个叉子 [@ react-native-voice/voice (英语)](https://github.com/react-native-voice/voice) 包含针对 React Industrial 0.76+ 和 New Architecture 的自定义修正. [在 GitHub 上查看来源](https://github.com/dev-amirzubair/voice)

## 有什么不同吗?

此分叉包括了与原始库相比的下列改进:

-   ✅ **新架构支持** - 与Fabric和TurboModules合作
-   ✅ **无桥模式** - 全力支持React Industrial无桥模式
-   ✅ **反应原生 0.76+** - 测试并使用最新的RN版本
-   ✅ **固定安卓事件** - 事件在新架构中适当到达 JavaScript
-   ✅ **固定 iOS 涡轮模块注册** - iOS的适当倒置处理
-   ✅ **改进了地方处理** - 更好地支持印巴地区语言
-   ✅ **清除类型脚本类型** - 更新类型定义

## 安装

```sh
yarn add @dev-amirzubair/react-native-voice

# or

npm install @dev-amirzubair/react-native-voice --save
```

### iOS 设置

```sh
cd ios && pod install
```

### Android 设置

不需要额外的设置 - 自动链接处理所有事务 .

## 使用量

```javascript
import Voice from '@dev-amirzubair/react-native-voice';

// Set up event handlers
Voice.onSpeechStart = () => console.log('Speech started');
Voice.onSpeechEnd = () => console.log('Speech ended');
Voice.onSpeechResults = (e) => console.log('Results:', e.value);
Voice.onSpeechPartialResults = (e) => console.log('Partial:', e.value);
Voice.onSpeechError = (e) => console.log('Error:', e.error);

// Start listening
await Voice.start('en-US');

// Stop listening
await Voice.stop();

// Clean up
await Voice.destroy();
```

### 完整示例

```javascript
import React, { useEffect, useState, useCallback } from 'react';
import { View, Text, Button } from 'react-native';
import Voice from '@dev-amirzubair/react-native-voice';

function SpeechToText() {
  const [results, setResults] = useState([]);
  const [isListening, setIsListening] = useState(false);

  useEffect(() => {
    Voice.onSpeechStart = () => setIsListening(true);
    Voice.onSpeechEnd = () => setIsListening(false);
    Voice.onSpeechResults = (e) => setResults(e.value ?? []);
    Voice.onSpeechError = (e) => console.error(e.error);

    return () => {
      Voice.destroy().then(Voice.removeAllListeners);
    };
  }, []);

  const startListening = async () => {
    try {
      await Voice.start('en-US');
    } catch (e) {
      console.error(e);
    }
  };

  const stopListening = async () => {
    try {
      await Voice.stop();
    } catch (e) {
      console.error(e);
    }
  };

  return (
    <View>
      <Text>{isListening ? '🎤 Listening...' : 'Press Start'}</Text>
      <Text>{results.join(' ')}</Text>
      <Button title="Start" onPress={startListening} />
      <Button title="Stop" onPress={stopListening} />
    </View>
  );
}
```

## API 密码

| 方法 | 说明 | 平台 |
| --- | --- | --- |
| `Voice.isAvailable()` | 检查是否有语音识别功能 | Android, iOS (英语) |
| `Voice.start(locale)` | 开始听演讲 | Android, iOS (英语) |
| `Voice.stop()` | 别听了 | Android, iOS (英语) |
| `Voice.cancel()` | 取消语音识别 | Android, iOS (英语) |
| `Voice.destroy()` | 摧毁识别器实例 | Android, iOS (英语) |
| `Voice.removeAllListeners()` | 删除全部事件听众 | Android, iOS (英语) |
| `Voice.isRecognizing()` | 检查当前是否识别 | Android, iOS (英语) |
| `Voice.getSpeechRecognitionServices()` | 获取可用的语音引擎 | 只有机器人 |

## 活动

| 活动 | 说明 | 数据 |
| --- | --- | --- |
| `onSpeechStart` | 开始语音识别 | `{ error: false }` |
| `onSpeechEnd` | 语音识别结束 | `{ error: false }` |
| `onSpeechResults` | 收到最后结果 | `{ value: ['recognized text'] }` |
| `onSpeechPartialResults` | 部分结果(活性) | `{ value: ['partial text'] }` |
| `onSpeechError` | 发生错误 | `{ error: { code, message } }` |
| `onSpeechVolumeChanged` | 音量/音量改变 | `{ value: number }` |
| `onSpeechRecognized` | 发言获得认可 | `{ isFinal: boolean }` |

## 权限

### 机器人

添加为 `AndroidManifest.xml`数字 :

```xml
<uses-permission android:name="android.permission.RECORD_AUDIO" />
```

库在开始识别时自动请求权限.

### iOS系统

添加为 `Info.plist`数字 :

```xml
<key>NSMicrophoneUsageDescription</key>
<string>This app needs microphone access for speech recognition</string>
<key>NSSpeechRecognitionUsageDescription</key>
<string>This app needs speech recognition access</string>
```

## 平台说明

### 机器人

-   用户停止发言后自动停止
-   要求 Google 搜索应用程序对大多数设备的语音识别
-   检查可用的服务 `Voice.getSpeechRecognitionServices()`

### iOS系统

-   不自动停止 - 呼叫 `Voice.stop()` 完成时
-   语音识别只在 **物理装置** (不是模拟器)
-   需要 iOS 10+ 软件

## 博览支持

此库需要自定义本地代码, 无法与 Expo Go 一同使用 。 使用一个 [发展](https://docs.expo.dev/develop/development-builds/introduction/) 或弹出.

添加到您的 `app.json`数字 :

```json
{
  "expo": {
    "plugins": ["@dev-amirzubair/react-native-voice"]
  }
}
```

## 解决问题

### Android: 找不到语音识别服务

安装 [Google 搜索应用程序](https://play.google.com/store/apps/details?id=com.google.android.googlequicksearchbox) 从游戏商店.

### iOS:不使用模拟器的语音识别

使用物理iOS设备——模拟器不支持语音识别.

### 未开火的事件

确保设置事件处理器 **在此之前** 电话 `Voice.start()`。 。 。 .

## 贷项

这个图书馆基于 [@ react-native-voice/voice (英语)](https://github.com/react-native-voice/voice) 由"回声原声"撰稿人出品. 特别感谢:

-   @wenkesj (原始内容存档于2013-10-12)
-   @ jamsch (英语)
-   所有原始贡献者

## 许可证

麻省理工学院

## 常见问题

### @dev-amirzubair/react-native-voice 是什么？

用于iOS和Android的回声原声库 - 有新架构,无桥模式和回声原声0\.76\+支持的分叉

### 如何安装 @dev-amirzubair/react-native-voice？

在项目目录运行 npm install @dev-amirzubair/react-native-voice，或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖：react-native（\>=0\.71\.0）。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖，Yarn 需要手动安装。

### @dev-amirzubair/react-native-voice 支持 TypeScript 吗？

支持。包内自带 TypeScript 类型声明（package\.json 声明了 types 入口），安装后即可获得类型提示，无需再安装 @types 包。

### @dev-amirzubair/react-native-voice 支持 ESM 还是 CommonJS？

以 CommonJS 形式发布，可以直接 require\(\)；在 ES Module 项目中也可以用 import 引入（Node\.js 会把 module\.exports 作为默认导出）。

### @dev-amirzubair/react-native-voice 可以商用吗？

@dev-amirzubair/react-native-voice 使用 MIT 许可。宽松许可：允许商业使用、修改和再分发，通常只需在分发时保留原版权与许可声明。以上为概括，不构成法律意见，请以许可原文为准。

### @dev-amirzubair/react-native-voice 的下载量有多少？

根据 npm 官方下载统计，@dev-amirzubair/react-native-voice 在 2026/10/12 – 2026/11/10 这 30 天内被下载 4,328 次，日均约 144 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入，适合横向比较热度，不能直接等同于使用人数。

### @dev-amirzubair/react-native-voice 还在维护吗？

最新版本 1\.0\.4 发布于 2025/11/25（11 个月前）；至今共发布 5 个版本，其中过去 12 个月发布了 5 个；首次发布于 2025/11/25。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

