develop/Flutter

Flutter TTS Text to Speech 음성합성 글자 소리내서 읽기

방뎁 2023. 8. 15. 01:20
반응형

글을 기계가 읽어주는 걸 TTS라고 합니다. 

네이버 클로바에서 많이 볼 수 있습니다

라이브러리를 사용해서 TTS를 구현하고자 합니다. 

POPULARITY가 99%입니다.

https://pub.dev/packages/flutter_tts

 

flutter_tts | Flutter Package

A flutter plugin for Text to Speech. This plugin is supported on iOS, Android, Web, & macOS.

pub.dev

 

패키지 적용

flutter pub add flutter_tts

 

안드로이드는 21이상에서 작동하고 맥은 10.15 이상에서 작동하니 Readme를 읽어보시기 바랍니다. 

minSdkVersion

를 전체 검색 또는 빌드그래들에서 수정하시면 됩니다. 

 

옵젝 씨로 만든 iOS프로젝트라면 readme를 확인하시어 네이티브 코드를 설정해야 합니다. 

그 이외로는 문제없이 바로 코딩하면 되겠습니다.

 

예제는 아래와 같습니다.

import 'package:flutter/material.dart';
import 'package:flutter_tts/flutter_tts.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: TTSPage(),
    );
  }
}

class TTSPage extends StatefulWidget {
  @override
  _TTSPageState createState() => _TTSPageState();
}

class _TTSPageState extends State<TTSPage> {
  FlutterTts flutterTts;
  String textToSpeak = 'Hello, Flutter TTS!';

  @override
  void initState() {
    super.initState();
    flutterTts = FlutterTts();
  }

  Future<void> speak() async {
    await flutterTts.setLanguage('en-US'); // 언어 설정
    await flutterTts.setPitch(1.0); // 음성 높낮이 설정
    await flutterTts.setSpeechRate(1.0); // 음성 속도 설정
    await flutterTts.speak(textToSpeak); // 텍스트 음성 변환 및 재생
  }

  @override
  void dispose() {
    flutterTts.stop(); // 페이지 종료 시 TTS 중지
    flutterTts = null; // 메모리 해제
    super.dispose();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Flutter TTS Example'),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            Text(textToSpeak),
            SizedBox(height: 20),
            ElevatedButton(
              onPressed: speak,
              child: Text('Speak'),
            ),
          ],
        ),
      ),
    );
  }
}

 

뮤트 모드일때 사운드가 재생되어야 한다면 아래의 글을 참고하세요

2023.08.15 - [develop/Flutter] - Flutter Tts 사일런트 모드일때 사운드 재생 안됨 해결하기 iOS AudioCategory 구분하기

 

Flutter Tts 사일런트 모드일때 사운드 재생 안됨 해결하기 iOS AudioCategory 구분하기

tts 기능을 개발하고 실기기에 물려서 테스트할 때는 잘 되더니 테스트플라이트에 올려서 확인하니 tts가 안나와서 당황스러웠습니다. 그래서 사운드를 키우고 시도했는데 안돼서 버그인가 했는

devfart.tistory.com

 

반응형