トップ 差分 一覧 Farm ソース 検索 ヘルプ PDF RSS ログイン

TextForHSP06

*disclaimer
178036

[HSP]

06. 音声の録音と外部ファイルからのデータ取り込み




 06.1 音声の録音


絵を見て、答えを録音する



  • 画像ファイル: po.png(先週と同じもの)
  • 音声ファイル: po.mp3(先週と同じもの)

結果は以下のファイルに保存される

  • 録音データ(sample.wav)
  • 録音にかかった時間(time.txt)



録音に必要な命令(マイク必要)


  • 準備
mci "open new alias sam type waveaudio"
			; waveでsamという「デバイス」に録音
mci "set sam channels 2 samplespersec 44100 bitspersample 16"
    • チャンネル数 2(ステレオ)
    • サンプリング周波数 44100Hz (一秒間に何回データを取るか。44,100回)
    • サンプルビット数 16     (振り幅を、どれだけ細かく取るか。16ビットは、2^16=65,536段階)


  • 操作
mci "record sam"		; 録音の開始
mci "stop sam"			; 録音停止
mci "save sam \"sample.wav\""	; 音声ファイル保存
mci "close sam"			; 録音終了(デバイスを閉じる)

 06.2 外部ファイルからのデータの取り込み


テキストファイルから単語を読み込む

  • テキストファイルは words.txt というファイル名
  • 一行一単語ずつ
puzzle
idle
simple
waggle
twinkle
challenging

  • 同じフォルダーに入れておく。

notesel notename; 事前に読み込みバッファ(メモリーパッド)の設定
noteload "words.txt" ; テキストファイルの読み込み
  • 「メモリーパッド」とは、行単位でテキストデータを扱う「特別な」変数(noteなんとかという命令群)
  • notemax に読み込んだ行数が自動的に入る。

noteget 変数, 番号
  • メモリーパッドの何番の行を読み込むか指定
  • 読み込んだ内容を変数に入れる
  • 「第5文型」: 変数に番号(の内容)をgetする

 06.3 外部ファイルからのデータの取り込み(二次元配列)

二つの対応する項目(英語,日本語)をテキストデータ(CSVファイル)にしておく。


analysis,分析
response,反応
occur,発生する

データファイル: text.csv

  • エクセルで作って、CSVファイルで保存

英語 日本語
concept 概念
method 方法
analysis 分析

読み込んで二次元配列に入れていく

wordlist(フィールド番号, レコード番号)

(レコード番号とフィールド番号の順番に注意)

  • 一行の「レコード」の中に、複数の「フィールド」が含まれる

0番フィールド 1番フィールド
0,0 1,0 0番レコード
0,1 1,1 1番レコード
0,2 1,2 2番レコード

wordlist-check.hsp(8)

外部ファイルからのデータ取り込み

notesel text        ; 事前に読み込みバッファ設定

noteload "text.csv" ; CSVファイルの読み込み

gyosuu = notemax    ; notemaxは、「メモリーパッド」内の行数。

  • csvファイルで読み込む点に注意


二次元配列の定義


sdim wordlist, 2, notemax

  • sdim で「文字列型配列」を使うことを定義
  • wordlist という名前(変数名)にする
  • 2 つの「フィールド」を使うことを指定
  • notemax の数だけの「レコード」数(行数)(具体的に数を書いてもよい)



データを読み込んで、「カンマ」を区切りとして、二次元配列に入れていく


split をHSPキーワード検索して説明を読む

repeat gyosuu		; 行数(語数)分だけ繰り返す。
	noteget item, cnt; noteget で行単位で読みだす。
        	; cntで読み込みインデックス番号を指定
	split item, ",", wordlist(0,cnt), wordlist(1,cnt)
        	; item をカンマで切って、二次元配列に代入
	item = ""
	await 1
loop

 06.4 音声ファイルを順に鳴らす


1.mp3(13)
2.mp3(11)
3.mp3(11)
4.mp3(9)
5.mp3(7)
6.mp3(9)
7.mp3(11)
8.mp3(12)
9.mp3(8)

  • スクリプトのコメント参照



 06.5 音声ファイルを聞いてタイプする 


  • スクリプト: flashCard04d2.hsp(14)
  • データファイル: text.csv (上のと同じ)
  • 音声ファイル: 番号.mp3 (上のと同じ)

  • スクリプトのコメント参照