iT邦幫忙

2024 iThome 鐵人賽

DAY 13
0
生成式 AI

用AI寫程式也是要點本事的系列 第 13

用物件導向整合前幾天的功能

  • 分享至 

  • xImage
  •  

上一篇介紹了物件導向,還講了「物件中可以有函數」。
來看看怎麼用吧!
人工智能也可以設計物件,還可以要求指定物件名稱。

「請將FlutterWeb錄音功能整合成一個物件,名稱叫WebRecorder。」


class WebRecorder{
  html.MediaRecorder? _mediaRecorder;
  final _audioStreamController = StreamController<List<int>>();
  Stream<List<int>> get audioStream => _audioStreamController.stream;

  Future<void> startRecording() async {
    final mediaStream = await html.window.navigator.mediaDevices?.getUserMedia({'audio': true});
    _mediaRecorder = html.MediaRecorder(mediaStream!);
    _mediaRecorder!.addEventListener('dataavailable', (event) {
      final blobEvent = event as html.BlobEvent;
      final reader = html.FileReader();
      reader.readAsArrayBuffer(blobEvent.data!);

      reader.onLoadEnd.listen((event) {
        if (reader.readyState == html.FileReader.DONE && reader.result != null)
        {
          
          final data = reader.result as Uint8List;
          print('data : ' + data.length.toString());
          _audioStreamController.add(data);
        }
      });
    });
    _mediaRecorder!.start();
  }

  void stopRecording() async {

    await Future.delayed(Duration(seconds: 10));
    _mediaRecorder?.stop();
    _mediaRecorder = null;
  }

}

然後....
發生了一個問題!

我們不知道何時關閉錄音功能!

可以在執行speak前開始錄音,但這系列的語音功能並不支援「如何告訴其他程式它已經執行完畢」的設計。


上一篇
用AI設計物件啦!
下一篇
如何讓程式知道何時text to speech播放完了
系列文
用AI寫程式也是要點本事的30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言