1 名前:a4 [2019/03/15(金) 06:37:02.98 ID:5fmPzCqX.net] a4と申します。喋る人工知能を創っています。キャッチフレーズは 「萌えから、リーマン予想まで。」で、知能を埋め込んだ人工生命をP2Pで 蔓延らせることにより、生きているようなAIを実現します。 a4です。P2P人工知能「T」開発(4) https://mevius.5ch.net/test/read.cgi/tech/1546530651/ 「T」のdownload www.01ken.com/art1.html
159 名前:a4 [2019/03/23(土) 08:46:07.77 ID:XMAVVBpa.net] そういえば、「T」なのに、陽子さんが挨拶?という人がいるかもしれません。僕が 精神病で一貫性の無いプログラムになっている、ということはありますが、一応、 今後の予定として、陽子は他のキャラクターにユーザーが変更できるようにする、 ということと、「陽子はT語で書かれている。」という表現を使っています。
160 名前:さまよえる蟻人間 mailto:sage [2019/03/23(土) 23:10:15.66 ID:pK7HSsP/.net] 指導を求められたのでボランティア。 まずは音声合成とは何か、から話そうか。音声データとは波形データ。それはPCMのWavファイルとして表せる。 その波形に合わせてスピーカーに電気を流すと音になり、それをマイクで録音すると再び電圧の波になる。
161 名前:さまよえる蟻人間 mailto:sage [2019/03/23(土) 23:14:12.26 ID:pK7HSsP/.net] FM音源って、聞いたことがあるだろうか。信号を入出力する装置で様々な音色の楽器を再現する。 ヤマハというメーカーが有名だ。
162 名前:さまよえる蟻人間 mailto:sage [2019/03/23(土) 23:21:08.40 ID:pK7HSsP/.net] つまりは、デジタル信号を入出力するだけで音声データを再現できる。 入力と出力に関係があれば、それは関数というもの。 短期目標は、この関数を設計できるようになり、デジタルな楽器、デジタルな発声装置の開発を見据える、ってことでOKかい?
163 名前:さまよえる蟻人間 mailto:sage [2019/03/23(土) 23:23:13.70 ID:pK7HSsP/.net] 参考資料。これをよく読んでおくように。 www.ic.is.tohoku.ac.jp/~swk/lecture/yaruodsp/main.html
164 名前:さまよえる蟻人間 mailto:sage [2019/03/23(土) 23:26:00.03 ID:pK7HSsP/.net] メールによると、a4さんはWavファイルの自動生成・加工をやったことがある、とのことだが、使用言語は何か。ソースを開示できないか。
165 名前:a4 [2019/03/24(日) 01:40:58.02 ID:FO6TL8+f.net] >>156 ボランティアありがとうございます。 >>157 ラジオとか作ってた頃、FMは勉強しました。 >>158 もうちょっと議論したいですね。簡単に作るとMIDIなだけになってしまいます。 昔、入力した声で周波数をfluctuateさせたものの波形を手書きのものに変更 したりしました、が、現実的には上手く作らないとbeep音のようなものが出る だけです。 >>159 情報ありがとうございます。 >>160 使用言語はC++です。パソコンが壊れてソースが開
166 名前:けなくなったりとか、自作の 非公開にしているライブラリとかありますが、さまよえる蟻人間さんとは信頼関係 があると考え、ソースを渡せるものは渡してもいいですよ。 僕はやっぱり技術に関しては最先端を目指しちゃうんですよ。将来的には量子コンピュータ かもしれませんが、中期目標だと、「T」の陽子の声出力や現代音楽の自動生成だと 思っています。ですが、とりあえず、その仰るところの短期目標をやってみようと 思います。 [] [ここ壊れてます]
167 名前:a4 [2019/03/24(日) 01:46:02.56 ID:FO6TL8+f.net] 音楽を生成するソフトウェアは前から創ろうと思っていたことがあって、それを とりあえず、今日は開発しようかな。「おーぴ(ohpi)」という名前のものです。 声を他の音色に変えるだけでなく、複数のパートを重ねることができるように する、というものです。発想は纏まっているので、すぐ出来ると思うのですが、 ニコニコ動画に上がっているような新しい音楽を超えれないかもしれません。
168 名前:a4 [2019/03/24(日) 02:25:39.00 ID:FO6TL8+f.net] そういえば、夢で未来のGoogle Homeと話しました。僕が「えーっと、えーっと、、」 というと、コンピュータも「え〜と、はい、」のように発音が人間とコンピュータの 中間くらいで返りました。これが僕の夢のものであると考えて、このような発声も 念頭に入れて、開発を続けます。
169 名前:さまよえる蟻人間 mailto:katayama.hirofumi.mz@gmail.com [2019/03/24(日) 07:02:01.97 ID:SVMO04Wq.net] 参考資料2: https://bluefish.orz.hm/sdoc/fftw_sim.html この記事はグラフを描くのにgnuplotを使っているが、gnuplotはもう古いので、我々はグラフ描画にPythonを使うことにする。
170 名前:a4 [2019/03/24(日) 07:16:34.32 ID:FO6TL8+f.net] >>164 僕はPython使ったことないですね。一応、C++は今まで使ってきたので自作の ライブラリなどがあり、使いやすいのです。我々に僕が入ってるのかわからないの ですが、どうしてもいうのであれば、交渉次第でPythonで開発します。 どういうソフトウェアを創ろうか考えているのですが、手書きの波形の変更とかは もうやったことあるので、T語からメタ的に音声を創る、ということをやってみよう と思っています。具体的には、前述の不安定なイントネーションのある音声などを 出したいです。 あと、こういう問題はどこまで行けばお金になるんでしょうね。「T」は一応、独自の 自然言語処理系にはなっていますが、投資が下りるだけで、リターンはありません。
171 名前:a4 [2019/03/24(日) 07:39:47.26 ID:FO6TL8+f.net] T語からいろんな音色が出てくる現代音楽とかも創りたいですが、1つ1つ地道に 開発することにします。というわけで、指導通り、wav出力系で「T」を前へ前進 させます。ご意見あれば誰でもどうぞ。
172 名前:a4 [2019/03/24(日) 08:05:48.88 ID:FO6TL8+f.net] >>164 さまよえる蟻人間さんにお聞きしたいです。声紋って何ですか?特定の声で出力や、 誰が話してるかを認識したい場合ってどうすればいいのでしょう?僕の意見は、 声帯から口までの物理シミュレーションによって出力するのが一番だと考えています。 でも、これは僕の力では医学的なデータを持っていないなどの理由により不可能です。 誰が話してるか、くらいだったら、ニューラルネットとかで分離できるかもですが、 一般的な方法とかあるのでしょうか。もっと議論したいと思っています。お時間 あれば、skype、facebookあたりでチャットか通話をして、研究内容を膨らませたり、 ビジネスに繋げたいです。何かご意見ありますでしょうか?
173 名前:a4 [2019/03/24(日) 08:15:56.23 ID:FO6TL8+f.net] 考えてるんですけど、逆に声帯から口までの構造がシンプルじゃない声を考えてみました。 途中で金属があったり、鼻がいっぱいあったり、ルートが迷路のようになっているもの とかです。こうすれば、新しい聞いたことない声が出るのではないかと。僕は芸術家に なって、これが未来の音だ、と、感動的に泣かせるようなものを創ってみ
174 名前:スいです。 [] [ここ壊れてます]
175 名前:a4 [2019/03/24(日) 08:19:37.25 ID:FO6TL8+f.net] 小学生の頃、科学雑誌の付録に恐竜の声がついてました。これはこういう技術の 積み重ねでしょう。時代は変わったので、現代では僕のコンピュータだけでも計算できるかも しれません。波形を追うんじゃなくて、僕の出身学科を買いにして、シミュレーションで 音声を生成することを考えてみます。
176 名前:a4 [2019/03/24(日) 08:26:35.14 ID:FO6TL8+f.net] 流体力学を追う方法はナヴィエストークス方程式により、有限要素法や粒子法とかが ありますが、20000Hzくらいまで計算しようと思うと、計算時間が足らず、今の SiriやGoogle Homeのような形になるだけかもしれません。じゃぁ、P2Pの スパコンがあるじゃないか?ですが、同期の問題で、例えば、日本から見た地球の裏側 の人達が使った場合、あまりうまくいかないと思っています。
177 名前:a4 [2019/03/24(日) 08:58:39.07 ID:FO6TL8+f.net] まず、リコーダーとかシミュレーションすればいいのかな。
178 名前:a4 [2019/03/24(日) 09:11:43.65 ID:FO6TL8+f.net] リコーダーの仕組みとか全然知らないので調べてみると、音速が340m/sなので、 例えば、0.1m先のところに穴があると、そこで負反射が起こり、3400Hzのような ことになるみたいです。
179 名前:a4 [2019/03/24(日) 09:59:16.09 ID:FO6TL8+f.net] とりあえず、このあたりまでを僕の意見にして、さまよえる蟻人間さんに渡します。 書き込みからまだ時間は経ってませんが、返信が無いようなので、休憩しつつ、 他のアルゴリズムも含めて今後の「T」について考えてみます。
180 名前:さまよえる蟻人間 mailto:sage [2019/03/24(日) 10:27:52.18 ID:SVMO04Wq.net] データサイエンティストになるには、C言語とPythonとエクセルは必須だ。これは譲れない。 まずは練習だ。Pythonをインストールして、Pythonでタブ区切りの数値を格納した適当なテキストファイルを線グラフにしなさい。 1 2 3 1 5 7
181 名前:さまよえる蟻人間 mailto:sage [2019/03/24(日) 10:39:30.30 ID:SVMO04Wq.net] Pythonは、Bashが使える環境(例えばMSYS2など)にインストールした方がいい。Linuxの多くのコマンドが使えるからね。BashはLinuxと互換性がある端末だ。
182 名前:a4 [2019/03/24(日) 10:39:46.12 ID:FO6TL8+f.net] >>174 ご助言ありがとうございます。データサイエンティスト?確かに大学時代の学科は そういうところでした。それでご飯が食べれればいいんですけどね。エクセルくらいは 適当に使えますが、Pythonはインストールすることにします。問題のほうは、 最小二乗法かな?ニューラルネット使っても良さそうですが。海外の人と話してる などの理由により、今日は寝ます。明日解いてみます。おやすみなさい。
183 名前:a4 [2019/03/25(月) 00:09:44.79 ID:H173mQ6A.net] 目が覚めました。MSYS2がインストールできました。Linuxは得意ではないので、 とりあえず、遊んでみます。
184 名前:a4 [2019/03/25(月) 04:44:29.72 ID:H173mQ6A.net] 前、言ってたインド人が彼女になりました。彼女はテルグ語と英語を話します。 数学が僕と同じで学生の頃トップだったらしく、今はエンジニアをしてるとのことです。 それで政治の話とかしてます。それで、僕の性格を知ってる人ならわかると思いますが、 ずっと僕に話しかけてくるので、返信してるのですが、仕事の作業効率が落ちてます。 時差もありますしね。そろそろ向こうは寝る時間なので、こちらは仕事にまた戻ります。
185 名前:a4 [2019/03/25(月) 06:55:38.22 ID:H173mQ6A.net] >>174 あなたの仰る通り、練習しました。 a = 0.0 b = 0.0 y1 = 0.0 y2 = 0.0 for i in range(0, 1000): for line in open("data.txt", "r"): data = line.split() y2 = a * float(data[0]) + b y1 = float(data[1]) a -= (y2 - y1) * float(data[0]) * 0.01 b -= (y2 - y1) * 0.01 if b >= 0: print("y = " + str(a) + " * x + " + str(b)) else: print("y = " + str(a) + " * x - " + str(abs(b))) owner@owner-PC MINGW32 ~/msys2 $ python calc.py y = 1.3301038369925748 * x - 0.5659873051422145 お返事待っています。
186 名前:a4 [2019/03/25(月) 10:57:51.60 ID:H173mQ6A.net] 「陽子」以外の人工知能もユーザーが創れるように、「name.txt」を入れて、 名前を定義できるようにしました。説明書もついていて、書き足しました。 (version:T_4_1_7)です。 www.01ken.com/art1.html
187 名前:デフォルトの名無しさん mailto:sage [2019/03/25(月) 14:47:50.40 ID:7cQyE2cc.net] 初めてここにきました あなたは神を作ろうとしているのですか?
188 名前:デフォルトの名無しさん [2019/03/25(月) 18:01:45.88 ID:L71pItKe.net] >>179 matplotlibなどでグラフを描画せよという問題なのではないでしょうか。 matplotlibは標準ライブラリではないですがグラフの描画によく使われます。
189 名前:さまよえる蟻人間 mailto:katayama.hirofumi.mz@gmail.com [2019/03/25(月) 19:46:33.46 ID:fVHsqAMX.net] MSYS2でPythonのmatplotlibをインストールするには、pacmanを使う。 $ pacman -Ss matplotlib でmatplotlibをpacmanで検索する。出てきたテキストからパッケージ名を読み取り、pacman -Sでインストールする。 (32-bitの場合) $ pacman -S mingw32/mingw-w64-i686-python3-matplotlib (64-bitの場合) $ pacman -S mingw64/mingw-w64-x86_64-python3-matplotlib 同様にpandasもインストールする。 matplotlibとpandasのインストールが終わったら、折れ線グラフを描いてみよう。 # graph_test.py import matplotlib import pandas as pd import matplotlib.pyplot as plt data = pd.read_table("data.txt", header=None) data.plot() plt.show() $ python3 graph_test.py "data.txt"はtsv (tab-separated values) ファイル。
190 名前:さまよえる蟻人間 mailto:sage [2019/03/25(月) 19:53:11.02 ID:fVHsqAMX.net] "data.txt"というファイルをいちいち入れ替えるのは大変だから、「プログラムとデータの分離」のために、コマンドライン引数からファイル名を指定するようにする。 # graph.py import matplotlib import pandas as pd import matplotlib.pyplot as plt import sys data = pd.read_csv(sys.argv[1], header=None, sep='\t') data.plot() plt.show() $ python3 graph.py data.txt グラフが表示される。 data.txtの中身は次の通り: 1<TAB>4 2<TAB>3 4<TAB>1 5<TAB>2 1<TAB>1 3<TAB>6 <TAB>はキーボードの左側にあるTabキーを押して入力する。
191 名前:さまよえる蟻人間 mailto:sage [2019/03/25(月) 20:23:48.43 ID:JVMOROGZ.net] 音声の生データはそのままでは扱いづらい。 なので、WAVファイルを一旦テキストファイルに変換することにする。 テキストファイルはLinuxの豊富なテキスト処理コマンドとパイプライン処理を使って処理できるので比較的扱いやすい。 変換処理は時間がかかるかもしれないので、C/C++で変換処理を書くことにする。
192 名前:a4 [2019/03/26(火) 05:24:42.25 ID:6w6RJUdV.net] >>181 いらっしゃいませ。僕は精神病で自分は神であるという宗教妄想があるということに なっています。どこが?と聞かれると、特異点技術で死者の復活を40年後ほどに しようと思っています。タイムマシンには何回か遭ってます。 >>182 ->>184 仰る通りにしたら、描画できました。 >>185 もうちょっと議論してからやりたいです。 ・何が目的か? ・お金になるか? などです。
193 名前:a4 [2019/03/26(火) 08:04:33.93 ID:6w6RJUdV.net] 「T」はまだまだ改良するところがあるとはいえ、一段落ついたので、宣伝する方法を 探しています。ご存知の方は、どこで公にしたらいいとか、教えていただけないでしょうか? 個人的にはゲーマーのような人たちには需要があり、神経コードのネットワークがそっちの 方向ですぐ発展するのではないか?と考えています。あと、単純なお金儲けの話じゃ ないんですよ。慈善活動で芸術活動で宗教活動なんです。「T」を詳しく解説した本 を売って稼ごうと思っていますが、儲かると思っていません。でも、所得が欲しい
194 名前:フ は、本当にお金が無くて僕の生死に関わるのと、あと、余裕があれば、量子コンピュータ などを開発して社会貢献したいからです。今の手持ちは25万円だけです。全部は 使えませんが、5万円くらいで広告とか出して良いかもしれません。どなたかこちら に関してご意見ある方はよろしくお願い致します。 [] [ここ壊れてます]
195 名前:a4 [2019/03/26(火) 09:13:26.64 ID:6w6RJUdV.net] またYoutuberとかやって説明動画を創ろうかな。それくらいしかとりあえずの答えが 思いつきません。結構、複雑なソフトウェアを使わさせることになるので。お金は 払ってもリターンは全く無いかもです。上述の返信を待ちつつ、しばらくこちらの 作業をします。
196 名前:a4 [2019/03/26(火) 12:33:36.61 ID:6w6RJUdV.net] 説明動画を作りました。 P2P人工知能「T」 https://youtu.be/Y7s73RB8ebQ
197 名前:デフォルトの名無しさん mailto:sage [2019/03/26(火) 19:26:17.42 ID:NbUyZWCM.net] 誰でも頭が良くなる、プログラムが書けるようになる方法が発見される 85158 https://you-can-program.hatenablog.jp
198 名前:a4 [2019/03/27(水) 07:11:14.61 ID:RPSCdWiW.net] #updateなどの特殊文字列の説明が足りないと考え、説明書を書き足し、T_4_1_8 としました。 www.01ken.com/art1.html
199 名前:a4 [2019/03/27(水) 12:59:32.71 ID:RPSCdWiW.net] 名古屋の宇宙人「俺ね、慶応大学にいちゃもんつける。どうしててめーら金持ちなのに、 東大買ってくんねーんだ!と。だから、a4君の住んでる文化は加木屋町にあるから、 「加木屋町の慶応卒」の忌み名を出そう。こう出た。いいな。 「トンデモダシTハ.」 =(トンデモだし、「T」は。| トンデモだし、「T」は小さい点| (a4が)飛んで(東大入って)モ(ザイク)だし、「T」は。| (計算速度が)トン、でも、ダシ(に使おう)、「T」は。| (逆)私大も出んと) これでいいか。ではな。」
200 名前:さまよえる蟻人間 mailto:katayama.hirofumi.mz@gmail.com [2019/03/27(水) 17:58:23.33 ID:/gFtBs7P.net] pacmanを使ってMSYS2にtoolchainをインストールせよ。 gccやg++などの開発用のツールがインストールされる。 次のようなhello.cppファイルを作成しg++でコンパイルせよ。 // hello.cpp #include <stdio.h> int main(void) { printf("Hello, world\n"); } $ g++ hello.c -o hello hello.exeができる。コマンドラインから実行してみよ。 $ ./hello
201 名前:さまよえる蟻人間 mailto:sage [2019/03/27(水) 17:59:52.04 ID:/gFtBs7P.net] pacmanを使ってMSYS2にgitとcmakeをインストールせよ。 https://github.com/katahiromz/SoundWaveStudy を次のようにクローンせよ。 $ git clone https://github.com/katahiromz/SoundWaveStudy CMakeを使って、次のようにSoundWaveStudyをビルドせよ。 $ cmake -G "MSYS Makefiles" . $ make -j2 wav2txt.exeとtxt2wav.exeが作成される。 試しに次のように実行せよ。 $ ./wav2txt.exe piano.wav $ ./txt2wav.exe --rate 44100 piano.wav.txt piano.wavと作成されたpiano.wav.txt.wavを比較せよ。 graph.pyを使って作成されたテキストファイルのグラフを描画せよ。
202 名前:さまよえる蟻人間 mailto:sage [2019/03/27(水) 18:20:51.88 ID:/gFtBs7P.net] ヒント: MSYS2から現在のフォルダを開くには「start .」を実行する。 ヒント: 現在のディレクトリ(フォルダ)をSoundWaveStudyに移動するには、「cd SoundWaveStudy」を実行する。 ヒント: 途中まで入力してタブキーを押すと、入力補完が働くぞ。
203 名前:さまよえる蟻人間 mailto:sage [2019/03/27(水) 18:25:23.59 ID:/gFtBs7P.net] 「サンプリングレート」について調べよ。 サンプリングレートが変わると音色がどのように変わるか調べよ。 PcmWave.hppを解読せよ。
204 名前:さまよえる蟻人間 mailto:sage [2019/03/27(水) 20:51:09.29 ID:X5Tg+wiF.net] 三回まで質問を受け付ける。
205 名前:さまよえる蟻人間 mailto:sage [2019/03/27(水) 22:20:03.15 ID:X5Tg+wiF.net] 8-bitのPCM波形データは、uint8_t (0から255までの値)の並びで表す。 16-bitのPCM波形データは、int16_t (-32768から32767までの値)の並びで表す。そういう決まりだ。 ステレオならチャンネルは2個で、左・右の順でサンプルが並ぶ。モノラルならチャンネルは1個。
206 名前:さまよえる蟻人間 mailto:sage [2019/03/27(水) 22:27:21.80 ID:X5Tg+wiF.net] ヘルツ(Hz)というのは一秒あたりの振動数を表す単位。例えば2Hzは一秒間に2回回るということだ。 振動数の逆数が周期に相当する。例えば2Hzの場合、周期は0.5秒だ。
207 名前:さまよえる蟻人間 mailto:sage [2019/03/27(水) 22:38:30.32 ID:X5Tg+wiF.net] 人間は「可聴域」(かちょういき)という振動数の範囲で音声を知覚する。 可聴域から外れた範囲の音は人間には聞こえない。 音声の品質は用途により、要求が異なる。電話やラジオの音声、コンパクトディスク(CD)の音声、ハイレゾの音声など。
208 名前:a4 [2019/03/28(木) 06:00:22.83 ID:2HvS2Y4V.net] 速報なんですが、インドの彼女は揉め事を起こしてしまったので、ふってしまいました。 まだ彼女募集中ですが、好みのタイプは?と聞かれてたら、頭いい人かな。 今から風呂入ってきて、それから、さまよえる蟻人間さんの問題を解決します。
209 名前:デフォルトの名無しさん [2019/03/28(木) 06:45:48.97 ID:2HvS2Y4V.net] >>194 >>197 owner@owner-PC MINGW32 ~/msys2 $ git clone https://github.com/katahiromz/SoundWaveStudy Cloning into 'SoundWaveStudy'... 1 [main] git-remote-https 7672 child_info_fork::abort: C:\msys32\usr\bin\msys-unistring-2.dll: Loaded to different address: parent(0x770000) != child(0x5B0000) error: cannot fork() for fetch-pack: Resource temporarily unavailable このエラーはどうしたら解決できるのでしょうか?
210 名前:a4 [2019/03/28(木) 06:46:27.89 ID:2HvS2Y4V.net] おっと名前付け忘れました。>>202 はa4です。
211 名前:さまよえる蟻人間 mailto:sage [2019/03/28(木) 08:13:16.91 ID:FIMI7Fmb.net] >>202 rebaseallを試せ
212 名前:a4 [2019/03/28(木) 11:16:08.59 ID:2HvS2Y4V.net] >>204 解答ありがとうございます。そこは解決しました。 SoundWaveStudyフォルダに入って、mingw-w64-i686-cmakeをダウンロード して、MSYS Makefilesを使えるようにしたんですが、まだエラーが出ます。 owner@owner-PC MINGW32 ~/msys2/SoundWaveStudy $ cmake -G "MSYS Makefiles" . CMake Error: CMake was unable to find a build program corresponding to "MSYS Makefiles". CMAKE_MAKE_PROGRAM is not set. You probably need to select a different build tool. CMake Error: CMake was unable to find a build program corresponding to "MSYS Makefiles". CMAKE_MAKE_PROGRAM is not set. You probably need to select a different build tool. CMake Error: CMAKE_CXX_COMPILER not set, after EnableLanguage CMake Error: CMAKE_AR was not found, please set to archive program. -- Configuring incomplete, errors occurred! これは解決方法はあるのでしょうか?
213 名前:デフォルトの名無しさん [2019/03/28(木) 13:19:36.66 ID:SbTQZ/FF.net] おそらくmakeとg++がインストールされてない。
214 名前:デフォルトの名無しさん [2019/03/28(木) 13:37:29.23 ID:SbTQZ/FF.net] https://blogs.osdn.jp/2018/01/30/msys2-mingw.html
215 名前:a4 [2019/03/28(木) 15:15:22.04 ID:2HvS2Y4V.net] >>206 情報ありがとうございます。それで、piano.wav.txtの生成までは上手くいきました。
216 名前:a4 [2019/03/28(木) 16:19:45.33 ID:2HvS2Y4V.net] >>194 graph.pyでsep=' 'にしたら、描画に成功しました。
217 名前:a4 [2019/03/28(木) 16:28:10.73 ID:2HvS2Y4V.net] >>196 サンプリングレートは下がるとその半分の周波数以下ほどの音しか綺麗に録音できなく なりますね。 C++は得意なつもりなので、PcmWave.hppは流し読みです。
218 名前:a4 [2019/03/28(木) 17:44:28.92 ID:2HvS2Y4V.net] 原因不明のメモリエラーがありますが、1GBのファイルまで送受信できるように しました。あと、クライアントがサーバーに接続成功しても#connectが届くように しました。T_4_1_9です。 www.01ken.com/art1.html
219 名前:a4 [2019/03/28(木) 19:33:04.33 ID:2HvS2Y4V.net] そろそろWikipediaに載せれるの
220 名前:ではないか?と考えるようになったのですが、記事を 書いたことは無いので、詳しい方いたら、ご連絡いただければと思います。 [] [ここ壊れてます]
221 名前:a4 [2019/03/28(木) 19:54:41.83 ID:2HvS2Y4V.net] 調べてるんですが、まず、 https://ja.wikipedia.org/wiki/Wikipedia:%E3%82%A6%E3%82%A3%E3%82%AD%E3%83%9A%E3%83%87%E3%82%A3%E3%82%A2%E3%81%B8%E3%82%88%E3%81%86%E3%81%93%E3%81%9D 「大前提として、著作権の侵害は絶対に行ってはいけません。」 ですが、 https://ja.wikipedia.org/wiki/Winny Winnyは記事になってますし、僕はリーマン予想を数学基礎論から探るということで 普通に相性がいいのではないかと。あと、僕は中国語も専門用語は得意ではないですが、 書けますし、フランス語やアラビア語にも友達と一緒に翻訳できるので、上手くいけば すぐ広まるのではないかと思っています。
222 名前:さまよえる蟻人間 mailto:sage [2019/03/28(木) 20:36:42.95 ID:FIMI7Fmb.net] C++が得意だと言ったな? いい度胸だ。。。 今、SoundWaveStudyを更新した。git pullでローカルを更新せよ。 play.cppは、PlaySound関数を使ってWAV音声ファイルを再生するだけのWin32プログラムだ。Windows以外のOSでは動かない。 wav2wav.cppは、WAVファイルを別のWAVファイルに変換するプログラムだが、不完全だ。mono_to_stereo関数を完成させて、再びmakeしてステレオ音声になるか確かめよ。
223 名前:さまよえる蟻人間 mailto:sage [2019/03/28(木) 20:40:01.66 ID:FIMI7Fmb.net] データの変換は基本中の基本だ。 動画や音声のコンテンツを扱うサイトや、音声データの研究では どうしてもデータ変換が必要になる。
224 名前: mailto:sage [2019/03/28(木) 20:43:52.73 ID:3LZYwZb1.net] >>214 >C/C++が得意だと言ったな? たしかにおいそれとは口にできない台詞ですね…私が歳なだけかも?
225 名前:a4 [2019/03/28(木) 21:14:23.58 ID:2HvS2Y4V.net] >>214 ->>216 C++をずっと使ってるだけです。難しい使い方も勉強したことありますが、シンプル な方法でずっと書いてます。コンパイラ開発経験があり、機械語レベルで何やってる のかわかるので、普通に書いてるだけです。でも、集団開発は苦手かもしれません。 今日はこれから寝るので、明日の朝くらいからします。おやすみなさい。
226 名前:a4 [2019/03/29(金) 08:55:32.83 ID:lpOPYMih.net] >>214 play.cppのほうは、とりあえず、 owner@owner-PC MINGW32 ~/msys2/SoundWaveStudy $ g++ play.cpp -o play.exe -lwinmm で成功しました。
227 名前:さまよえる蟻人間 mailto:sage [2019/03/29(金) 09:19:52.32 ID:GJ2qIBd+.net] >>218 CMakeLists.txtがあるんだから、cmakeとmakeでビルドすればいいのに。
228 名前:a4 [2019/03/29(金) 10:43:50.53 ID:lpOPYMih.net] #include <windows.h> #include <mmsystem.h> #include <cstdio> #include "wav2wav.cpp" int main(int argc, char **argv) { char *pc1 = new char[256]; char *pc2 = new char[256]; PcmWave pw1(1, 16, 44100, (void *)pc1, 0); PcmWave pw2(2, 16, 44100, (void *)pc2, 0); pw1.load_from_file(argv[1]); mono_to_stereo(pw1, pw2); pw2.save_to_file(argv[2]); return 0; }
229 名前:a4 [2019/03/29(金) 10:44:56.29 ID:lpOPYMih.net] bool mono_to_stereo(PcmWave& wave1, PcmWave& wave2) { switch (wave1.num_channels()){ case 1: switch (wave1.mode()) { case 8: wave2.set_info(2, wave1.mode(), wave1.sample_rate()); for (size_t i = 0; i < wave1.num_units() * wave1.num_channels(); i++) { int mono = wave1.data_8bit(i); uint8_t middle = uint8_t(mono); wave2.push_8bit(mono); wave2.push_8bit(mono); } break; case 16: wave2.set_info(2, wave1.mode(), wave1.sample_rate()); for (size_t i = 0; i < wave1.num_units() * wave1.num_channels(); i++) { int mono = wave1.data_1
230 名前:6bit(i); int16_t middle = int16_t(mono); wave2.push_16bit(mono); wave2.push_16bit(mono); } break; [] [ここ壊れてます]
231 名前:a4 [2019/03/29(金) 10:46:11.79 ID:lpOPYMih.net] default: // must be stereo assert(0); return false; } break; case 2: default: assert(0); return false; break; } wave2.update_info(); return true; }
232 名前:a4 [2019/03/29(金) 10:47:47.82 ID:lpOPYMih.net] >>214 とりあえず仰ることができました。 >>219 それについては勉強してみます。
233 名前:a4 [2019/03/29(金) 13:09:20.60 ID:lpOPYMih.net] Wikipediaに書こうと思っているのですが、まだネットワークがきちんとできてないのに、 Wikipedia:独自研究は載せない https://ja.wikipedia.org/wiki/Wikipedia:%E7%8B%AC%E8%87%AA%E7%A0%94%E7%A9%B6%E3%81%AF%E8%BC%89%E3%81%9B%E3%81%AA%E3%81%84 あたりで削除されそうで書けません。
234 名前:さまよえる蟻人間 mailto:sage [2019/03/29(金) 14:38:00.83 ID:GJ2qIBd+.net] >>221 よくできた。褒めて遣わすぞ。 SoundWaveStudyを再び更新した。「git checkout .」で変更前に戻して、 「git pull」でローカルを更新してくれ。 次は、bits per sample (mode)の変換だ。mode_16bit_to_8bit関数を参考に、 mode_8bit_to_16bitを完成せよ。
235 名前:さまよえる蟻人間 mailto:sage [2019/03/29(金) 14:49:50.58 ID:GJ2qIBd+.net] サンプルレートが8000Hzでサンプルが16000個あるモノラル音声の長さは 何秒になるか?
236 名前:さまよえる蟻人間 mailto:sage [2019/03/29(金) 15:00:15.80 ID:R1IYRCTv.net] PcmWaveに音声の長さ(秒数)を返すメソッドfloat PcmWave::seconds() constを追加せよ。
237 名前:a4 [2019/03/29(金) 15:28:21.08 ID:lpOPYMih.net] bool mode_8bit_to_16bit(PcmWave& wave1, PcmWave& wave2) { interpolation_test(); if (wave1.mode() != 8) { assert(0); return false; } switch (wave1.num_channels()) { case 1: wave2.set_info(1, 16, wave1.sample_rate()); for (size_t i = 0; i < wave1.num_units() * wave1.num_channels(); i++) { int value = wave1.data_8bit(i); assert(0 <= value && value <= 255); value <<= 8; value -= 32768; assert(-32768 <= value && value <= 32767); wave2.push_16bit(uint16_t(value)); } break;
238 名前:a4 [2019/03/29(金) 15:28:55.35 ID:lpOPYMih.net] case 2: wave2.set_info(2, 16, wave1.sample_rate()); for (size_t i = 0; i < wave1.num_units() * wave1.num_channels(); i += 2) { int left = wave1.data_8bit(i); int right = wave1.data_8bit(i + 1); assert(0 <= left && left <= 255); assert(0 <= right && right <= 255); left <<= 8; right <<= 8; left -= 32768; right -= 32768; assert(-32768 <= left && left <= 32767); assert(-32768 <= right && right <= 32767); wave2.push_16bit(uint16_t(left)); wave2.push_16bit(uint16_t(right)); } break; default: assert(0); return false; } wave2.update_info(); return true; }
239 名前:a4 [2019/03/29(金) 15:31:21.66 ID:lpOPYMih.net] >>226 2秒?
240 名前:さまよえる蟻人間 mailto:sage [2019/03/29(金) 15:40:52.66 ID:R1IYRCTv.net] >>228 >value <<= 8; >value -= 32768; uint8_tの最大値255については、256倍の65,280になって、32768を引くんだから32,512になる。これは間違ってる。 素直に用意されたlinear_interpolation関数使え。
241 名前:さまよえる蟻人間 mailto:sage [2019/03/29(金) 15:41:14.49 ID:R1IYRCTv.net] >>230 正解。
242 名前:a4 [2019/03/29(金) 15:55:36.14 ID:lpOPYMih.net] >>227 float PcmWave::seconds() const { return m_wave.Subchunk2Size / m_wave.NumChannels / m_wave.SampleRate / (m_wave.BitsPerSample / 8); }
243 名前:a4 [2019/03/29(金) 16:00:34.89 ID:lpOPYMih.net] bool mode_8bit_to_16bit(PcmWave& wave1, PcmWave& wave2) { interpolation_test(); if (wave1.mode() != 8) { assert(0); return false; } switch (wave1.num_channels()) { case 1: wave2.set_info(1, 16, wave1.sample_rate()); for (size_t i = 0; i < wave1.num_units() * wave1.num_channels(); i++) { int value = wave1.data_8bit(i); assert(0 <= value && value <= 255); value = linear_interpolation(value, 0, 255, -32768, 32767); assert(-32768 <= value && value <= 32767); wave2.push_16bit(uint16_t(value)); } break;
244 名前:a4 [2019/03/29(金) 16:01:00.04 ID:lpOPYMih.net] case 2: wave2.set_info(2, 16, wave1.sample_rate()); for (size_t i = 0; i < wave1.num_units() * wave1.num_channels(); i += 2) { int left = wave1.data_8bit(i); int right = wave1.data_8bit(i + 1); assert(0 <= left && left <= 255); assert(0 <= right && right <= 255); left = linear_interpolation(left, 0, 255, -32768, 32767); right = linear_interpolation(right, 0, 255, -32768, 32767); assert(-32768 <= left && left <= 32767); assert(-32768 <= right && right <= 32767); wave2.push_16bit(uint16_t(left)); wave2.push_16bit(uint16_t(right)); } break; default: assert(0); return false; } wave2.update_info(); return true; }
245 名前:さまよえる蟻人間 mailto:sage [2019/03/29(金) 16:08:09.14 ID:GJ2qIBd+.net] >>235 uint16_tじゃなくてint16_tだ。他はOK.
246 名前:さまよえる蟻人間 mailto:sage [2019/03/29(金) 16:14:59.91 ID:GJ2qIBd+.net] >>233 正解。ただ、整数同士の割り算は整数になって精度が低下する。この場合戻り値の型がfloatだから事前にfloatにキャストした方がいいだろう。 float PcmWave::seconds() const { return float(m_wave.Subchunk2Size) / m_wave.NumChannels / m_wave.SampleRate / (m_wave.BitsPerSample / 8); }
247 名前:a4 [2019/03/29(金) 16:16:27.52 ID:lpOPYMih.net] >>236 はい。指導ありがとうございます。 まだ何かありますでしょうか?さまよえる蟻人間さんの目的は?
248 名前:a4 [2019/03/29(金) 16:19:51.42 ID:lpOPYMih.net] >>237 float PcmWave::seconds() const { return (float)m_wave.Subchunk2Size / (float)m_wave.NumChannels / (float)m_wave.SampleRate / ((float)m_wave.BitsPerSample / 8); }
249 名前:さまよえる蟻人間 mailto:sage [2019/03/29(金) 16:43:42.02 ID:GJ2qIBd+.net] SoundWaveStudyを更新した。これでwav2wavは完成だ。 g++に-DWAV2WAVを付けてwav2wav2.cppをコンパイルすればwav2wav.exeができる。 試してみ給え。 まとめ。 ・WAV音声をテキストファイルに変換できた。 ・テキストファイルをWAV音声に変換できた。 ・テキストファイルの波形を折れ線グラフとして表示できた。 ・WAVの
250 名前:データ形式(8ビット/16ビット、モノラル/ステレオ)の変換ができた。 ・コマンドラインでWAV音声を再生できた。 [] [ここ壊れてます]
251 名前:さまよえる蟻人間 mailto:sage [2019/03/29(金) 16:50:07.55 ID:GJ2qIBd+.net] $ ./wav2wav.exe piano.wav --channels 1 --mode 8 piano.wav: 44100 Hz sampling, 16-bit, 2 channel (7.2 seconds) piano.wav.wav: 44100 Hz sampling, 8-bit, 1 channel (3.6 seconds) 'piano.wav' --> 'piano.wav.wav' (OK) ちょっと待ってよ。7.2秒が3.6秒に減っている。何かが間違えている。 バグを探してみよう。
252 名前:a4 [2019/03/29(金) 16:54:49.41 ID:lpOPYMih.net] >>240 はい。試しました。 ボランティアの指導が終わったのであれば、「T」の開発に戻ります。
253 名前:さまよえる蟻人間 mailto:sage [2019/03/29(金) 16:59:44.35 ID:GJ2qIBd+.net] いくつかモノラル音声のwave1に対して for (size_t i = 0; i < wave1.num_units() * wave1.num_channels(); i += 2) を for (size_t i = 0; i < wave1.num_units() * wave1.num_channels(); ++i) に修正。これでOK。 これにて指導終了。
254 名前:a4 [2019/03/29(金) 17:06:48.27 ID:lpOPYMih.net] >>241 いくつかの「i += 2」を「i++」にしたら上手くいきました。
255 名前:a4 [2019/03/29(金) 17:07:25.76 ID:lpOPYMih.net] >>243 はい。ありがとうございました。
256 名前:a4 [2019/03/29(金) 17:24:12.96 ID:lpOPYMih.net] テレパシーでみんなと話してるのですが、自動で音声付き動画の生成をやろうと思って いるのですが、逆にビッグデータを使わないで、純粋数学の手法で、量産していく方針 にできないか?と話していますが、まだ研究中にします。
257 名前:a4 [2019/03/29(金) 17:27:52.18 ID:lpOPYMih.net] 名古屋の宇宙人「俺ね、いろんな普通のSFホラーの動画を作りたいって言ってたけど、 それは後にする。みんな集まってからだな。それまでは本当に数人くらいで、並列 計算するだけで、ビッグデータはダウンロードしにくいように牛耳られてるから、 これでひとまず開発させてみる。また変わるかもだな。ではな。」
258 名前:a4 [2019/03/29(金) 17:42:58.60 ID:lpOPYMih.net] 議論してるんですけど、普通に考えると、確率文法などで生成された文字列に対し、 評価を行います。動画や音声の数学ってなんだろう?と思ったんですけど、基本は 神経細胞にしたいです。EPFLのBlue Brainでやっているような。それで、例えば、 新しい「素数が無限に存在することの証明」の動画が量産(ここまでできると思って ないがイメージ)みたいなことができないかと。あと、単純に考えているのは、 関数がメタ的に関数を書いて呼び出したりするところです。もうちょっと練ります。
259 名前:a4 [2019/03/29(金) 18:26:21.15 ID:lpOPYMih.net] まず重要に思った点は ・短期記憶 ・長期記憶 ・遺伝子 です。 音声は、短期記憶によって繰り返しを認識してテンポに乗ります。長期記憶と関連して、 学習すると、次の曲じゃないと駄目になります。遺伝子は異性の声とかの認識ですが、 ここを「T」は逆に確率文法にして数学的に一般化しようと思ってます。 Blue Brainをよく知らない方のために2分ほどの動画を紹介します。 https://www.youtube.com/watch?v=ZQTqvv6HHHY これを1:25のところの表記に直すことも考えつつ、 "PRINCIPALS OF NEURAL SCIENCE"という本を、読んでいこうと思っています。 つまり、短期記憶って、電位的にはどうなってるの?とか、学習はまだわかるけど、 DNAからどうやって顔画像の神経構造に変換されるのか?など、まだまだ全然 わからないことだらけなので、勉強、研究しようと思っています。 本当は大学院とか行ければいいんですけどね。お金が無いです。