{"id":50908,"date":"2024-07-10T00:00:00","date_gmt":"2024-07-10T07:00:00","guid":{"rendered":"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/%e6%9c%aa%e5%88%86%e9%a1%9e\/building-ai-voice-note\/"},"modified":"2026-03-30T12:53:09","modified_gmt":"2026-03-30T19:53:09","slug":"building-ai-voice-note","status":"publish","type":"post","link":"https:\/\/www.griddb.net\/ja\/%e6%9c%aa%e5%88%86%e9%a1%9e\/building-ai-voice-note\/","title":{"rendered":"AI\u30dc\u30a4\u30b9\u30ce\u30fc\u30c8\u3092\u4f5c\u6210\u3059\u308b"},"content":{"rendered":"<p>\u3053\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3067\u306f\u3001\u30d0\u30c3\u30af\u30a8\u30f3\u30c9\u306b <a href=\"https:\/\/nodejs.org\/en\/download\/\">Node.js<\/a> \u3092\u5229\u7528\u3057\u3001\u30ce\u30f3\u30d6\u30ed\u30c3\u30ad\u30f3\u30b0\u3001\u30a4\u30d9\u30f3\u30c8\u99c6\u52d5\u578b\u306e\u30a2\u30fc\u30ad\u30c6\u30af\u30c1\u30e3\u3092\u6d3b\u7528\u3059\u308b\u3053\u3068\u3067\u3001AI Voice Note \u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u9ad8\u901f\u6027\u3068\u62e1\u5f35\u6027\u3092\u78ba\u4fdd\u3057\u3066\u3044\u307e\u3059\u3002 \u307e\u305f\u3001\u5927\u91cf\u306e\u69cb\u9020\u5316\u30c7\u30fc\u30bf\u3092\u53d6\u308a\u6271\u3046\u969b\u306e\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u3068\u62e1\u5f35\u6027\u306e\u9ad8\u3055\u304b\u3089\u3001\u30c7\u30fc\u30bf\u30b9\u30c8\u30ec\u30fc\u30b8\u306b\u306f <a href=\"https:\/\/docs.griddb.net\/about\/\">GridDB<\/a> \u3092\u63a1\u7528\u3057\u307e\u3057\u305f\u3002\u3053\u308c\u306b\u3088\u308a\u3001\u97f3\u58f0\u30e1\u30e2\u304b\u3089\u751f\u6210\u3055\u308c\u308b\u8907\u96d1\u304b\u3064\u81a8\u5927\u306a\u30c7\u30fc\u30bf\u3092\u51e6\u7406\u3059\u308b\u306e\u306b\u6700\u9069\u306a\u74b0\u5883\u3092\u5b9f\u73fe\u3057\u3066\u3044\u307e\u3059\u3002OpenAI\u306e\u97f3\u58f0\u30c6\u30ad\u30b9\u30c8<a href=\"https:\/\/platform.openai.com\/docs\/guides\/speech-to-text\">\u5909\u63dbAPI<\/a>\u306f\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u4e2d\u6838\u3092\u62c5\u3044\u3001\u97f3\u58f0\u30e1\u30e2\u306e\u66f8\u304d\u8d77\u3053\u3057\u3001\u5206\u6790\u3001\u30ab\u30c6\u30b4\u30ea\u30fc\u5206\u3051\u3092\u53ef\u80fd\u306b\u3059\u308b\u9ad8\u5ea6\u306a\u81ea\u7136\u8a00\u8a9e\u51e6\u7406\u6a5f\u80fd\u3092\u5b9f\u73fe\u3057\u307e\u3059\u3002\u3053\u308c\u3089\u306e\u6280\u8853\u3092\u7d44\u307f\u5408\u308f\u305b\u308b\u3053\u3068\u3067\u3001\u79c1\u305f\u3061\u306f\u3001\u53e3\u8ff0\u3092\u6574\u7406\u3055\u308c\u305f\u691c\u7d22\u3057\u3084\u3059\u3044\u60c5\u5831\u306b\u5909\u63db\u3057\u3001\u30e1\u30e2\u306e\u4f5c\u6210\u3092\u7c21\u7d20\u5316\u3059\u308b\u3001\u5805\u7262\u3067\u52b9\u7387\u7684\u306a\u30c4\u30fc\u30eb\u306e\u958b\u767a\u3092\u76ee\u6307\u3057\u3066\u3044\u307e\u3059\u3002<\/p>\n<h2>\u30bd\u30fc\u30b9\u30b3\u30fc\u30c9<\/h2>\n<p>\u30bd\u30fc\u30b9\u30b3\u30fc\u30c9\u306f\u3053\u3061\u3089\u3067\u3059\u3002<\/p>\n<p><code>$ git clone https:\/\/github.com\/griddbnet\/Blogs.git --branch ai-voice<\/code><\/p>\n<h2>\u4ed5\u7d44\u307f\u306f?<\/h2>\n<p><a href=\"https:\/\/griddb.net\/wp-content\/uploads\/2024\/07\/project-architecture.png\"><img fetchpriority=\"high\" decoding=\"async\" src=\"https:\/\/griddb.net\/wp-content\/uploads\/2024\/07\/project-architecture.png\" alt=\"\" width=\"1278\" height=\"876\" class=\"aligncenter size-full wp-image-30164\" srcset=\"\/wp-content\/uploads\/2024\/07\/project-architecture.png 1278w, \/wp-content\/uploads\/2024\/07\/project-architecture-300x206.png 300w, \/wp-content\/uploads\/2024\/07\/project-architecture-1024x702.png 1024w, \/wp-content\/uploads\/2024\/07\/project-architecture-768x526.png 768w, \/wp-content\/uploads\/2024\/07\/project-architecture-600x411.png 600w\" sizes=\"(max-width: 1278px) 100vw, 1278px\" \/><\/a><\/p>\n<p>AI Voice Note\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u30a2\u30fc\u30ad\u30c6\u30af\u30c1\u30e3\u306f\u3001\u4ee5\u4e0b\u306e\u3044\u304f\u3064\u304b\u306e\u30b9\u30c6\u30c3\u30d7\u306b\u7c21\u7565\u5316\u3067\u304d\u307e\u3059\u3002<\/p>\n<ol>\n<li>\u30e6\u30fc\u30b6\u30fc\u306f\u30a6\u30a7\u30d6\u30a4\u30f3\u30bf\u30fc\u30d5\u30a7\u30fc\u30b9\u3092\u901a\u3058\u3066\u97f3\u58f0\u3092\u9332\u97f3\u3057\u3001\u305d\u306e\u97f3\u58f0\u30c7\u30fc\u30bf\u306fNode.js\u30b5\u30fc\u30d0\u30fc\u306b\u9001\u4fe1\u3055\u308c\u307e\u3059\u3002<\/p>\n<\/li>\n<li>Node.js\u306f\u3053\u306e\u30c7\u30fc\u30bf\u3092\u51e6\u7406\u3057\u3001\u9332\u97f3\u3092\u6c38\u7d9a\u30b9\u30c8\u30ec\u30fc\u30b8\u306bMP3\u30d5\u30a1\u30a4\u30eb\u3068\u3057\u3066\u4fdd\u5b58\u3057\u307e\u3059\u3002<\/p>\n<\/li>\n<li>\n<p>\u540c\u6642\u306b\u3001Node.js\u306fOpenAI\u306eAPI\u3068\u3084\u308a\u3068\u308a\u3057\u3001\u97f3\u58f0\u3092\u30c6\u30ad\u30b9\u30c8\u306b\u66f8\u304d\u8d77\u3053\u3057\u3001\u5185\u5bb9\u3092\u5206\u985e\u3057\u307e\u3059\u3002<\/p>\n<\/li>\n<li>\n<p>\u66f8\u304d\u8d77\u3053\u3057\u3068\u30ab\u30c6\u30b4\u30ea\u30fc\u5206\u3051\u304c\u5b8c\u4e86\u3057\u305f\u30c7\u30fc\u30bf\u306f\u3001\u30b9\u30b1\u30fc\u30e9\u30d6\u30eb\u306a NoSQL \u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3067\u3042\u308b GridDB \u306b\u4fdd\u5b58\u3055\u308c\u307e\u3059\u3002<\/p>\n<\/li>\n<\/ol>\n<p>\u3053\u306e\u51e6\u7406\u30d5\u30ed\u30fc\u306f\u3001Node.js \u3068\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u304a\u3088\u3073 AI \u30b5\u30fc\u30d3\u30b9\u3068\u306e\u53cc\u65b9\u5411\u306e\u3084\u308a\u53d6\u308a\u3067\u3042\u308a\u3001\u3053\u308c\u306b\u3088\u308a Node.js \u304c\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u5185\u306e\u30c7\u30fc\u30bf\u7ba1\u7406\u3068\u51e6\u7406\u306e\u4e2d\u5fc3\u30cf\u30d6\u3068\u3057\u3066\u6a5f\u80fd\u3057\u307e\u3059\u3002<\/p>\n<h2>\u30bb\u30c3\u30c8\u30a2\u30c3\u30d7\u3068\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb<\/h2>\n<p><a href=\"https:\/\/github.com\/junwatu\/ai-voice-note\">\u3053\u306e GitHub \u30ea\u30dd\u30b8\u30c8\u30ea<\/a>\u304b\u3089\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u30b3\u30fc\u30c9\u3092\u30af\u30ed\u30fc\u30f3\u3057\u307e\u3059\u3002<\/p>\n<div class=\"clipboard\">\n<pre><code>git clone git@github.com:junwatu\/ai-voice-note.git<\/code><\/pre>\n<\/div>\n<p>\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u3092 <code>app<\/code> \u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306b\u5909\u66f4\u3057\u307e\u3059\u3002<\/p>\n<div class=\"clipboard\">\n<pre><code class=\"language-sh\">cd ai-voice-note\ncd app<\/code><\/pre>\n<\/div>\n<p><code>npm<\/code> \u30b3\u30de\u30f3\u30c9\u3092\u4f7f\u7528\u3057\u3066\u4f9d\u5b58\u95a2\u4fc2\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u307e\u3059\u3002<\/p>\n<div class=\"clipboard\">\n<pre><code>npm install<\/code><\/pre>\n<\/div>\n<p><code>.env<\/code>\u30d5\u30a1\u30a4\u30eb\u3092\u4f5c\u6210\u3059\u308b\u304b\u3001<code>.env.example<\/code>\u304b\u3089\u30b3\u30d4\u30fc\u3057\u3001\u4ee5\u4e0b\u306e\u74b0\u5883\u5909\u6570\u30ad\u30fc\u3092\u8a2d\u5b9a\u3057\u307e\u3059\u3002<\/p>\n<table>\n<thead>\n<tr>\n<th>Environment Variable Key<\/th>\n<th>Description<\/th>\n<th>Value<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><code>OPENAI_API_KEY<\/code><\/td>\n<td>Key for authenticating API requests to OpenAI.<\/td>\n<td>(Your actual OpenAI API key)<\/td>\n<\/tr>\n<tr>\n<td><code>VITE_API_URL<\/code><\/td>\n<td>The base URL of the Vite application&#8217;s backend API.<\/td>\n<td><code>http:\/\/localhost:3000<\/code><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>\u30c7\u30d5\u30a9\u30eb\u30c8\u306e <code>VITE_API_URL<\/code> \u3092\u81ea\u7531\u306b\u5909\u66f4\u3057\u3066\u304b\u307e\u3044\u307e\u305b\u3093\u3002\u305f\u3060\u3057\u3001\u5909\u66f4\u3057\u305f\u5834\u5408\u306f\u3001\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u3053\u306e\u30b3\u30de\u30f3\u30c9\u3067\u30d3\u30eb\u30c9\u3059\u3079\u304d\u3067\u3059\u3002<\/p>\n<div class=\"clipboard\">\n<pre><code>npm run build<\/code><\/pre>\n<\/div>\n<p>\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u5b9f\u884c\u3059\u308b\u306b\u306f\u3001\u6b21\u306e\u30b3\u30de\u30f3\u30c9\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002<\/p>\n<div class=\"clipboard\">\n<pre><code>npm run start<\/code><\/pre>\n<\/div>\n<p>\u30c7\u30d5\u30a9\u30eb\u30c8\u3067\u306f\u30013000\u3067\u30dd\u30fc\u30c8\u304c\u5b9f\u884c\u3055\u308c\u3066\u3044\u307e\u3059\u3002<strong>AI\u30dc\u30a4\u30b9\u30ce\u30fc\u30c8<\/strong>\u30a2\u30d7\u30ea\u3092\u958b\u304f\u306b\u306f\u3001Google Chrome\u30d6\u30e9\u30a6\u30b6\u3092\u4f7f\u7528\u3059\u308b\u3053\u3068\u3092\u304a\u52e7\u3081\u3057\u307e\u3059\u3002<\/p>\n<div class=\"clipboard\">\n<pre><code>http:\/\/localhost:3000<\/code><\/pre>\n<\/div>\n<p><a href=\"https:\/\/griddb.net\/wp-content\/uploads\/2024\/07\/Screenshot-2024-04-12-at-10.46.45.png\"><img decoding=\"async\" src=\"https:\/\/griddb.net\/wp-content\/uploads\/2024\/07\/Screenshot-2024-04-12-at-10.46.45.png\" alt=\"\" width=\"1944\" height=\"1088\" class=\"aligncenter size-full wp-image-30161\" srcset=\"\/wp-content\/uploads\/2024\/07\/Screenshot-2024-04-12-at-10.46.45.png 1944w, \/wp-content\/uploads\/2024\/07\/Screenshot-2024-04-12-at-10.46.45-300x168.png 300w, \/wp-content\/uploads\/2024\/07\/Screenshot-2024-04-12-at-10.46.45-1024x573.png 1024w, \/wp-content\/uploads\/2024\/07\/Screenshot-2024-04-12-at-10.46.45-768x430.png 768w, \/wp-content\/uploads\/2024\/07\/Screenshot-2024-04-12-at-10.46.45-1536x860.png 1536w, \/wp-content\/uploads\/2024\/07\/Screenshot-2024-04-12-at-10.46.45-150x85.png 150w, \/wp-content\/uploads\/2024\/07\/Screenshot-2024-04-12-at-10.46.45-600x336.png 600w\" sizes=\"(max-width: 1944px) 100vw, 1944px\" \/><\/a><\/p>\n<p>\u3053\u306e\u30a6\u30a7\u30d6\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306f\u30de\u30a4\u30af\u3078\u306e\u30a2\u30af\u30bb\u30b9\u6a29\u9650\u3092\u5fc5\u8981\u3068\u3057\u307e\u3059\u3002\u30c7\u30d5\u30a9\u30eb\u30c8\u306e\u30de\u30a4\u30af\u304b\u3089\u97f3\u58f0\u3092\u9332\u97f3\u3059\u308b\u306b\u306f\u3001\u30a2\u30af\u30bb\u30b9\u3092\u8a31\u53ef\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n<p><a href=\"https:\/\/griddb.net\/wp-content\/uploads\/2024\/07\/mic-access.png\"><img decoding=\"async\" src=\"https:\/\/griddb.net\/wp-content\/uploads\/2024\/07\/mic-access.png\" alt=\"\" width=\"1782\" height=\"1320\" class=\"aligncenter size-full wp-image-30163\" srcset=\"\/wp-content\/uploads\/2024\/07\/mic-access.png 1782w, \/wp-content\/uploads\/2024\/07\/mic-access-300x222.png 300w, \/wp-content\/uploads\/2024\/07\/mic-access-1024x759.png 1024w, \/wp-content\/uploads\/2024\/07\/mic-access-768x569.png 768w, \/wp-content\/uploads\/2024\/07\/mic-access-1536x1138.png 1536w, \/wp-content\/uploads\/2024\/07\/mic-access-600x444.png 600w\" sizes=\"(max-width: 1782px) 100vw, 1782px\" \/><\/a><\/p>\n<h2>\u97f3\u58f0\u9332\u97f3<\/h2>\n<p><a href=\"https:\/\/github.com\/samhirtarif\/react-audio-recorder\">React Audio Recorder<\/a> \u306f\u3001React\u7528\u306e\u97f3\u58f0\u9332\u97f3\u30d8\u30eb\u30d1\u30fc\u3067\u3059\u3002\u97f3\u58f0\u9332\u97f3\u3092\u652f\u63f4\u3059\u308b\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u3068\u30d5\u30c3\u30af\u3092\u63d0\u4f9b\u3057\u3066\u304a\u308a\u3001<a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/API\/MediaRecorder\">Media Recorder<\/a>\u306a\u3069\u306eWeb API\u3092\u4f7f\u7528\u3057\u3066\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u5074\u3067\u5b9f\u884c\u3067\u304d\u307e\u3059\u3002<\/p>\n<div class=\"clipboard\">\n<pre><code class=\"language-js\">import { AudioRecorder, useAudioRecorder } from 'react-audio-voice-recorder';\n\nexport default function Home() {\n\n const apiUrl = import.meta.env.VITE_API_URL;\n \n const recorderControls = useAudioRecorder({\n  noiseSuppression: true,\n  echoCancellation: true,\n },\n  (err) =&gt; console.table(err) \/\/ onNotAllowedOrFound\n );\n const addAudioElement = (blob) =&gt; {\n  const url = URL.createObjectURL(blob);\n  const audio = document.createElement('audio');\n  audio.src = url;\n  audio.controls = true;\n  document.body.appendChild(audio);\n\n  const formData = new FormData();\n  formData.append(\"file\", blob, \"audio.webm\");\n\n  fetch(`${apiUrl}\/upload`, {\n   method: 'POST',\n   body: formData,\n  })\n   .then(response =&gt; response.json())\n   .then(data =&gt; {\n    console.log('Success:', data);\n   })\n   .catch((error) =&gt; {\n    console.error('Error:', error);\n   });\n };\n\n return (\n  &lt;div className=\"hero min-h-screen bg-base-200\"&gt;\n   &lt;div className=\"hero-content text-center\"&gt;\n    &lt;div className=\"max-w-md\"&gt;\n     &lt;h1 className=\"text-5xl font-bold\"&gt;Audio Note&lt;\/h1&gt;\n     &lt;div className='flex justify-center items-center w-full my-32'&gt;\n      &lt;AudioRecorder\n       onRecordingComplete={(blob) =&gt; addAudioElement(blob)}\n       recorderControls={recorderControls}\n       showVisualizer={true}\n      \/&gt;\n     &lt;\/div&gt;\n    &lt;\/div&gt;\n   &lt;\/div&gt;\n  &lt;\/div&gt;\n );\n}<\/code><\/pre>\n<\/div>\n<p><code>&lt;AudioRecorder&gt;<\/code> \u306f\u3001<code>onRecordingComplete()<\/code> \u30e1\u30bd\u30c3\u30c9\u3092\u30d7\u30ed\u30d1\u30c6\u30a3\u3068\u3057\u3066\u53d7\u3051\u53d6\u308a\u3001\u9332\u97f3\u3092\u4fdd\u5b58\u3059\u308b\u969b\u306b\u547c\u3073\u51fa\u3059\u3001\u3059\u3050\u306b\u4f7f\u3048\u308b\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u3067\u3059\u3002\u3053\u306e React \u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u306f\u3001Web API \u3092\u4f7f\u7528\u3057\u3066\u97f3\u58f0\u3092\u9332\u97f3\u3057\u307e\u3059\u3002\u9332\u97f3\u304c\u5b8c\u4e86\u3059\u308b\u3068\u3001\u30aa\u30fc\u30c7\u30a3\u30aa blob \u304c\u51e6\u7406\u3055\u308c\u3001Node.js \u306e <code>\/upload<\/code> \u30b5\u30fc\u30d0\u30fc\u30a8\u30f3\u30c9\u30dd\u30a4\u30f3\u30c8\u306b\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\u3055\u308c\u307e\u3059\u3002 <a href=\"https:\/\/griddb.net\/wp-content\/uploads\/2024\/07\/audio-recorder.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/griddb.net\/wp-content\/uploads\/2024\/07\/audio-recorder.png\" alt=\"\" width=\"1488\" height=\"354\" class=\"aligncenter size-full wp-image-30162\" srcset=\"\/wp-content\/uploads\/2024\/07\/audio-recorder.png 1488w, \/wp-content\/uploads\/2024\/07\/audio-recorder-300x71.png 300w, \/wp-content\/uploads\/2024\/07\/audio-recorder-1024x244.png 1024w, \/wp-content\/uploads\/2024\/07\/audio-recorder-768x183.png 768w, \/wp-content\/uploads\/2024\/07\/audio-recorder-600x143.png 600w\" sizes=\"(max-width: 1488px) 100vw, 1488px\" \/><\/a><\/p>\n<h2>Node.js \u30b5\u30fc\u30d0\u30fc\u306e\u4f5c\u6210<\/h2>\n<p>Node.js \u30b5\u30fc\u30d0\u30fc\u306f\u3001\u9332\u97f3\u3092\u6c38\u7d9a\u30b9\u30c8\u30ec\u30fc\u30b8\u306b <code>.webm<\/code> \u30d5\u30a1\u30a4\u30eb\u3068\u3057\u3066\u4fdd\u5b58\u3057\u3001\u97f3\u58f0\u30d5\u30a1\u30a4\u30eb\u3092 OpenAI \u306b\u9001\u4fe1\u3057\u3066\u97f3\u58f0\u8a8d\u8b58\u3092\u884c\u3044\u307e\u3059\u3002<\/p>\n<p>Node.js \u30b5\u30fc\u30d0\u30fc\u306f\u3001<code>\/upload<\/code> \u30a8\u30f3\u30c9\u30dd\u30a4\u30f3\u30c8\u3067 <strong>POST<\/strong> \u30ea\u30af\u30a8\u30b9\u30c8\u3092\u51e6\u7406\u3059\u308b Express \u30b5\u30fc\u30d0\u30fc\u30eb\u30fc\u30c8\u3092\u8a2d\u5b9a\u3057\u307e\u3059\u3002\u30ea\u30af\u30a8\u30b9\u30c8\u304b\u3089\u306e\u5358\u4e00\u30d5\u30a1\u30a4\u30eb\u306e\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\u3092\u51e6\u7406\u3059\u308b\u305f\u3081\u306b\u3001<code>multer<\/code> \u30df\u30c9\u30eb\u30a6\u30a7\u30a2\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002<\/p>\n<div class=\"clipboard\">\n<pre><code class=\"language-js\">app.post('\/upload', upload.single('file'), async (req, res) => {\n if (req.file) {\n  const filePath = join(__dirname, 'uploads', req.file.filename);\n\n  try {\n   const transcription = await openai.audio.transcriptions.create\n   ({\n    file: fs.createReadStream(filePath),\n    model: \"whisper-1\",\n   });\n\n   console.log(transcription.text);\n\n   \/\/ eslint-disable-next-line no-unused-vars\n   const speechData = {\n    filename: filePath,\n    text: transcription.text,\n    category: \"voice note\"\n   }\n\n   \/\/ Process data to GridDB database\n   \/\/ Save the transcription data to GridDB\n   const saveStatus = await saveData(speechData);\n\n   res.json({\n    message: 'Successfully uploaded file and saved data',\n    transcription: transcription.text,\n    saveStatus: saveStatus\n   });\n  } catch (error) {\n   console.error('Error during transcription:', error);\n   res.status(500).json({ message: 'Error during transcription', error: error.message });\n  }\n } else {\n  res.status(400).json({ message: 'No file uploaded' });\n }\n});<\/code><\/pre>\n<\/div>\n<p>\u9332\u97f3\u3055\u308c\u305f\u30aa\u30fc\u30c7\u30a3\u30aa\u30d5\u30a1\u30a4\u30eb\u304c\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\u3055\u308c\u308b\u3068\u3001\u901a\u5e38\u306f\u4ee5\u4e0b\u306e\u3088\u3046\u306a\u51e6\u7406\u304c\u884c\u308f\u308c\u307e\u3059\u3002<\/p>\n<ol>\n<li>\u30b5\u30fc\u30d0\u30fc\u306f\u3001\u30ab\u30ec\u30f3\u30c8\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u3068\u300cuploads\u300d\u30b5\u30d6\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306b\u57fa\u3065\u3044\u3066\u3001\u30d5\u30a1\u30a4\u30eb\u306e\u30d1\u30b9\u3092\u751f\u6210\u3057\u307e\u3059\u3002<\/li>\n<li>OpenAI\u306e\u97f3\u58f0\u8ee2\u5199API\u3092\u4f7f\u7528\u3057\u3066\u3001<a href=\"https:\/\/platform.openai.com\/docs\/models\/whisper\">\u300cwhisper-1\u300d<\/a>\u30e2\u30c7\u30eb\u3092\u4f7f\u7528\u3057\u3066\u97f3\u58f0\u30d5\u30a1\u30a4\u30eb\u3092\u30c6\u30ad\u30b9\u30c8\u306b\u8ee2\u5199\u3057\u3088\u3046\u3068\u8a66\u307f\u307e\u3059\u3002<\/li>\n<li>\u6210\u529f\u3057\u305f\u5834\u5408\u3001\u8ee2\u5199\u7d50\u679c\u3092\u30b3\u30f3\u30bd\u30fc\u30eb\u306b\u8a18\u9332\u3057\u3001\u30d5\u30a1\u30a4\u30eb\u30d1\u30b9\u3001\u8ee2\u5199\u30c6\u30ad\u30b9\u30c8\u3001\u30cf\u30fc\u30c9\u30b3\u30fc\u30c9\u3055\u308c\u305f\u300c\u30dc\u30a4\u30b9\u30e1\u30e2\u300d\u306e\u30ab\u30c6\u30b4\u30ea\u30fc\u3092\u542b\u3080\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002<\/li>\n<li>\u3053\u306e\u30c7\u30fc\u30bf\u3092GridDB\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306b\u4fdd\u5b58\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002<\/li>\n<li>\u305d\u306e\u5f8c\u3001\u30b5\u30fc\u30d0\u30fc\u306f\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u306b\u6210\u529f\u3092\u901a\u77e5\u3059\u308bJSON\u5f62\u5f0f\u306e\u5fdc\u7b54\u3092\u9001\u4fe1\u3057\u3001\u66f8\u304d\u8d77\u3053\u3057\u30c6\u30ad\u30b9\u30c8\u3092\u542b\u3081\u307e\u3059\u3002<\/li>\n<li>\u66f8\u304d\u8d77\u3053\u3057\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u305f\u5834\u5408\u306f\u3001\u30a8\u30e9\u30fc\u3092\u8a18\u9332\u3057\u3001\u30a8\u30e9\u30fc\u30e1\u30c3\u30bb\u30fc\u30b8\u3068\u3068\u3082\u306b500\u30b9\u30c6\u30fc\u30bf\u30b9\u3092\u8fd4\u3057\u307e\u3059\u3002<\/li>\n<li>\u97f3\u58f0\u30d5\u30a1\u30a4\u30eb\u304c\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\u3055\u308c\u3066\u3044\u306a\u3044\u5834\u5408\u306f\u3001<code>400<\/code>\u30b9\u30c6\u30fc\u30bf\u30b9\u3092\u8fd4\u3057\u3066\u30ea\u30af\u30a8\u30b9\u30c8\u304c\u4e0d\u6b63\u3067\u3042\u308b\u3053\u3068\u3092\u793a\u3057\u307e\u3059\u3002<\/li>\n<\/ol>\n<h3>\u30eb\u30fc\u30c8<\/h3>\n<p>server.js\u30d5\u30a1\u30a4\u30eb\u306f\u3001\u97f3\u58f0\u30c7\u30fc\u30bf\u306e\u4fdd\u5b58\u3068\u53d6\u5f97\u306e\u305f\u3081\u306e\u30eb\u30fc\u30c8\u3092\u63d0\u4f9b\u3057\u307e\u3059\u3002\u4ee5\u4e0b\u306f\u3001Node.js\u30b5\u30fc\u30d0\u30fc\u3067\u5b9a\u7fa9\u3055\u308c\u305f\u30eb\u30fc\u30c8\u306e\u6982\u8981\u3092\u307e\u3068\u3081\u305f\u8868\u3067\u3059\u3002\u30e1\u30bd\u30c3\u30c9\u3001\u30d1\u30b9\u3001\u8aac\u660e\u3092\u542b\u307f\u307e\u3059\u3002<\/p>\n<table>\n<thead>\n<tr>\n<th>Method<\/th>\n<th>Path<\/th>\n<th>Description<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>POST<\/td>\n<td><code>\/upload<\/code><\/td>\n<td>\u30d5\u30a1\u30a4\u30eb\u3092\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\u3057\u3001\u30c6\u30ad\u30b9\u30c8\u5316\u3057\u3001\u30aa\u30d7\u30b7\u30e7\u30f3\u3067\u30c7\u30fc\u30bf\u3092\u4fdd\u5b58\u3057\u307e\u3059.<\/td>\n<\/tr>\n<tr>\n<td>POST<\/td>\n<td><code>\/save-data<\/code><\/td>\n<td>\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306b\u63d0\u4f9b\u3055\u308c\u305f\u30c7\u30fc\u30bf(\u30d5\u30a1\u30a4\u30eb\u540d\u3001\u30c6\u30ad\u30b9\u30c8\u3001\u30ab\u30c6\u30b4\u30ea\u30fc)\u3092\u4fdd\u5b58\u3057\u307e\u3059\u3002<\/td>\n<\/tr>\n<tr>\n<td>GET<\/td>\n<td><code>\/data\/:id<\/code><\/td>\n<td>\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u304b\u3089\u7279\u5b9a\u306eID\u306e\u30c7\u30fc\u30bf\u3092\u53d6\u5f97\u3057\u307e\u3059\u3002<\/td>\n<\/tr>\n<tr>\n<td>GET<\/td>\n<td><code>\/all-data<\/code><\/td>\n<td>\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u304b\u3089\u3059\u3079\u3066\u306e\u30c7\u30fc\u30bf\u30a8\u30f3\u30c8\u30ea\u3092\u53d6\u5f97\u3057\u307e\u3059\u3002<\/td>\n<\/tr>\n<tr>\n<td>GET<\/td>\n<td><code>\/info<\/code><\/td>\n<td>GridDB\u30b3\u30f3\u30c6\u30ca\u306b\u95a2\u3059\u308b\u60c5\u5831\u3092\u63d0\u4f9b\u3057\u307e\u3059\u3002<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>\u3053\u308c\u3089\u306e\u30a8\u30f3\u30c9\u30dd\u30a4\u30f3\u30c8\u306f\u3001Express\u3001\u30d5\u30a1\u30a4\u30eb\u51e6\u7406\u7528\u306emulter\u3001\u30c7\u30fc\u30bf\u30b9\u30c8\u30ec\u30fc\u30b8\u7528\u306eGridDB\u3092\u4f7f\u7528\u3057\u3066\u3001Node.js\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u5185\u3067\u97f3\u58f0\u66f8\u304d\u8d77\u3053\u3057\u306e\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\u3068\u7ba1\u7406\u3092\u884c\u3046\u305f\u3081\u306e\u6a5f\u80fd\u3092\u307e\u3068\u3081\u3066\u6709\u52b9\u306b\u3057\u307e\u3059\u3002<\/p>\n<h2>\u97f3\u58f0\u304b\u3089\u30c6\u30ad\u30b9\u30c8\u3078\u306e\u5909\u63dbOpenAI \u3092\u4f7f\u7528<\/h2>\n<p>OpenAI \u306b\u306f\u3001\u97f3\u58f0\u3092\u30c6\u30ad\u30b9\u30c8\u306b\u5909\u63db\u3059\u308b\u6a5f\u80fd\u3001\u307e\u305f\u306f <a href=\"https:\/\/platform.openai.com\/docs\/guides\/speech-to-text\">\u97f3\u58f0\u304b\u3089\u30c6\u30ad\u30b9\u30c8\u3078\u306e\u5909\u63db<\/a>\u6a5f\u80fd\u304c\u3042\u308a\u307e\u3059\u3002 \u30aa\u30fc\u30c7\u30a3\u30aa API \u306f\u3001\u6700\u5148\u7aef\u306e\u30aa\u30fc\u30d7\u30f3\u30bd\u30fc\u30b9\u306e Large-v2 <strong>Whisper<\/strong> \u30e2\u30c7\u30eb\u306b\u57fa\u3065\u304f 2 \u3064\u306e\u97f3\u58f0\u304b\u3089\u30c6\u30ad\u30b9\u30c8\u3078\u306e\u5909\u63db\u30a8\u30f3\u30c9\u30dd\u30a4\u30f3\u30c8 <code>transcriptions<\/code> \u3068 <code>translations<\/code> \u3092\u63d0\u4f9b\u3057\u3066\u3044\u307e\u3059\u3002 \u3053\u308c\u3089\u306f\u4ee5\u4e0b\u306e\u3088\u3046\u306a\u7528\u9014\u306b\u4f7f\u7528\u3067\u304d\u307e\u3059\u3002<\/p>\n<ul>\n<li>\u97f3\u58f0\u3092\u3001\u97f3\u58f0\u304c\u53ce\u9332\u3055\u308c\u3066\u3044\u308b\u8a00\u8a9e\u306b\u66f8\u304d\u63db\u3048\u307e\u3059\u3002<\/li>\n<li>\u97f3\u58f0\u3092\u82f1\u8a9e\u306b\u7ffb\u8a33\u3057\u3001\u66f8\u304d\u8d77\u3053\u3059\u3002.<\/li>\n<\/ul>\n<p>\u73fe\u5728\u3001\u30d5\u30a1\u30a4\u30eb\u306e\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\u306f25MB\u307e\u3067\u306b\u5236\u9650\u3055\u308c\u3066\u304a\u308a\u3001\u4ee5\u4e0b\u306e\u5165\u529b\u30d5\u30a1\u30a4\u30eb\u5f62\u5f0f\u304c\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u3059\u3002 <code>mp3<\/code>\u3001<code>mp4<\/code>\u3001<code>mpeg<\/code>\u3001<code>mpga<\/code>\u3001<code>m4a<\/code>\u3001<code>wav<\/code>\u3001\u304a\u3088\u3073<code>webm<\/code>\u3002<\/p>\n<p>\u3053\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3067\u306f\u3001\u66f8\u304d\u8d77\u3053\u3057\u6a5f\u80fd\u3092\u4f7f\u7528\u3057\u3001\u30d5\u30a1\u30a4\u30eb\u5f62\u5f0f\u3092<code>webm<\/code>\u306b\u9650\u5b9a\u3057\u307e\u3059\u3002 \u30aa\u30fc\u30c7\u30a3\u30aa\u30d5\u30a1\u30a4\u30eb\u3092\u66f8\u304d\u8d77\u3053\u3059\u30b3\u30fc\u30c9:<\/p>\n<div class=\"clipboard\">\n<pre><code class=\"language-js\">const transcription = await openai.audio.transcriptions.create({\n    file: fs.createReadStream(filePath),\n    model: \"whisper-1\",\n});<\/code><\/pre>\n<\/div>\n<p>\u8ee2\u5199API\u306f\u30b9\u30c8\u30ec\u30fc\u30b8\u304b\u3089\u97f3\u58f0\u30d5\u30a1\u30a4\u30eb\u3092\u5165\u529b\u3068\u3057\u3066\u53d7\u3051\u53d6\u308a\u3001\u97f3\u58f0\u306e\u8ee2\u5199\u7d50\u679c\u3092\u8fd4\u3057\u307e\u3059\u3002\u30c7\u30d5\u30a9\u30eb\u30c8\u3067\u306f\u3001\u751f\u306e\u30c6\u30ad\u30b9\u30c8\u3092\u542b\u3080JSON\u5f62\u5f0f\u3067\u5fdc\u7b54\u3057\u307e\u3059\u3002<\/p>\n<h2>GridDB\u3078\u306e\u30c7\u30fc\u30bf\u4fdd\u5b58<\/h2>\n<p><a href=\"https:\/\/griddb.net\/ja\/\">GridDB<\/a>\u306f\u3001IoT\u3084\u30d3\u30c3\u30b0\u30c7\u30fc\u30bf\u306b\u6700\u9069\u5316\u3055\u308c\u305f\u30aa\u30fc\u30d7\u30f3\u30bd\u30fc\u30b9\u306e\u6642\u7cfb\u5217\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3067\u3059\u3002\u3057\u304b\u3057\u3001\u4e00\u822c\u7684\u306a\u30a6\u30a7\u30d6\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306b\u3082\u4f7f\u7528\u3067\u304d\u307e\u3059\u3002OpenAI\u304b\u3089\u66f8\u304d\u51fa\u3057\u305f\u30c7\u30fc\u30bf\u3092\u4fdd\u5b58\u3059\u308b\u305f\u3081\u306b\u3001\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3068\u3057\u3066GridDB\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002Node.js\u30b5\u30fc\u30d0\u30fc\u3067\u306f\u3001\u3053\u308c\u3089\u306e\u30c7\u30fc\u30bf\u304c\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306b\u4fdd\u5b58\u3055\u308c\u307e\u3059\u3002<\/p>\n<div class=\"clipboard\">\n<pre><code class=\"language-js\">const speechData = {\n    filename: filePath,\n    text: transcription.text,\n    category: \"voice note\"\n}\n\nconst saveStatus = await saveData(speechData);<\/code><\/pre>\n<\/div>\n<p>\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306b\u306f3\u3064\u306e\u30d5\u30a3\u30fc\u30eb\u30c9\u304c\u4fdd\u5b58\u3055\u308c\u307e\u3059\u3002\u91cd\u8981\u306a\u6ce8\u610f\u70b9\u3068\u3057\u3066\u3001\u3053\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3067\u306f\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306b\u30aa\u30fc\u30c7\u30a3\u30aa\u30d5\u30a1\u30a4\u30eb\u3092\u4fdd\u5b58\u305b\u305a\u3001\u30aa\u30fc\u30c7\u30a3\u30aa\u30d5\u30a1\u30a4\u30eb\u306e\u53c2\u7167(\u30d5\u30a1\u30a4\u30eb\u30d1\u30b9)\u3092\u4fdd\u5b58\u3057\u307e\u3059\u3002<\/p>\n<table>\n<thead>\n<tr>\n<th>Key<\/th>\n<th>Description<\/th>\n<th>Example Value<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><code>filename<\/code><\/td>\n<td>\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\u3055\u308c\u305f\u30aa\u30fc\u30c7\u30a3\u30aa\u30d5\u30a1\u30a4\u30eb\u304c\u4fdd\u5b58\u3055\u308c\u308b\u30d1\u30b9\u3002<\/td>\n<td><code>\/path\/to\/uploads\/audio-12345.webm<\/code><\/td>\n<\/tr>\n<tr>\n<td><code>text<\/code><\/td>\n<td>\u97f3\u58f0\u30d5\u30a1\u30a4\u30eb\u304b\u3089\u53d6\u5f97\u3057\u305f\u66f8\u304d\u8d77\u3053\u3057\u30c6\u30ad\u30b9\u30c8\u3002<\/td>\n<td>&#8220;Transcribed speech from the audio.&#8221;<\/td>\n<\/tr>\n<tr>\n<td><code>category<\/code><\/td>\n<td>\u97f3\u58f0\u30e1\u30e2\u306b\u5272\u308a\u5f53\u3066\u3089\u308c\u305f\u30e9\u30d9\u30eb\u307e\u305f\u306f\u30ab\u30c6\u30b4\u30ea\u30fc\u3002<\/td>\n<td>&#8220;voice note&#8221;<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>saveData()\u30e1\u30bd\u30c3\u30c9\u306f\u3001\u30aa\u30fc\u30c7\u30a3\u30aa\u30c7\u30fc\u30bf\u3092GridDB\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306b\u4fdd\u5b58\u3057\u307e\u3059\u3002griddbservice.js\u30d5\u30a1\u30a4\u30eb\u306bsaveData()\u306e\u30b3\u30fc\u30c9\u304c\u3042\u308a\u307e\u3059\u3002<\/p>\n<div class=\"clipboard\">\n<pre><code class=\"language-js\">export async function saveData({ filename, text, category }) {\n const id = generateRandomID();\n const sfilename = String(filename);\n const speechText = String(text);\n const scategory = String(category);\n\n const packetInfo = [parseInt(id), sfilename, speechText, scategory];\n const saveStatus = await GridDB.insert(packetInfo, collectionDb);\n return saveStatus;\n}<\/code><\/pre>\n<\/div>\n<p>initContainer() \u95a2\u6570\u306f\u3001GridDB\u30b3\u30f3\u30c6\u30ca\u3092\u97f3\u58f0\u307e\u305f\u306f\u97f3\u58f0\u30c7\u30fc\u30bf\u3067\u521d\u671f\u5316\u3057\u307e\u3059\u3002\u3053\u306e\u95a2\u6570\u306f\u3001libs\/griddb.cjs\u30d5\u30a1\u30a4\u30eb\u3067\u78ba\u8a8d\u3067\u304d\u307e\u3059\u3002<\/p>\n<div class=\"clipboard\">\n<pre><code class=\"language-js\">function initContainer() {\n const conInfo = new griddb.ContainerInfo({\n  name: containerName,\n  columnInfoList: [\n   ['id', griddb.Type.INTEGER],\n   ['filename', griddb.Type.STRING],\n   ['speechText', griddb.Type.STRING],\n   ['category', griddb.Type.STRING]\n  ],\n  type: griddb.ContainerType.COLLECTION,\n  rowKey: true,\n });\n\n return conInfo;\n}<\/code><\/pre>\n<\/div>\n<h2>\u3055\u3089\u306a\u308b\u6a5f\u80fd\u5f37\u5316<\/h2>\n<p>\u3053\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306f\u73fe\u5728\u30d7\u30ed\u30c8\u30bf\u30a4\u30d7\u3067\u3042\u308a\u3001\u6a5f\u80fd\u6027\u3068\u30e6\u30fc\u30b6\u30fc\u4f53\u9a13\u3092\u5411\u4e0a\u3055\u305b\u308b\u305f\u3081\u306e\u5f37\u5316\u306e\u4f59\u5730\u304c\u3044\u304f\u3064\u304b\u3042\u308a\u307e\u3059\u3002\u4ee5\u4e0b\u306b\u3001\u691c\u8a0e\u53ef\u80fd\u306a\u5f37\u5316\u7b56\u3092\u3044\u304f\u3064\u304b\u3054\u7d39\u4ecb\u3057\u307e\u3059\u3002<\/p>\n<ul>\n<li><strong>\u30c7\u30d0\u30a4\u30b9\u306e\u9078\u629e\u6a5f\u80fd<\/strong>:\n<ul>\n<li><strong>\u8907\u6570\u306e\u30c7\u30d0\u30a4\u30b9\u3092\u30b5\u30dd\u30fc\u30c8<\/strong>:\u5229\u7528\u53ef\u80fd\u306a\u30de\u30a4\u30af\u3084\u5165\u529b\u30c7\u30d0\u30a4\u30b9\u304b\u3089\u30e6\u30fc\u30b6\u30fc\u304c\u9078\u629e\u3067\u304d\u308b\u6a5f\u80fd\u3092\u5b9f\u88c5\u3057\u307e\u3059\u3002\u3053\u308c\u306b\u3088\u308a\u3001\u30e6\u30fc\u30b6\u30fc\u306f\u597d\u307f\u306e\u30aa\u30fc\u30c7\u30a3\u30aa\u30bd\u30fc\u30b9\u3092\u9078\u629e\u3067\u304d\u308b\u3088\u3046\u306b\u306a\u308a\u307e\u3059\u3002\u7279\u306b\u3001\u8907\u6570\u306e\u30aa\u30fc\u30c7\u30a3\u30aa\u5165\u529b\u30aa\u30d7\u30b7\u30e7\u30f3\u304c\u3042\u308b\u74b0\u5883\u3067\u306f\u4fbf\u5229\u3067\u3059\u3002<\/li>\n<\/ul>\n<\/li>\n<li><strong>\u30aa\u30fc\u30c7\u30a3\u30aa\u74b0\u5883\u306e\u6700\u9069\u5316<\/strong>:\n<ul>\n<li><strong>\u30ce\u30a4\u30ba\u6291\u5236<\/strong>:\u9332\u97f3\u4e2d\u306b\u30d0\u30c3\u30af\u30b0\u30e9\u30a6\u30f3\u30c9\u30ce\u30a4\u30ba\u3092\u52d5\u7684\u306b\u4f4e\u6e1b\u307e\u305f\u306f\u9664\u53bb\u3067\u304d\u308b\u9ad8\u5ea6\u306a\u30ce\u30a4\u30ba\u6291\u5236\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u3092\u7d71\u5408\u3057\u307e\u3059\u3002\u3053\u306e\u6a5f\u80fd\u5f37\u5316\u306b\u3088\u308a\u3001\u7279\u306b\u30ce\u30a4\u30ba\u306e\u591a\u3044\u7406\u60f3\u7684\u306a\u74b0\u5883\u3067\u306f\u306a\u3044\u5834\u5408\u306b\u304a\u3044\u3066\u3001\u30aa\u30fc\u30c7\u30a3\u30aa\u306e\u660e\u77ad\u5ea6\u3068\u54c1\u8cea\u304c\u5927\u5e45\u306b\u6539\u5584\u3055\u308c\u307e\u3059\u3002<\/li>\n<\/ul>\n<\/li>\n<li><strong>\u30e6\u30fc\u30b6\u30fc\u30a4\u30f3\u30bf\u30fc\u30d5\u30a7\u30fc\u30b9\u306e\u6539\u5584<\/strong>:\n<ul>\n<li><strong>\u30c7\u30d0\u30a4\u30b9\u9078\u629eUI<\/strong>:\u5229\u7528\u53ef\u80fd\u306a\u3059\u3079\u3066\u306e\u30de\u30a4\u30af\u3092\u4e00\u89a7\u8868\u793a\u3057\u3001\u30e6\u30fc\u30b6\u30fc\u304c\u597d\u307f\u306e\u5165\u529b\u30c7\u30d0\u30a4\u30b9\u3092\u7c21\u5358\u306b\u9078\u629e\u3067\u304d\u308b\u3001\u30e6\u30fc\u30b6\u30fc\u30d5\u30ec\u30f3\u30c9\u30ea\u30fc\u306a\u30a4\u30f3\u30bf\u30fc\u30d5\u30a7\u30fc\u30b9\u3092\u958b\u767a\u3059\u308b\u3002\u3053\u306e\u30a4\u30f3\u30bf\u30fc\u30d5\u30a7\u30fc\u30b9\u306b\u306f\u3001\u30c7\u30d0\u30a4\u30b9\u306e\u4ed5\u69d8\u3001\u73fe\u5728\u306e\u30b9\u30c6\u30fc\u30bf\u30b9\u3001\u30aa\u30fc\u30c7\u30a3\u30aa\u54c1\u8cea\u3092\u30c1\u30a7\u30c3\u30af\u3059\u308b\u30c6\u30b9\u30c8\u6a5f\u80fd\u3092\u542b\u3081\u308b\u3053\u3068\u304c\u3067\u304d\u308b\u3002<\/li>\n<li><strong>\u30b5\u30a6\u30f3\u30c9\u30ec\u30d9\u30eb\u306e\u8996\u899a\u30d5\u30a3\u30fc\u30c9\u30d0\u30c3\u30af<\/strong>:\u30b5\u30a6\u30f3\u30c9\u30ec\u30d9\u30eb\u30e1\u30fc\u30bf\u30fc\u3084\u6ce2\u5f62\u8868\u793a\u306a\u3069\u306e\u8996\u899a\u30d5\u30a3\u30fc\u30c9\u30d0\u30c3\u30af\u30e1\u30ab\u30cb\u30ba\u30e0\u3092\u8ffd\u52a0\u3057\u3001\u30e6\u30fc\u30b6\u30fc\u304c\u30aa\u30fc\u30c7\u30a3\u30aa\u5165\u529b\u30ec\u30d9\u30eb\u3092\u30ea\u30a2\u30eb\u30bf\u30a4\u30e0\u3067\u7406\u89e3\u3067\u304d\u308b\u3088\u3046\u306b\u3057\u307e\u3059\u3002\u3053\u306e\u6a5f\u80fd\u306b\u3088\u308a\u3001\u30e6\u30fc\u30b6\u30fc\u306f\u9332\u97f3\u3092\u958b\u59cb\u3059\u308b\u524d\u306b\u30de\u30a4\u30af\u306e\u914d\u7f6e\u3084\u8a2d\u5b9a\u3092\u8abf\u6574\u3057\u3084\u3059\u304f\u306a\u308a\u307e\u3059\u3002 \u3053\u308c\u3089\u306e\u6a5f\u80fd\u5f37\u5316\u306f\u3001\u3088\u308a\u5e45\u5e83\u3044\u9332\u97f3\u72b6\u6cc1\u3084\u30e6\u30fc\u30b6\u30fc\u306e\u597d\u307f\u306b\u5fdc\u3048\u308b\u3053\u3068\u3092\u76ee\u7684\u3068\u3057\u3066\u304a\u308a\u3001\u30a6\u30a7\u30d6\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u3088\u308a\u5805\u7262\u3067\u591a\u6a5f\u80fd\u3001\u304b\u3064\u30e6\u30fc\u30b6\u30fc\u30d5\u30ec\u30f3\u30c9\u30ea\u30fc\u306a\u3082\u306e\u306b\u3059\u308b\u3053\u3068\u3092\u76ee\u6307\u3057\u3066\u3044\u307e\u3059\u3002\u3053\u308c\u3089\u306e\u6a5f\u80fd\u3092\u7d71\u5408\u3059\u308b\u3053\u3068\u3067\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u5229\u4fbf\u6027\u3068\u9b45\u529b\u304c\u5927\u5e45\u306b\u5411\u4e0a\u3057\u307e\u3059\u3002<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>\u3053\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3067\u306f\u3001\u30d0\u30c3\u30af\u30a8\u30f3\u30c9\u306b Node.js \u3092\u5229\u7528\u3057\u3001\u30ce\u30f3\u30d6\u30ed\u30c3\u30ad\u30f3\u30b0\u3001\u30a4\u30d9\u30f3\u30c8\u99c6\u52d5\u578b\u306e\u30a2\u30fc\u30ad\u30c6\u30af\u30c1\u30e3\u3092\u6d3b\u7528\u3059\u308b\u3053\u3068\u3067\u3001AI Voice Note \u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u9ad8\u901f\u6027\u3068\u62e1\u5f35\u6027\u3092\u78ba\u4fdd\u3057\u3066\u3044\u307e\u3059\u3002 \u307e\u305f\u3001\u5927\u91cf [&hellip;]<\/p>\n","protected":false},"author":41,"featured_media":49711,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[1005],"tags":[],"class_list":["post-50908","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-1005"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.1.1 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>AI\u30dc\u30a4\u30b9\u30ce\u30fc\u30c8\u3092\u4f5c\u6210\u3059\u308b | GridDB: Open Source Time Series Database for IoT<\/title>\n<meta name=\"description\" content=\"\u3053\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3067\u306f\u3001\u30d0\u30c3\u30af\u30a8\u30f3\u30c9\u306b Node.js \u3092\u5229\u7528\u3057\u3001\u30ce\u30f3\u30d6\u30ed\u30c3\u30ad\u30f3\u30b0\u3001\u30a4\u30d9\u30f3\u30c8\u99c6\u52d5\u578b\u306e\u30a2\u30fc\u30ad\u30c6\u30af\u30c1\u30e3\u3092\u6d3b\u7528\u3059\u308b\u3053\u3068\u3067\u3001AI Voice Note\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/griddb.net\/ja\/\u672a\u5206\u985e\/building-ai-voice-note\/\" \/>\n<meta property=\"og:locale\" content=\"ja_JP\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"AI\u30dc\u30a4\u30b9\u30ce\u30fc\u30c8\u3092\u4f5c\u6210\u3059\u308b | GridDB: Open Source Time Series Database for IoT\" \/>\n<meta property=\"og:description\" content=\"\u3053\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3067\u306f\u3001\u30d0\u30c3\u30af\u30a8\u30f3\u30c9\u306b Node.js \u3092\u5229\u7528\u3057\u3001\u30ce\u30f3\u30d6\u30ed\u30c3\u30ad\u30f3\u30b0\u3001\u30a4\u30d9\u30f3\u30c8\u99c6\u52d5\u578b\u306e\u30a2\u30fc\u30ad\u30c6\u30af\u30c1\u30e3\u3092\u6d3b\u7528\u3059\u308b\u3053\u3068\u3067\u3001AI Voice Note\" \/>\n<meta property=\"og:url\" content=\"https:\/\/griddb.net\/ja\/\u672a\u5206\u985e\/building-ai-voice-note\/\" \/>\n<meta property=\"og:site_name\" content=\"GridDB: Open Source Time Series Database for IoT\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/griddbcommunity\/\" \/>\n<meta property=\"article:published_time\" content=\"2024-07-10T07:00:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-03-30T19:53:09+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.griddb.net\/wp-content\/uploads\/2024\/07\/chrome_fgF56Gfca6.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1826\" \/>\n\t<meta property=\"og:image:height\" content=\"1047\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"griddb-admin\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@GridDBCommunity\" \/>\n<meta name=\"twitter:site\" content=\"@GridDBCommunity\" \/>\n<meta name=\"twitter:label1\" content=\"\u57f7\u7b46\u8005\" \/>\n\t<meta name=\"twitter:data1\" content=\"griddb-admin\" \/>\n\t<meta name=\"twitter:label2\" content=\"\u63a8\u5b9a\u8aad\u307f\u53d6\u308a\u6642\u9593\" \/>\n\t<meta name=\"twitter:data2\" content=\"3\u5206\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/griddb.net\/ja\/%e6%9c%aa%e5%88%86%e9%a1%9e\/building-ai-voice-note\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/griddb.net\/ja\/%e6%9c%aa%e5%88%86%e9%a1%9e\/building-ai-voice-note\/\"},\"author\":{\"name\":\"griddb-admin\",\"@id\":\"https:\/\/www.griddb.net\/en\/#\/schema\/person\/4fe914ca9576878e82f5e8dd3ba52233\"},\"headline\":\"AI\u30dc\u30a4\u30b9\u30ce\u30fc\u30c8\u3092\u4f5c\u6210\u3059\u308b\",\"datePublished\":\"2024-07-10T07:00:00+00:00\",\"dateModified\":\"2026-03-30T19:53:09+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/griddb.net\/ja\/%e6%9c%aa%e5%88%86%e9%a1%9e\/building-ai-voice-note\/\"},\"wordCount\":144,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.griddb.net\/en\/#organization\"},\"image\":{\"@id\":\"https:\/\/griddb.net\/ja\/%e6%9c%aa%e5%88%86%e9%a1%9e\/building-ai-voice-note\/#primaryimage\"},\"thumbnailUrl\":\"\/wp-content\/uploads\/2024\/07\/chrome_fgF56Gfca6.jpg\",\"inLanguage\":\"ja\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/griddb.net\/ja\/%e6%9c%aa%e5%88%86%e9%a1%9e\/building-ai-voice-note\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/griddb.net\/ja\/%e6%9c%aa%e5%88%86%e9%a1%9e\/building-ai-voice-note\/\",\"url\":\"https:\/\/griddb.net\/ja\/%e6%9c%aa%e5%88%86%e9%a1%9e\/building-ai-voice-note\/\",\"name\":\"AI\u30dc\u30a4\u30b9\u30ce\u30fc\u30c8\u3092\u4f5c\u6210\u3059\u308b | GridDB: Open Source Time Series Database for IoT\",\"isPartOf\":{\"@id\":\"https:\/\/www.griddb.net\/en\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/griddb.net\/ja\/%e6%9c%aa%e5%88%86%e9%a1%9e\/building-ai-voice-note\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/griddb.net\/ja\/%e6%9c%aa%e5%88%86%e9%a1%9e\/building-ai-voice-note\/#primaryimage\"},\"thumbnailUrl\":\"\/wp-content\/uploads\/2024\/07\/chrome_fgF56Gfca6.jpg\",\"datePublished\":\"2024-07-10T07:00:00+00:00\",\"dateModified\":\"2026-03-30T19:53:09+00:00\",\"description\":\"\u3053\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3067\u306f\u3001\u30d0\u30c3\u30af\u30a8\u30f3\u30c9\u306b Node.js \u3092\u5229\u7528\u3057\u3001\u30ce\u30f3\u30d6\u30ed\u30c3\u30ad\u30f3\u30b0\u3001\u30a4\u30d9\u30f3\u30c8\u99c6\u52d5\u578b\u306e\u30a2\u30fc\u30ad\u30c6\u30af\u30c1\u30e3\u3092\u6d3b\u7528\u3059\u308b\u3053\u3068\u3067\u3001AI Voice Note\",\"inLanguage\":\"ja\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/griddb.net\/ja\/%e6%9c%aa%e5%88%86%e9%a1%9e\/building-ai-voice-note\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"ja\",\"@id\":\"https:\/\/griddb.net\/ja\/%e6%9c%aa%e5%88%86%e9%a1%9e\/building-ai-voice-note\/#primaryimage\",\"url\":\"\/wp-content\/uploads\/2024\/07\/chrome_fgF56Gfca6.jpg\",\"contentUrl\":\"\/wp-content\/uploads\/2024\/07\/chrome_fgF56Gfca6.jpg\",\"width\":1826,\"height\":1047},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.griddb.net\/en\/#website\",\"url\":\"https:\/\/www.griddb.net\/en\/\",\"name\":\"GridDB: Open Source Time Series Database for IoT\",\"description\":\"GridDB is an open source time-series database with the performance of NoSQL and convenience of SQL\",\"publisher\":{\"@id\":\"https:\/\/www.griddb.net\/en\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.griddb.net\/en\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"ja\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.griddb.net\/en\/#organization\",\"name\":\"Fixstars\",\"url\":\"https:\/\/www.griddb.net\/en\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"ja\",\"@id\":\"https:\/\/www.griddb.net\/en\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/griddb.net\/wp-content\/uploads\/2019\/04\/fixstars_logo_web_tagline.png\",\"contentUrl\":\"https:\/\/griddb.net\/wp-content\/uploads\/2019\/04\/fixstars_logo_web_tagline.png\",\"width\":200,\"height\":83,\"caption\":\"Fixstars\"},\"image\":{\"@id\":\"https:\/\/www.griddb.net\/en\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/griddbcommunity\/\",\"https:\/\/x.com\/GridDBCommunity\",\"https:\/\/www.linkedin.com\/company\/griddb-by-toshiba\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.griddb.net\/en\/#\/schema\/person\/4fe914ca9576878e82f5e8dd3ba52233\",\"name\":\"griddb-admin\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"ja\",\"@id\":\"https:\/\/www.griddb.net\/en\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/5bceca1cafc06886a7ba873e2f0a28011a1176c4dea59709f735b63ae30d0342?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/5bceca1cafc06886a7ba873e2f0a28011a1176c4dea59709f735b63ae30d0342?s=96&d=mm&r=g\",\"caption\":\"griddb-admin\"},\"url\":\"https:\/\/www.griddb.net\/ja\/author\/griddb-admin\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"AI\u30dc\u30a4\u30b9\u30ce\u30fc\u30c8\u3092\u4f5c\u6210\u3059\u308b | GridDB: Open Source Time Series Database for IoT","description":"\u3053\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3067\u306f\u3001\u30d0\u30c3\u30af\u30a8\u30f3\u30c9\u306b Node.js \u3092\u5229\u7528\u3057\u3001\u30ce\u30f3\u30d6\u30ed\u30c3\u30ad\u30f3\u30b0\u3001\u30a4\u30d9\u30f3\u30c8\u99c6\u52d5\u578b\u306e\u30a2\u30fc\u30ad\u30c6\u30af\u30c1\u30e3\u3092\u6d3b\u7528\u3059\u308b\u3053\u3068\u3067\u3001AI Voice Note","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/griddb.net\/ja\/\u672a\u5206\u985e\/building-ai-voice-note\/","og_locale":"ja_JP","og_type":"article","og_title":"AI\u30dc\u30a4\u30b9\u30ce\u30fc\u30c8\u3092\u4f5c\u6210\u3059\u308b | GridDB: Open Source Time Series Database for IoT","og_description":"\u3053\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3067\u306f\u3001\u30d0\u30c3\u30af\u30a8\u30f3\u30c9\u306b Node.js \u3092\u5229\u7528\u3057\u3001\u30ce\u30f3\u30d6\u30ed\u30c3\u30ad\u30f3\u30b0\u3001\u30a4\u30d9\u30f3\u30c8\u99c6\u52d5\u578b\u306e\u30a2\u30fc\u30ad\u30c6\u30af\u30c1\u30e3\u3092\u6d3b\u7528\u3059\u308b\u3053\u3068\u3067\u3001AI Voice Note","og_url":"https:\/\/griddb.net\/ja\/\u672a\u5206\u985e\/building-ai-voice-note\/","og_site_name":"GridDB: Open Source Time Series Database for IoT","article_publisher":"https:\/\/www.facebook.com\/griddbcommunity\/","article_published_time":"2024-07-10T07:00:00+00:00","article_modified_time":"2026-03-30T19:53:09+00:00","og_image":[{"width":1826,"height":1047,"url":"https:\/\/www.griddb.net\/wp-content\/uploads\/2024\/07\/chrome_fgF56Gfca6.jpg","type":"image\/jpeg"}],"author":"griddb-admin","twitter_card":"summary_large_image","twitter_creator":"@GridDBCommunity","twitter_site":"@GridDBCommunity","twitter_misc":{"\u57f7\u7b46\u8005":"griddb-admin","\u63a8\u5b9a\u8aad\u307f\u53d6\u308a\u6642\u9593":"3\u5206"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/griddb.net\/ja\/%e6%9c%aa%e5%88%86%e9%a1%9e\/building-ai-voice-note\/#article","isPartOf":{"@id":"https:\/\/griddb.net\/ja\/%e6%9c%aa%e5%88%86%e9%a1%9e\/building-ai-voice-note\/"},"author":{"name":"griddb-admin","@id":"https:\/\/www.griddb.net\/en\/#\/schema\/person\/4fe914ca9576878e82f5e8dd3ba52233"},"headline":"AI\u30dc\u30a4\u30b9\u30ce\u30fc\u30c8\u3092\u4f5c\u6210\u3059\u308b","datePublished":"2024-07-10T07:00:00+00:00","dateModified":"2026-03-30T19:53:09+00:00","mainEntityOfPage":{"@id":"https:\/\/griddb.net\/ja\/%e6%9c%aa%e5%88%86%e9%a1%9e\/building-ai-voice-note\/"},"wordCount":144,"commentCount":0,"publisher":{"@id":"https:\/\/www.griddb.net\/en\/#organization"},"image":{"@id":"https:\/\/griddb.net\/ja\/%e6%9c%aa%e5%88%86%e9%a1%9e\/building-ai-voice-note\/#primaryimage"},"thumbnailUrl":"\/wp-content\/uploads\/2024\/07\/chrome_fgF56Gfca6.jpg","inLanguage":"ja","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/griddb.net\/ja\/%e6%9c%aa%e5%88%86%e9%a1%9e\/building-ai-voice-note\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/griddb.net\/ja\/%e6%9c%aa%e5%88%86%e9%a1%9e\/building-ai-voice-note\/","url":"https:\/\/griddb.net\/ja\/%e6%9c%aa%e5%88%86%e9%a1%9e\/building-ai-voice-note\/","name":"AI\u30dc\u30a4\u30b9\u30ce\u30fc\u30c8\u3092\u4f5c\u6210\u3059\u308b | GridDB: Open Source Time Series Database for IoT","isPartOf":{"@id":"https:\/\/www.griddb.net\/en\/#website"},"primaryImageOfPage":{"@id":"https:\/\/griddb.net\/ja\/%e6%9c%aa%e5%88%86%e9%a1%9e\/building-ai-voice-note\/#primaryimage"},"image":{"@id":"https:\/\/griddb.net\/ja\/%e6%9c%aa%e5%88%86%e9%a1%9e\/building-ai-voice-note\/#primaryimage"},"thumbnailUrl":"\/wp-content\/uploads\/2024\/07\/chrome_fgF56Gfca6.jpg","datePublished":"2024-07-10T07:00:00+00:00","dateModified":"2026-03-30T19:53:09+00:00","description":"\u3053\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3067\u306f\u3001\u30d0\u30c3\u30af\u30a8\u30f3\u30c9\u306b Node.js \u3092\u5229\u7528\u3057\u3001\u30ce\u30f3\u30d6\u30ed\u30c3\u30ad\u30f3\u30b0\u3001\u30a4\u30d9\u30f3\u30c8\u99c6\u52d5\u578b\u306e\u30a2\u30fc\u30ad\u30c6\u30af\u30c1\u30e3\u3092\u6d3b\u7528\u3059\u308b\u3053\u3068\u3067\u3001AI Voice Note","inLanguage":"ja","potentialAction":[{"@type":"ReadAction","target":["https:\/\/griddb.net\/ja\/%e6%9c%aa%e5%88%86%e9%a1%9e\/building-ai-voice-note\/"]}]},{"@type":"ImageObject","inLanguage":"ja","@id":"https:\/\/griddb.net\/ja\/%e6%9c%aa%e5%88%86%e9%a1%9e\/building-ai-voice-note\/#primaryimage","url":"\/wp-content\/uploads\/2024\/07\/chrome_fgF56Gfca6.jpg","contentUrl":"\/wp-content\/uploads\/2024\/07\/chrome_fgF56Gfca6.jpg","width":1826,"height":1047},{"@type":"WebSite","@id":"https:\/\/www.griddb.net\/en\/#website","url":"https:\/\/www.griddb.net\/en\/","name":"GridDB: Open Source Time Series Database for IoT","description":"GridDB is an open source time-series database with the performance of NoSQL and convenience of SQL","publisher":{"@id":"https:\/\/www.griddb.net\/en\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.griddb.net\/en\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"ja"},{"@type":"Organization","@id":"https:\/\/www.griddb.net\/en\/#organization","name":"Fixstars","url":"https:\/\/www.griddb.net\/en\/","logo":{"@type":"ImageObject","inLanguage":"ja","@id":"https:\/\/www.griddb.net\/en\/#\/schema\/logo\/image\/","url":"https:\/\/griddb.net\/wp-content\/uploads\/2019\/04\/fixstars_logo_web_tagline.png","contentUrl":"https:\/\/griddb.net\/wp-content\/uploads\/2019\/04\/fixstars_logo_web_tagline.png","width":200,"height":83,"caption":"Fixstars"},"image":{"@id":"https:\/\/www.griddb.net\/en\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/griddbcommunity\/","https:\/\/x.com\/GridDBCommunity","https:\/\/www.linkedin.com\/company\/griddb-by-toshiba"]},{"@type":"Person","@id":"https:\/\/www.griddb.net\/en\/#\/schema\/person\/4fe914ca9576878e82f5e8dd3ba52233","name":"griddb-admin","image":{"@type":"ImageObject","inLanguage":"ja","@id":"https:\/\/www.griddb.net\/en\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/5bceca1cafc06886a7ba873e2f0a28011a1176c4dea59709f735b63ae30d0342?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/5bceca1cafc06886a7ba873e2f0a28011a1176c4dea59709f735b63ae30d0342?s=96&d=mm&r=g","caption":"griddb-admin"},"url":"https:\/\/www.griddb.net\/ja\/author\/griddb-admin\/"}]}},"_links":{"self":[{"href":"https:\/\/www.griddb.net\/ja\/wp-json\/wp\/v2\/posts\/50908","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.griddb.net\/ja\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.griddb.net\/ja\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.griddb.net\/ja\/wp-json\/wp\/v2\/users\/41"}],"replies":[{"embeddable":true,"href":"https:\/\/www.griddb.net\/ja\/wp-json\/wp\/v2\/comments?post=50908"}],"version-history":[{"count":2,"href":"https:\/\/www.griddb.net\/ja\/wp-json\/wp\/v2\/posts\/50908\/revisions"}],"predecessor-version":[{"id":55130,"href":"https:\/\/www.griddb.net\/ja\/wp-json\/wp\/v2\/posts\/50908\/revisions\/55130"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.griddb.net\/ja\/wp-json\/wp\/v2\/media\/49711"}],"wp:attachment":[{"href":"https:\/\/www.griddb.net\/ja\/wp-json\/wp\/v2\/media?parent=50908"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.griddb.net\/ja\/wp-json\/wp\/v2\/categories?post=50908"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.griddb.net\/ja\/wp-json\/wp\/v2\/tags?post=50908"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}