패키지, 저장소 및 앱 카테고리 검색

GitHub 저장소tempo-riz/deepgram_speech_to_text

deepgram_speech_to_text

Dart 및 Flutter용 Deepgram 클라이언트로 모든 플랫폼에서 음성 인식 및 텍스트 음성 기능을 지원합니다.

deepgram_speech_to_text 프로젝트 이미지
스타
20
포크
15
최근 푸시(UTC)
2026. 7. 27.
프로젝트 상태
활성

원본 README

아래는 영문 원문 스냅샷입니다. 최신 내용은 GitHub에서 확인하세요.

Deepgram Dart

Pub Version Pub Likes Pub Monthly Downloads

ko-fi

A Deepgram client for Dart and Flutter, supporting all Speech-to-Text and Text-to-Speech features on every platform.

Feel free to create issues, contribute to this project or to ask for new features on GitHub !

Features

Speech-to-Text Status Methods
From File ✅ listen.file(), listen.path()
From URL ✅ listen.url()
From Byte ✅ listen.bytes()
From Audio Stream ✅ listen.live(), listen.liveListener()
Text-to-Speech Status Methods
From Text ✅ speak.text()
From Text Stream ✅ speak.live(), speak.liveSpeaker()
Agent Interaction Status Methods
Agent Interaction 🚧 agent.live()

PRs are welcome for all work-in-progress 🚧 features

Getting started

All you need is a Deepgram API key. You can get a free one by signing up on Deepgram

Usage

First create the client with your api key.

Deepgram deepgram = Deepgram('your_api_key');

Pre-recorded

Then you can call the methods you need under the propper listen or speak subclass:

// Speech to text
DeepgramListenResult res = await deepgram.listen.file(File('audio.wav'), queryParams: {
  'model': 'nova-2-general',
  'detect_language': true,
  'filler_words': false,
  'punctuate': true,
  // options here : https://developers.deepgram.com/reference/listen-file
});

// Text to speech
DeepgramSpeakResult res = await deepgram.speak.text('Hello world', queryParams: {
  'model': 'aura-asteria-en'
  // options here : https://developers.deepgram.com/reference/text-to-speech-api
});

Streaming

Speech to text

let's say from a microphone :

//  https://pub.dev/packages/record (other packages would work too)
Stream<List<int>> micStream = await AudioRecorder().startStream(RecordConfig(
      encoder: AudioEncoder.pcm16bits,
      sampleRate: 16000,
      numChannels: 1,
));

final sttStreamParams = {
  'detect_language': false, // not supported by streaming API
  'language': 'en',
  // must specify encoding and sample_rate according to the audio stream
  'encoding': 'linear16',
  'sample_rate': 16000,
};

then you got 2 options depending if you want to have more control over the stream or not :

// 1. you want the stream to manage itself automatically
Stream<DeepgramListenResult> stream = deepgram.listen.live(micStream, queryParams: sttStreamParams);

// 2. you want to manage the stream manually
DeepgramLiveListener listener = deepgram.liveListener(micStream, queryParams: sttStreamParams);
listener.stream.listen((res) {
    print(res.transcript);
});
// connect to the servers and start sending data
listener.start();

// you can pause and resume the transcription (stop sending audio data to the server)
listener.pause(); 
// ...
listener.resume();

// then close the stream when you're done, you can call start() again if you want to restart a transcription 
listener.close(); 
Text to speech
final ttsStreamParams = {
  'model': 'aura-asteria-en',
  'encoding': "linear16",
  'sample_rate': 16000,
// options here: https://developers.deepgram.com/reference/text-to-speech-api
};

then again you got 2 options:

final textStream = ...
// 1. you want the stream to manage itself automatically
Stream<DeepgramSpeakResult> stream = deepgram.speak.live(textStream, queryParams: ttsStreamParams);

// 2. you want to manage the stream manually
DeepgramLiveSpeaker speaker = deepgram.liveListener(textStream, queryParams: ttsStreamParams);
speaker.stream.listen((res) {
    print(res);
    // if you want to use the audio, simplest way is to use Deepgram.toWav(res.data) !
});

// start sending data to the servers
speaker.start();

// https://developers.deepgram.com/docs/tts-ws-flush 
speaker.flush();

//https://developers.deepgram.com/docs/tts-ws-clear
speaker.clear();

// then close the stream when you're done, you can call start() again if you want to restart a transcription 
speaker.close(); 

For more detailed usage check the /example tab

Tested on Android and iOS, but should work on other platforms too.

Debugging common errors

  • make sure your API key is valid and has enough credits
deepgram.isApiKeyValid()
  • "Websocket was not promoted ..." : you are probably using wrong parameters, for example trying to use a whisper model with live streaming (not supported by deepgram)
  • empty transcript/only metadata : if streaming check that you specified encoding and sample_rate properly and that it matches the audio stream
  • double check the parameters you are using, some are not supported for streaming or for some models

Additional information

I created this package for my own needs since there are no dart sdk for deepgram. Happy to share !

Don't hesitate to ask for new features or to contribute on GitHub !

Support

If you'd like to support this project, consider contributing here. Thank you! :)

Thibault Chatillon GitHub avatar
GitHub 작성자

Thibault Chatillon ↗

Work in progress 🛠️

Geneva
언어DartC++CMakeRubySwiftCHTMLKotlinObjective-C

분류

이 저장소가 배포한 패키지

사용 중인 의존성

의존성 목록 8 개

프로젝트에 맞는 저장소를 선택하려면?

사용 목적에 따라 검색하고 개발 활동을 비교한 뒤 원본 저장소에서 요구 사항을 확인하세요.

  1. 이름, 작성자 또는 설명으로 검색하고 기술 주제로 범위를 좁힙니다.
  2. 스타, 포크, 최근 푸시를 함께 비교하세요. 스타는 관심의 지표이며 품질을 보장하지 않습니다.
  3. 사용하기 전에 GitHub에서 README, 라이선스, Issues를 확인하세요.

출처 및 관리

“A repository is the most basic element of GitHub.”

GitHub Docs — About repositories ↗