You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
fdp 8028fef51c 优化面对面翻译,加入降噪 1 year ago
..
android 优化面对面翻译,加入降噪 1 year ago
lib add 1 year ago
README.md add 1 year ago
pubspec.yaml add 1 year ago

README.md

Bytedance Speech Plugin

火山引擎语音识别和语音合成插件,为Flutter应用提供高质量的语音识别(ASR)和语音合成(TTS)能力。

功能特性

  • 语音识别(ASR)

    • 支持实时语音识别
    • 支持流式输入和流式识别两种模式
    • 支持中文普通话等多种语言
    • 支持标点符号自动添加
  • 语音合成(TTS)

    • 支持高质量语音合成
    • 支持多种音色选择
    • 支持多种音频格式输出
    • 支持使用大模型合成自然的语音

安装

将以下内容添加到您的pubspec.yaml文件中:

dependencies:
  bytedance_speech:
    path: ../local_plugins/bytedance_speech

使用方法

初始化插件

import 'package:bytedance_speech/bytedance_speech.dart';

// 获取插件实例
final bytedanceSpeech = BytedanceSpeech();

// 初始化ASR
await bytedanceSpeech.initAsr(
  AsrConfig(
    appId: 'YOUR_APP_ID',
    accessToken: 'YOUR_ACCESS_TOKEN',
    streamMode: true,  // true: 双向流式模式, false: 流式输入模式
    enablePunctuation: true,
    sampleRate: 16000,
    bits: 16,
    channels: 1,
  ),
);

// 初始化TTS
await bytedanceSpeech.initTts(
  TtsConfig(
    appId: 'YOUR_APP_ID',
    accessToken: 'YOUR_ACCESS_TOKEN',
    speaker: 'zh_female_shuangkuaisisi_moon_bigtts',  // 选择音色
    format: 'mp3',
    sampleRate: 24000,
    enableTimestamp: true,
  ),
);

语音识别(ASR)

// 监听ASR事件
bytedanceSpeech.onAsrEvent.listen((event) {
  switch (event.type) {
    case AsrEventType.recognizing:
      // 处理中间识别结果
      print('识别中:${event.text}');
      break;
      
    case AsrEventType.result:
      // 处理最终识别结果
      print('识别结果:${event.text}');
      break;
      
    case AsrEventType.error:
      // 处理错误
      print('识别错误:${event.errorCode} - ${event.errorMessage}');
      break;
      
    case AsrEventType.sessionStarted:
      print('开始识别会话');
      break;
      
    case AsrEventType.sessionStopped:
      print('识别会话结束');
      break;
      
    default:
      break;
  }
});

// 开始识别
await bytedanceSpeech.startAsr();

// 发送音频数据
await bytedanceSpeech.feedAudioData(audioBytes);

// 停止识别
await bytedanceSpeech.stopAsr();

// 释放资源
await bytedanceSpeech.disposeAsr();

语音合成(TTS)

// 监听TTS事件
bytedanceSpeech.onTtsEvent.listen((event) {
  switch (event.type) {
    case TtsEventType.audio:
      // 处理音频数据
      if (event.audioData != null) {
        // 播放或保存音频数据
        playAudio(event.audioData!);
      }
      break;
      
    case TtsEventType.completed:
      // 合成完成
      print('语音合成完成');
      break;
      
    case TtsEventType.error:
      // 处理错误
      print('合成错误:${event.errorCode} - ${event.errorMessage}');
      break;
      
    case TtsEventType.started:
      print('开始合成');
      break;
      
    default:
      break;
  }
});

// 合成文本
await bytedanceSpeech.synthesize('您好,欢迎使用火山引擎语音合成服务。');

// 停止合成
await bytedanceSpeech.stopTts();

// 释放资源
await bytedanceSpeech.disposeTts();

音色列表

以下是部分可用的音色列表:

音色ID 描述
zh_female_shuangkuaisisi_moon_bigtts 中文女声-爽快思思
zh_male_zhiqiangqikai_moon_bigtts 中文男声-志强起凯
zh_female_xiaoya_moon_bigtts 中文女声-小雅
zh_male_xiaoming_moon_bigtts 中文男声-小明

完整的音色列表,请参考火山引擎官方文档:火山引擎音色列表

许可证

本插件基于MIT许可证开源。

相关链接