{{category HSP}} !!!06. 音声の録音と外部ファイルからのデータ取り込み {{outline}} ---- !!06.1 音声の録音 ! 絵を見て、答えを録音する * スクリプト{{ref postoffice-sound-answer-time-recording2.hsp}} * 画像ファイル: po.png(先週と同じもの) * 音声ファイル: po.mp3(先週と同じもの) ! 結果は以下のファイルに保存される * 録音データ(sample.wav) * 録音にかかった時間(time.txt) ! 録音に必要な命令(マイク必要) * 準備 {{pre 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段階) * 操作 {{pre mci "record sam" ; 録音の開始 mci "stop sam" ; 録音停止 mci "save sam \"sample.wav\"" ; 音声ファイル保存 mci "close sam" ; 録音終了(デバイスを閉じる) }} !!06.2 外部ファイルからのデータの取り込み *{{ref flashCard01c.hsp}} ! テキストファイルから単語を読み込む * テキストファイルは words.txt というファイル名 * 一行一単語ずつ {{pre puzzle idle simple waggle twinkle challenging }} * 同じフォルダーに入れておく。 {{pre notesel notename; 事前に読み込みバッファ(メモリーパッド)の設定 noteload "words.txt" ; テキストファイルの読み込み }} * 「メモリーパッド」とは、行単位でテキストデータを扱う「特別な」変数(noteなんとかという命令群) * notemax に読み込んだ行数が自動的に入る。 {{pre noteget 変数, 番号 }} * メモリーパッドの何番の行を読み込むか指定 * 読み込んだ内容を変数に入れる * 「第5文型」: 変数に番号(の内容)をgetする !!06.3 外部ファイルからのデータの取り込み(二次元配列) ! 二つの対応する項目(英語,日本語)をテキストデータ(CSVファイル)にしておく。 * スクリプト: {{ref flashCard02b.hsp}} * データファイル: {{ref text.csv}} {{pre 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番レコード {{ref wordlist-check.hsp}} ! 外部ファイルからのデータ取り込み {{pre notesel text ; 事前に読み込みバッファ設定 noteload "text.csv" ; CSVファイルの読み込み gyosuu = notemax ; notemaxは、「メモリーパッド」内の行数。 }} * csvファイルで読み込む点に注意 ! 二次元配列の定義 sdim wordlist, 2, notemax * sdim で「文字列型配列」を使うことを定義 * wordlist という名前(変数名)にする * 2 つの「フィールド」を使うことを指定 * notemax の数だけの「レコード」数(行数)(具体的に数を書いてもよい) ! データを読み込んで、「カンマ」を区切りとして、二次元配列に入れていく split をHSPキーワード検索して説明を読む {{pre repeat gyosuu ; 行数(語数)分だけ繰り返す。 noteget item, cnt; noteget で行単位で読みだす。 ; cntで読み込みインデックス番号を指定 split item, ",", wordlist(0,cnt), wordlist(1,cnt) ; item をカンマで切って、二次元配列に代入 item = "" await 1 loop }} !!06.4 音声ファイルを順に鳴らす * スクリプト: {{ref flashCard03.hsp}} * データファイル: {{ref text2.csv}} * 音声ファイル: {{ref 1.mp3}} {{ref 2.mp3}} {{ref 3.mp3}} {{ref 4.mp3}} {{ref 5.mp3}} {{ref 6.mp3}} {{ref 7.mp3}} {{ref 8.mp3}} {{ref 9.mp3}} *スクリプトのコメント参照 !!06.5 音声ファイルを聞いてタイプする  * スクリプト: {{ref flashCard04d2.hsp}} * データファイル: text.csv (上のと同じ) * 音声ファイル: 番号.mp3 (上のと同じ) *スクリプトのコメント参照 !!! => TextForHSP07