[flutter/dart] TTS(Text To Speech)

yevvon·2024년 6월 9일
0

flutter

목록 보기
11/12

사용자가 읽어주길 원하는 문장을 입력하면 읽어주는 기능을 해보겠습니다.

flutter_tts: ^3.8.5

패키지를 깔아주어야합니다.

https://pub.dev/packages/flutter_tts
최신버전을 확인하고 깔아주세요

flutter TTS는 안드로이드 SDK21이상에서만 사용이 가능합니다.
android/app/build. 파일에서 'minSdkVersion 21'로 수정해주세요.

import 'package:flutter_tts/flutter_tts.dart';

import해주세요.

 final FlutterTts tts = FlutterTts();
 final TextEditingController tts_controller = TextEditingController();

음성에 필요한 변수와 사용자가 문장을 작성할 때 필요한 변수입니다.

  @override
  void initState() {
    super.initState();
    tts.setLanguage("ko-KR"); //언어설정
    tts.setSpeechRate(0.5); //말하는 속도(0.1~2.0)
    tts.setVolume(0.6); //볼륨(0.0~1.0)
    tts.setPitch(1); //음높이(0.5~2.0)
  }

음성 상태를 초기화 해주세요

TextField(
    controller: tts_controller,
),

사용자가 입력할 부분입니다.

ElevatedButton(
    onPressed: () => tts.speak(tts_controller.text),
    child: Text("재생"),
),

버튼을 누르면 음성이 실행됩니다.

전체코드

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

void main() async {
  runApp(MaterialApp(home: MyApp()));
}

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

class Text_To_Speech extends StatefulWidget {
  @override
  State<Text_To_Speech> createState() => _Text_To_SpeechState();
}

class _Text_To_SpeechState extends State<Text_To_Speech> {
  final FlutterTts tts = FlutterTts();
  final TextEditingController tts_controller = TextEditingController();

  @override
  void initState() {
    super.initState();
    tts.setLanguage("ko-KR");
    tts.setSpeechRate(0.5);
    tts.setVolume(0.6);
    tts.setPitch(1);
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text("TTS"),
      ),
      body: Container(
        child: Column(
          children: [
            SizedBox(
              height: 150,
            ),
            TextField(
              controller: tts_controller,
            ),
            SizedBox(height: 10,),
            ElevatedButton(
              onPressed: () => tts.speak(tts_controller.text),
              child: Text("재생"),
            ),
          ],
        ),
      ),
    );
  }
}

0개의 댓글

관련 채용 정보