HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2019
0829
京浜東北・根岸線音声合成録音できない10解決


京浜東北・根岸線

リンク

2019/8/29(Thu) 20:48:37|NO.88265

音声合成の音声を録音したいのですが、うまくいきません。
↓のソースを実行すると、エラーが発生してしまいます。

newcom spv, "Sapi.SpVoice" newcom stream, "SAPI.SpFileStream" stream->"open" dir_desktop+"\\test.wav",3 spv("AudioOutputStream")=stream //<==外部オブジェクトの呼び出しに失敗しました spv->"Speak" "Hello",1 delcom stream delcom spv
調べてもでてこなかったです。



この記事に返信する


法貴優雅

リンク

2019/8/29(Thu) 22:02:12|NO.88267

過去ログのこれではダメですか?
http://hsp.tv/play/pforum.php?mode=pastwch&num=26575



京浜東北・根岸線

リンク

2019/8/30(Fri) 18:58:33|NO.88272

なるべく、“○○をダウンロードしないとこれが使えません。”は避けたいのです。
ダウンロードが不要のアプリケーションが作りたいです。
わがままみたいですみません。



暇人

リンク

2019/9/5(Thu) 20:13:54|NO.88330

ダウンロードが必要なのはMP3等にエンコードしたい場合で
.wavで良いならffmpegは必要ない

>;exec "record.wav",16
ここまでのスクリプトをコピペすれば良い



京浜東北・根岸線

リンク

2019/9/13(Fri) 07:05:05|NO.88421

返信遅れてすみません。

exec "record.wav",16
までのスクリプトをコピペしてみましたが、record.wavは作れましたが、プレイヤーで再生できませんでした。
> //Windows Vista以降では設定に失敗することがあります。
Windows Vista以降だからできないんでしょうか?



暇人

リンク

2019/9/13(Fri) 20:35:44|NO.88424

↓のVista以降でも設定できるって言う方法でやってみる
http://hsp.tv/play/pforum.php?mode=pastwch&num=39979

//空のデータ(ダミー)を先に作らないとMCIでの保存が失敗するかも dummy="" notesel dummy notesave "record.wav" mci "open new alias rec type waveaudio" channels=2 bitspersample=16 samplespersec=44100 mci "set rec channels "+channels+" samplespersec "+samplespersec+" bitspersample "+bitspersample newcom spv, "Sapi.SpVoice" if varuse(spv)=0 : dialog "SAPI not found." : end word="Hello this is H.S.P. for windows. "//自分の環境だと最終文字にスペースが無いとwindowsの発生前に録音が切れる mes word mci "record rec" spv->"Speak" word, 0 ; 0だと終了待ち mci "stop rec" mci "save rec \"record.wav\"" mci "close rec" exist "record.wav" if strsize>3 { sdim buf,64 lpoke buf,0,samplespersec*(bitspersample/8)*channels bsave "record.wav",buf,4,28 exec "record.wav",16 }else{ mes "録音ファイルにデータが有りません" }



暇人

リンク

2019/9/16(Mon) 21:01:23|NO.88438

とりあえず下ので今現在録音が出来る状態なのか調べられる

#uselib "winmm.dll" #func global mciSendString "mciSendStringA" str,var,int,int sdim f,1024 mciSendString "capability waveaudio can play wait",f,10,0 mes f
Trueなら録音可能
Falseの場合PC環境が録音不可の状態
これはハード側や設定に問題がある場合がある

ステレオミキサーの設定が無い(無効等も)場合マイクが刺さってないとmciの録音も失敗する
詳しくはステレオミキサーで検索を・・・

終了時にファイルを書き換えなくても良い方法↓

//空のデータ(ダミー)を先に作らないとMCIでの保存が失敗するかも dummy="" notesel dummy notesave "record.wav" mci "open new alias rec type waveaudio" mes "open "+stat channels=2 bitspersample=16 samplespersec=44100 bytespersec=samplespersec*bitspersample/8*channels //自分で設定しとけばWAVEヘッダを正常に出来る mci "set rec channels "+channels+" samplespersec "+samplespersec+" bitspersample "+bitspersample+" alignment 4 bytespersec "+bytespersec mes "set "+stat newcom spv, "Sapi.SpVoice" if varuse(spv)=0 : dialog "SAPI not found." : end word="Hello this is H.S.P. for windows. "//自分の環境だと最終文字にスペースが無いとwindowsの発生前に録音が切れる mes mes word mes mci "record rec" mes "record "+stat rec_f=stat spv->"Speak" word, 0 ; 0だと終了待ち mci "stop rec" mci "save rec \"record.wav\"" mes "save "+stat mci "close rec" if rec_f=0 { mes "録音に成功しました" dialog "再生しますか?",2 if stat=6 {exec "record.wav",16} end }else{ mes "録音に失敗しました" }



京浜東北・根岸線

リンク

2019/9/17(Tue) 19:41:16|NO.88443

ありがとうございます。
しかし、record.wavはできて、プレイヤーで再生できましたが、肝心の音が鳴りません。
音量Maxにしてもなりません。
録音可能か調べるソースを実行したら"True"と出ました。
ちなみに環境はWindows 10です。



暇人

リンク

2019/9/17(Tue) 20:30:33|NO.88448

後はステレオミキサーの設定が出来てるかどうか
Windows 10の場合OS付属のドライバが使用されて
ステレオミキサーが使え無くなってる事があるらしい

それからOS付属の録音ソフトがPCで鳴らした音を録音出来るかどうか


自分のノートPCはWindows 10だけどPCが鳴らした音の録音は仕様上無理・・・
USBオーディオミキサーとか必要・・・



Hiro

リンク

2019/9/18(Wed) 01:13:46|NO.88450

これまでの良レスとは違う方向で申し訳ないのですが
外部コンポーネント(COM)定義を使った方法もあります。
下記、サンプルコードです。
カレントディレクトリにspTextの音声をwavFileに作成して実行します。

#define global CLSID_SpFileStream "{947812B3-2AE1-4644-BA86-9E90DED7EC91}"
#define global IID_ISpeechFileStream "{AF67F125-AB39-4e93-B4A2-CC2E66E182A7}" #usecom global ISpeechFileStream IID_ISpeechFileStream CLSID_SpFileStream #comfunc global ISpeechFileStream_Open 12 wstr,int,int #comfunc global ISpeechFileStream_Close 13 #define global CLSID_SpVoice "{96749377-3391-11D2-9EE3-00C04F797396}" #define global IID_ISpeechVoice "{269316D8-57BD-11D2-9EEE-00C04F797396}" #usecom global ISpeechVoice IID_ISpeechVoice CLSID_SpVoice #comfunc global ISpeechVoice_putref_AudioOutputStream 13 int #comfunc global ISpeechVoice_Speak 28 wstr,int,var wavFile = "test.wav" spText = "Hello this is H.S.P. for windows." newcom spFile, ISpeechFileStream ISpeechFileStream_Open spFile, wavFile, 3, 0 newcom spVoice, ISpeechVoice dupptr dp, varptr(spFile), 4 ISpeechVoice_putref_AudioOutputStream spVoice, dp ISpeechVoice_Speak spVoice, spText, 0, ret ISpeechFileStream_Close spFile delcom spVoice delcom spFile exec wavFile, 16 stop



京浜東北・根岸線

リンク

2019/9/18(Wed) 06:56:42|NO.88452

ありがとうございました。
ようやく音声合成をできました。
ちゃんとプレイヤーで再生できました。



ONION software Copyright 1997-2023(c) All rights reserved.